陳 明,覃 坤
(1.核動力運行研究所,武漢 430223;2.中核武漢核電運行技術(shù)股份有限公司,武漢 430223)
核電廠全范圍模擬機是一個數(shù)字化的核電廠實時仿真系統(tǒng),通過對核電廠設(shè)備、系統(tǒng)的模擬,實現(xiàn)了核電廠的虛擬運行,其主要以二維曲線式的信息及參數(shù)化的內(nèi)容為展示主體,不能完全滿足非專業(yè)技術(shù)人員對核電運行原理的培訓(xùn)需求。同時非專業(yè)人員參觀模擬機時,每次均需要專業(yè)人員進(jìn)行大量講解,且效果不佳,為了解決以上問題,增強核電廠模擬機培訓(xùn)的立體感及真實感,開發(fā)了基于Unity3D的模擬機二維及三維可視化展示系統(tǒng)。
Unity3D是一個用于開發(fā)三維展示、模擬場景等類型互動內(nèi)容的專業(yè)游戲級開發(fā)引擎。其開發(fā)技術(shù)體系主要包含3D展示技術(shù)、UI技術(shù)、特效技術(shù)、數(shù)據(jù)庫技術(shù)、互動交互技術(shù)等。其圖像渲染引擎采用OpenGL、API和Direct3D,能支持Max、Maya、Pro/e等多種常用建模軟件輸出的模型文件。另外,具有強大易用的著色系統(tǒng)、物理特效、粒子特效、三維效果、項目發(fā)布和光影渲染等功能支撐,使得Unity具有簡單易學(xué)、靈活便捷、高效快速等特性。
圖1 系統(tǒng)實施流程Fig.1 System implementation process
Unity支持3種腳本語言:C#、Java和Boo,用戶可以通過編寫腳本附加到特定對象上以實現(xiàn)各種功能。Unity內(nèi)置一個強大的光影貼圖烘焙工具及相關(guān)的物理引擎,通過Unity3D平臺可以逼真地展示核電廠房及廠房內(nèi)設(shè)施的結(jié)構(gòu)形狀和運行特點。
本系統(tǒng)后端與模擬機相連,能夠讀取模擬機的實時數(shù)據(jù),并通過前端二維/三維可視化場景進(jìn)行動態(tài)展示。系統(tǒng)前端采用二維及三維建模技術(shù)構(gòu)建核電廠的主要系統(tǒng)設(shè)備和管網(wǎng),通過場景交互技術(shù)實現(xiàn)展示圖形化的系統(tǒng)設(shè)備,采用動態(tài)特效技術(shù)展示管網(wǎng)的水流、霧化等效果;通過該系統(tǒng),能夠直觀形象地觀察和了解核電廠機組和設(shè)備狀態(tài)。
本系統(tǒng)采用專業(yè)三維軟件Pro/e進(jìn)行初步建模,在建立好的模型基礎(chǔ)上采用MAYA軟件進(jìn)行優(yōu)化處理調(diào)整模型的布線、頂點拓?fù)浣Y(jié)構(gòu)。主要部件使用三維模型表現(xiàn),次要部件及二維效果使用貼圖表現(xiàn)。在模型處理階段,將所有物體進(jìn)行模塊化處理和優(yōu)化,在不影響數(shù)據(jù)精度的前提下,大幅減少模型頂點數(shù),模型數(shù)據(jù)規(guī)范,清除游離點、法線翻轉(zhuǎn)的面、錯誤的光滑組、未清除的歷史等,對模型命名進(jìn)行規(guī)范統(tǒng)一。最終保證模型可以在引擎中流暢運行和編輯,并且能夠高度還原實際場景。模型處理流程如圖2所示。
使用UVLayout軟件和Maya自帶工具合理分配UV(貼圖坐標(biāo)),在這個階段合理制作共享貼圖,按照次時代游戲制作的標(biāo)準(zhǔn),避免UV空間的浪費,保證使用率在70%以上。
圖2 模型處理流程Fig.2 Model processing flow
圖3 材質(zhì)實例化示意圖Fig.3 Material instantiation diagram
該環(huán)節(jié)需要制作兩套UV,用作烘焙燈光貼圖的UV空間,使用Quixel Suite、Substance Painter、Photoshop等專業(yè)軟件結(jié)合制作貼圖,整個制作流程完全按照PBR(基于物理的渲染)要求制作,PBR流程采用Metallic-Roughness(金屬度——粗糙度)流程,一套貼圖包括Albedo(固有色),Metallic(金屬度),Roughness(粗糙度),Normal(法線貼圖),Ambient Occlusion(環(huán)境閉塞貼圖)等相關(guān)要求進(jìn)行制作。
貼圖制作的素材按照統(tǒng)一路徑和命名導(dǎo)入引擎,在引擎中制作材質(zhì)球并賦予物體。制作材質(zhì)將使用Material Instance(材質(zhì)實例化)對材質(zhì)的最終渲染進(jìn)行優(yōu)化和美化。
場景中的所有金屬貼圖都經(jīng)過精確設(shè)計,只使用同一個材質(zhì)球,將各種貼圖以及屬性進(jìn)行參數(shù)化,這樣所有的金屬材質(zhì)都使用同一個材質(zhì)球的不同實例(Instance)。因此,渲染效率會得到大幅地提高。
如圖3所示,最左側(cè)的為普通材質(zhì)球(作為其他材質(zhì)的“父”材質(zhì)),中間和右邊的為材質(zhì)實例,可以看出,經(jīng)過精心設(shè)計,同一個材質(zhì)通過更換貼圖和參數(shù),可以達(dá)到效果完全不同的材質(zhì)實例效果。該圖中3個物體的渲染實質(zhì)使用的是同一個材質(zhì),比起使用3個材質(zhì),性能上得到了提升。通過將該技術(shù)的合理運用,在大量模型和材質(zhì)的場景中,會大幅提高運行效率,美化場景效果,采用細(xì)節(jié)貼圖,能夠以較少的資源達(dá)到較高的精度和畫面品質(zhì)。
圖4 接口系統(tǒng)組成圖Fig.4 Interface system composition diagram
圖5 系統(tǒng)二維展示界面Fig.5 System two-dimensional display interface
數(shù)據(jù)接口系統(tǒng)是連接可視化系統(tǒng)和模擬機系統(tǒng)的中轉(zhuǎn)系統(tǒng),由如下兩個模塊組成,兩個模塊通過共享內(nèi)存區(qū)實現(xiàn)數(shù)據(jù)共享。
CNPO3DServer模塊:從模擬機獲取數(shù)據(jù)。
本模塊依照模擬機的程序框架編寫并被模擬機調(diào)度,本模塊和模擬機其它系統(tǒng)的加載、卸載方式一致。調(diào)度頻率可根據(jù)實際使用需求進(jìn)行修改,在模擬機運行、凍結(jié)狀態(tài)都被調(diào)度。
TCPCOM模塊:從模擬機獲取的數(shù)據(jù)通過網(wǎng)絡(luò)協(xié)議發(fā)送到3D顯示系統(tǒng)。
本模塊在CNPO3DServer被加載時,開始獨立運行,當(dāng)CNPO3DServer被卸載時終止運行。
三維引擎中需要展示的主要包括二維展示、三維展示及特效展示。
圖6 閥門二維動態(tài)展示符號(左為電動閥,右為手動閥)Fig.6 Two-Dimensional dynamic display of the valve (Electric valve on the left, manual valve on the right)
圖7 主要廠房及內(nèi)部主要系統(tǒng)布局Fig.7 Main plant and internal main system layout
可視化系統(tǒng)中的所有的二維展示及特效,如包括管道內(nèi)部介質(zhì)流速、溫度、方向及閥門開度等,都與模擬機數(shù)據(jù)進(jìn)行實時對接,并與模擬機數(shù)據(jù)呈相關(guān)性表現(xiàn)。
可視化系統(tǒng)對二維管道內(nèi)的流體進(jìn)行了分類,區(qū)分了不同的流體類型,如液態(tài)水、汽態(tài)水、空氣等,同時采用不同形狀的圖標(biāo)進(jìn)行差異化展示。
可視化系統(tǒng)對不同的閥門進(jìn)行了分類,如電動閥、氣動閥、單向閥、手動閥,同時采用不同形狀的圖標(biāo)進(jìn)行差異化展示,使得用戶能夠一目了然區(qū)分不同類型的閥門。
三維展示內(nèi)容主要包括廠房結(jié)構(gòu)展示及主要設(shè)備結(jié)構(gòu)展示。系統(tǒng)的動態(tài)特效也附著在三維模型上,并與模擬機數(shù)據(jù)進(jìn)行實時對接,包括特效的開啟、關(guān)閉、增大、減小等。主要特效包括安全殼溫度場、壓力場;中子注量率;壓力容器水位、溫度;蒸汽發(fā)生器水位、溫度;主泵轉(zhuǎn)速;一回路破口大??;噴淋系統(tǒng)開啟及大小等。
粒子特效展示系統(tǒng)是一種用于模擬不規(guī)則物體或自然場景的方法,這些不規(guī)則物體的特點是具有一定規(guī)律,但又呈動態(tài)性和隨機性。粒子系統(tǒng)中的每個粒子都具有形狀、大小、顏色、透明度、運動速度、運動方向、生命周期等多種屬性,而且這些粒子隨時間的推移不斷變化,在時間和空間上具有動態(tài)分布特性,從而能夠真實地模擬出具有復(fù)雜運動規(guī)律的動態(tài)特效[1]。
圖8 一回路主設(shè)備及破口特效展示Fig.8 Primary circuit main equipment and break special effects display
圖9 粒子特效處理過程Fig.9 Particle effect process
圖10 核島廠房內(nèi)部溫度場粒子特效Fig.10 Nuclear island plant internal temperature field particle effects
粒子系統(tǒng)是用來模擬不規(guī)則現(xiàn)象和動畫生成的高效技術(shù),目前已經(jīng)被廣泛的應(yīng)用于各大游戲引擎及三維軟件之中,相比于其他的算法如林頓梅伊爾系統(tǒng)、分形構(gòu)圖系統(tǒng)等,粒子系統(tǒng)的適當(dāng)使用能夠很好地兼顧顯示質(zhì)量和運算效率,是目前為止用來模擬不規(guī)則模糊現(xiàn)象和物體的較為成功的圖形生成算法。粒子系統(tǒng)在總體上會有一定確定屬性的表現(xiàn)規(guī)律,但是對于單獨的個體卻會有一定隨機屬性表現(xiàn)出不同的特點。
Unity3D 中的粒子系統(tǒng)由Ellipsoid Particle Emitter(橢圓粒子發(fā)射器)、Particle Animator(粒子動畫器)、Particle Renderer(粒子渲染器)3個部分所組成。橢圓粒子發(fā)射器是用來生成粒子的組件,該模塊定義了粒子有規(guī)律或者無規(guī)律的大小、速度、顏色、持續(xù)時間、初始角度等屬性來模擬所需要產(chǎn)生的粒子效果,橢圓粒子發(fā)射器的所在的坐標(biāo)便是粒子初始化的坐標(biāo)。粒子動畫器是將粒子發(fā)射器產(chǎn)生的粒子進(jìn)行二次定義,一般是粒子屬性隨時間或距離改變的變化規(guī)律,如增加粒子的發(fā)射速度,改變粒子的旋轉(zhuǎn)角度,改變粒子的顏色,改變粒子的形狀等。粒子渲染器的主要工作是將粒子效果渲染到可視化系統(tǒng)中,將粒子產(chǎn)生的效果直接顯示在輸出設(shè)備上,讓用戶直觀地看到效果,并且這個組件還可以決定粒子的材質(zhì)、光影等[2]。
本系統(tǒng)中的三維特效,如安全殼溫度場、壓力場;中子注量率;壓力容器水位、溫度;蒸汽發(fā)生器水位、溫度、破口;主泵轉(zhuǎn)速;一回路破口大小;噴淋系統(tǒng)開啟及大小等都采用了動態(tài)粒子擴(kuò)散手段進(jìn)行展示,能夠高效快捷形象生動地展示這些復(fù)雜的三維現(xiàn)象,并降低系統(tǒng)運行壓力,保證系統(tǒng)流暢運行;同時動態(tài)粒子擴(kuò)散特效展示方法能夠方便地和模擬機參數(shù)進(jìn)行關(guān)聯(lián),并呈一致性關(guān)聯(lián),即實現(xiàn)了動態(tài)特效展示的參數(shù)化表現(xiàn)。
在本系統(tǒng)中向場景中添加一個包含粒子發(fā)射器、粒子動畫器、粒子渲染器等組件的煙霧粒子系統(tǒng)并設(shè)置每個粒子系統(tǒng)的形狀大小和持續(xù)時間以及單位時間內(nèi)可以產(chǎn)生的粒子數(shù)量、粒子的運動特點、粒子的材質(zhì)貼圖等屬性。粒子系統(tǒng)與模擬機進(jìn)行實時對接,粒子系統(tǒng)的形狀大小和時間壽命等都由模擬機的實時參數(shù)驅(qū)動,能夠?qū)崟r展示系統(tǒng)的工況特點。以溫度場為例,粒子系統(tǒng)顏色值由模擬機給出的廠房內(nèi)部的溫度值來實時驅(qū)動,不同溫度之間的過渡則做插值計算。
通過在Unity3D中設(shè)置粒子特效,配合實時模擬機數(shù)據(jù)進(jìn)行機組狀態(tài)的展示,可以更加直觀、形象地展示核電廠的運行特點和當(dāng)前模擬機的運行狀態(tài),能夠增加培訓(xùn)手段,提升培訓(xùn)效果。