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


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