基于 Unity3D 的核岛虚拟学习系统的设计

2019-09-10 00:43叶伟杰宫超凡马敏阳王红艳
科学导报·学术 2019年42期
关键词:三维模型

叶伟杰 宫超凡 马敏阳 王红艳

摘要:核岛,本系统参照大亚湾核电厂,通过 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 中最重要的部分,主摄像机是整个界面的显示。对主摄像机的设置即是对整个程序界面的设置,用鼠标实现界面的旋转、移动、放大缩小等功能实际上是主通过摄像机的移动和绕点旋转来实现的。具体功能如下:

鼠标滚轮放大缩小:滚轮滚动一圈放大(缩小)3 到 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.

(作者单位:南京工程学院 院系:能源与动力工程学院)

猜你喜欢
三维模型
数字化人体图像和三维模型在解剖教学中的应用
矿山虚拟环境三维模型系统优化方法研究
汽车虚拟驾驶培训系统的设计开发
虚拟仿真技术在家畜解剖教学中的应用
基于现代信息技术的矿产资源监管体系建设
基于WebGL的三维物理模型设计与开发
基于生态足迹的区域可持续发展研究
三维激光扫描在核电维修中的应用
基于SolidWorks的零件建模参数化设计应用简析
基于DIMINE软件地质模型建立