葉偉杰 宮超凡 馬敏陽 王紅艷


摘要:核島,本系統(tǒng)參照大亞灣核電廠,通過 SolidWorks 進行核島的模型繪制,繪制出整個核島中的反應(yīng)堆壓力容器、蒸汽發(fā)生器、主泵、穩(wěn)壓器和管道等設(shè)備系統(tǒng)的三維立體模型。之后利用 3D Studio Max 將模型轉(zhuǎn)化為 3DS 文件格式,最后導(dǎo)入到 unity3D 中,進行程序編輯,使用此軟件來搭建用于核島 3D 裝配圖展示和核島 3D 漫游的設(shè)備可視化框架,實現(xiàn)拆卸、組裝、零件示意等功能。本系統(tǒng)總共設(shè)計了多達 20 個場景,對核島內(nèi)的每一個主要設(shè)備都進行了整體展示和對應(yīng)的左、右剖視圖展示,此外還設(shè)計了一個第一人稱核島內(nèi)漫游的場景效果。利用 unity3D,將核島模型做成一個類似于游戲一般的系統(tǒng),讓每一臺電腦都輕松使用,幫助使用者極快地熟悉核島的設(shè)備與系統(tǒng)。
關(guān)鍵詞:核島;unity3D;三維模型;裝配圖
一、研究意義
如今國內(nèi)的核電發(fā)展呈現(xiàn)直線上升的速度,這是國內(nèi)前所未有的局面。然而國內(nèi)大學(xué)對核電人才教育還處于比較傳統(tǒng)的方式,這對核電人才的培養(yǎng)產(chǎn)生了一個瓶頸,即不能直觀地熟悉核島內(nèi)的設(shè)備零件具體形狀等。本系統(tǒng)為核電專業(yè)的人員學(xué)習(xí)核島內(nèi)的設(shè)備有極大的幫助,極大地提高了核電人員對核島的熟悉程度。
(1)技術(shù)優(yōu)勢:本系統(tǒng)最大的優(yōu)勢就是將一回路各個設(shè)備的所有零件全方位展示出來,讓人直觀地對所有的零件進行剖析。
(2)安全優(yōu)勢:本系統(tǒng)解決了安全隱患同時提高了人員對一回路的熟悉程度。
(3)效率優(yōu)勢:實際上的核島內(nèi)部非常龐大,而利用此系統(tǒng),使用者不僅能在很短時間內(nèi)對所有的設(shè)備進行了解熟悉,效率比傳統(tǒng)的學(xué)習(xí)方式高很多倍。
二、核島可視化系統(tǒng)的分析與設(shè)計
2.1、大亞灣核島系統(tǒng)
大亞灣核電站核島是由一個反應(yīng)堆、三個蒸汽發(fā)生器、一個穩(wěn)壓器、三個反應(yīng)堆冷卻劑泵和一個泄壓箱等設(shè)備組合而成,各個設(shè)備在一回路系統(tǒng)中充當(dāng)著不可或缺的作用。
本系統(tǒng)使用 SolidWorks 三維繪圖軟件進行核島模型的繪制。SolidWorks 軟件是一個三維 CAD 系統(tǒng),該軟件功能強大,能繪制幾乎所有的機械模型,并且繪圖操作十分快捷,是當(dāng)下主流的三維立體繪圖軟件。
核島的一回路系統(tǒng)分為三環(huán)路,每一條環(huán)路由反應(yīng)堆本體結(jié)構(gòu)、反應(yīng)堆冷卻劑泵、蒸汽發(fā)生器和各個管道連接組合構(gòu)成。
2.2、系統(tǒng)基本介紹
本系統(tǒng)的目標(biāo)是全方位按照大亞灣核電廠進行建模設(shè)計,實現(xiàn)所有的零件、尺寸、位置等全方位跟大亞灣核電廠相同的目標(biāo)。具體功能如下所述:
(1)、方便快捷的鼠標(biāo)操作:本系統(tǒng)操作非常方便,按住鼠標(biāo)右鍵移動鼠標(biāo)即能根據(jù)移動方向和距離進行界面的旋轉(zhuǎn);按住鼠標(biāo)的滾輪中鍵移動鼠標(biāo)能根據(jù)移方向和距離進行界面的移動。此外,還能進行放大、縮小、拖動物體移動等功能。
(2)、全方位的零件展示:本系統(tǒng)不僅提供了各個部件的完整模型,還提供了左剖視圖和右剖視圖,極大地幫助了人員對設(shè)備內(nèi)部的了解熟悉。點擊拆解按鈕即能將設(shè)備拆解成各個構(gòu)件,此外點擊旋轉(zhuǎn)按鍵就能對部件進行水平和垂直旋轉(zhuǎn)。
(3)、逼真的第一人稱漫游:本系統(tǒng)提供了一個類似射擊游戲的安全殼內(nèi)漫游的功能,使用者可以體會到在核島內(nèi)走動的既視感。核島內(nèi)的所有設(shè)備都是按照大亞灣核電廠的尺寸、位置和形狀進行設(shè)計的,因此這對人員熟悉核島有很大的幫助。
(4)、全面的信息展示:當(dāng)鼠標(biāo)移動到某個構(gòu)件上時,即可自動顯示該構(gòu)件的名稱。在右側(cè)的構(gòu)件名稱欄里點擊一個構(gòu)件名稱即可將視野移動到該構(gòu)件上,另外在名稱按鈕旁邊會顯示該構(gòu)件的詳細(xì)介紹,幫助使用者了解該部件的具體信息。
三、unity3D 程序編輯
本系統(tǒng)主要使用Unity3D軟件來搭建用于核島 3D 裝配圖展示和核島 3D 漫游的設(shè)備可視化框架,實現(xiàn)拆卸、組裝、零件展示、信息展示等功能。本系統(tǒng)所有的腳本都是用 C#語言進行編輯。
本系統(tǒng)共設(shè)置了多達 20 個場景,對每個主要設(shè)備都進行了可視化展示,每個設(shè)備都進行了整體、左、右視圖的展示,詳細(xì)展示了各個設(shè)備的零部件裝配圖。主菜單如下圖所示:
例如,點擊主菜單左上角的“蒸汽發(fā)生器”按鈕之后會進入蒸汽發(fā)生器的展示場景,在此場景內(nèi)可以對蒸汽發(fā)生器進行拆解、旋轉(zhuǎn)、拖動零件、放大、縮小、對所有的部件進行描述等功能。下面將詳細(xì)講解 Unity3D 對各設(shè)備進行的腳本編輯和裝配效果。
3.1、主攝像機功能
主攝像機是整個 unity3D 中最重要的部分,主攝像機是整個界面的顯示。對主攝像機的設(shè)置即是對整個程序界面的設(shè)置,用鼠標(biāo)實現(xiàn)界面的旋轉(zhuǎn)、移動、放大縮小等功能實際上是主通過攝像機的移動和繞點旋轉(zhuǎn)來實現(xiàn)的。具體功能如下:
鼠標(biāo)滾輪放大縮?。簼L輪滾動一圈放大(縮?。? 到 4 倍。
相機聚焦部件:當(dāng)點擊左邊各個部件的按鈕時,該部件處于相機中心,相機的中心紅點會指向該部件的中心處。
主攝像機移動:按住鼠標(biāo)滾輪中鍵,移動鼠標(biāo),界面會跟隨鼠標(biāo)的位移進行移動。
主攝像機旋轉(zhuǎn):按住鼠標(biāo)右鍵,移動鼠標(biāo),界面會跟隨鼠標(biāo)的位移進行相應(yīng)的旋轉(zhuǎn)。
以主攝像機旋轉(zhuǎn)為例,介紹其部分關(guān)鍵代碼:
if(Input.GetMouseButton(1)&& IsCanRotate) //按下鼠標(biāo)右鍵則準(zhǔn)備開始旋轉(zhuǎn)
{ x =x + Input.GetAxis("Mouse X")* xSpeed * 0.03f;//設(shè)置橫向旋轉(zhuǎn)距離
y =y - Input.GetAxis("Mouse Y")* ySpeed * 0.03f;}? ?//設(shè)置縱向旋轉(zhuǎn)距離
FormatXYZ();//格式化 x y z 坐標(biāo),使之不可超越-360~360
rotation = Quaternion.Euler(y,x,z);//設(shè)置角度
position = rotation * new Vector3(0.0f,0.0f,-distance)+ Tanks.position;//設(shè)置位置
Tanks.rotation = rotation;//更新角度
3.2、按鍵功能
本系統(tǒng)設(shè)置了許多的操控按鈕,如“拆解”、“拼裝”、“旋轉(zhuǎn)”等,幫助使用者全方位地掌握各個系統(tǒng)設(shè)備的模型。以下以拆解按鈕為例,詳細(xì)展示其代碼與效果圖。
拆解按鈕:當(dāng)按下拆解按鈕后,模型會先向上移動,然后兩秒后以爆炸視圖的形式將各個部件拆解出來。該腳本主要通過將各個部件按順利記錄在變量 i 上,然后通過 i 值的大小對各個部件進行拆解后位置的確定,各個部件根據(jù) i 值的大小進行排序,最終達到拆解圖的效果。該功能是由兩個腳本共同搭配完成的,下面展示的實現(xiàn)了部件向上拆解的功能。另一個腳本實現(xiàn)了部件向下拆解的功能,由于內(nèi)容相似便不做展示。
public class 拆解:MonoBehaviour
{ public ?float smoothTime = 0.4f;//零件移動的順滑程度
private ?Vector3 velocity = Vector3.zero;//零件移動的速度向量
public GameObject 整體零件;//存放整體零件的變量
public Vector3 移動距離;
public Vector3 target;
public float 計時器;//用于計時
public int 腳本啟用時長;
public GameObject 拆解按鈕;
public GameObject[ ] 零件;
void Start()
{target = 整體零件.transform.position + 移動距離;}
void Update()
{for(int i = 0;i < 零件.Length;i++)
{零件[i].transform.eulerAngles = new Vector3(0,0,0);}
計時器 = 計時器 + Time.deltaTime;//計時器開始計時
整體零件.transform.position = Vector3.SmoothDamp(整體零件.transform.position,target,ref velocity,smoothTime);
if(計時器 > 腳本啟用時長)//當(dāng)計時器到達設(shè)定的腳本啟用時長時,執(zhí)行以上代碼
{拆解按鈕.SetActive(false);//“拆解”按鈕消失
GetComponent<通用_拆解之上移>().enabled = false;//該腳本禁用
計時器 = 0;//計時器歸零待下次腳本啟用時使用
for(int i = 0;i < 零件.Length;i++)//啟用每個單獨的部件上的零件移動腳本
{ 零件[i].GetComponent<通用_拆解之下降>().enabled = true;}}}}
3.3、第一人稱漫游系統(tǒng)
本系統(tǒng)還實現(xiàn)了第一人稱控制器在核島內(nèi)移動漫游的場景,類似于 3D 游戲一樣。第一人稱控制器的代碼在網(wǎng)上也基本上都能找到,在此便不做展示介紹。第一人稱漫游功能能讓使用者更加直觀得觀察核島內(nèi)各個設(shè)備的連接與位置等,大大豐富了使用者的視野。本系統(tǒng)為了方便用戶觀看,將很多無相關(guān)的設(shè)備和鋼筋混凝土等做成了透明的玻璃體,極大地提高了用戶的漫游效果。以下將對部分第一人稱漫游效果圖進行解析。
四、總結(jié)
本系統(tǒng)運用了許多當(dāng)下新型的技術(shù)——三維可視化設(shè)計,來向使用者展示了核島的所有面貌,功能眾多,而且各個部件都非常齊全。由于本系統(tǒng)的工作量較大,時間十分緊湊,還有很多地方有待完善。本程序所使用到的代碼非常多,總共超過了兩千行以上,solidworks 繪制的模型也非常多,小到每個螺栓、大到外殼都全部按照大亞灣核電廠的數(shù)據(jù)進行了一比一繪制,非常細(xì)致,光是 solidworks 部件的模型就繪制了數(shù)百個文件。
本系統(tǒng)通過“設(shè)備細(xì)節(jié)展示”和“核島整體漫游”兩種功能來展示了核島的主要設(shè)備展示。由于手上的資料有限,很多細(xì)節(jié)依然沒能處理好,本程序上有很多地方有待完善。在此,非常感謝馬敏陽老師,不僅提供給我們一個學(xué)習(xí)的地方,還經(jīng)常幫我們解疑答惑,給了我們很多建議等。葉賢慈學(xué)長也幫忙做了很多的工作,本系統(tǒng)是在眾人的共同努力下完成的,每個人都功不可沒。
參考文獻:
[1]黃鵬.基于 Unity3D 的分布式協(xié)同虛擬裝配仿真研究及實現(xiàn)[D].湘潭大學(xué),2017.
[2]伍鵬.核電站一回路主系統(tǒng)三維仿真模型的研究與應(yīng)用[D].東南大學(xué),2015.
[3]劉吉坤.核電站設(shè)計[J].核動力工程,1982(06):90-94.
[4]Robert J.Budnitz.Status Report on the Safety of Operating US Nuclear Power Plants.Lawrence Berkeley National LaboratoryUniversity of CaliforniaBerkeleyUSA,2010.
[5]V.R.GanatraR.M.SawantN.K.ChaudhuriV.N.Vaidya.Determinatio n of hexamethylene tetramine in the process solution of solgel method for nuclear fuel fabrication.Ganatra,V.R.,Sawant,R.M.,Chaudhuri,N.K.et al.J Radioanal Nucl,1998.
[6]朱華.核電與核能[M].杭州:浙江大學(xué)出版社,2009.
(作者單位:南京工程學(xué)院 院系:能源與動力工程學(xué)院)