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