陈 明,覃 坤
(1.核动力运行研究所,武汉 430223;2.中核武汉核电运行技术股份有限公司,武汉 430223)
核电厂全范围模拟机是一个数字化的核电厂实时仿真系统,通过对核电厂设备、系统的模拟,实现了核电厂的虚拟运行,其主要以二维曲线式的信息及参数化的内容为展示主体,不能完全满足非专业技术人员对核电运行原理的培训需求。同时非专业人员参观模拟机时,每次均需要专业人员进行大量讲解,且效果不佳,为了解决以上问题,增强核电厂模拟机培训的立体感及真实感,开发了基于Unity3D的模拟机二维及三维可视化展示系统。
Unity3D是一个用于开发三维展示、模拟场景等类型互动内容的专业游戏级开发引擎。其开发技术体系主要包含3D展示技术、UI技术、特效技术、数据库技术、互动交互技术等。其图像渲染引擎采用OpenGL、API和Direct3D,能支持Max、Maya、Pro/e等多种常用建模软件输出的模型文件。另外,具有强大易用的着色系统、物理特效、粒子特效、三维效果、项目发布和光影渲染等功能支撑,使得Unity具有简单易学、灵活便捷、高效快速等特性。
图1 系统实施流程Fig.1 System implementation process
Unity支持3种脚本语言:C#、Java和Boo,用户可以通过编写脚本附加到特定对象上以实现各种功能。Unity内置一个强大的光影贴图烘焙工具及相关的物理引擎,通过Unity3D平台可以逼真地展示核电厂房及厂房内设施的结构形状和运行特点。
本系统后端与模拟机相连,能够读取模拟机的实时数据,并通过前端二维/三维可视化场景进行动态展示。系统前端采用二维及三维建模技术构建核电厂的主要系统设备和管网,通过场景交互技术实现展示图形化的系统设备,采用动态特效技术展示管网的水流、雾化等效果;通过该系统,能够直观形象地观察和了解核电厂机组和设备状态。
本系统采用专业三维软件Pro/e进行初步建模,在建立好的模型基础上采用MAYA软件进行优化处理调整模型的布线、顶点拓扑结构。主要部件使用三维模型表现,次要部件及二维效果使用贴图表现。在模型处理阶段,将所有物体进行模块化处理和优化,在不影响数据精度的前提下,大幅减少模型顶点数,模型数据规范,清除游离点、法线翻转的面、错误的光滑组、未清除的历史等,对模型命名进行规范统一。最终保证模型可以在引擎中流畅运行和编辑,并且能够高度还原实际场景。模型处理流程如图2所示。
使用UVLayout软件和Maya自带工具合理分配UV(贴图坐标),在这个阶段合理制作共享贴图,按照次时代游戏制作的标准,避免UV空间的浪费,保证使用率在70%以上。
图2 模型处理流程Fig.2 Model processing flow
图3 材质实例化示意图Fig.3 Material instantiation diagram
该环节需要制作两套UV,用作烘焙灯光贴图的UV空间,使用Quixel Suite、Substance Painter、Photoshop等专业软件结合制作贴图,整个制作流程完全按照PBR(基于物理的渲染)要求制作,PBR流程采用Metallic-Roughness(金属度——粗糙度)流程,一套贴图包括Albedo(固有色),Metallic(金属度),Roughness(粗糙度),Normal(法线贴图),Ambient Occlusion(环境闭塞贴图)等相关要求进行制作。
贴图制作的素材按照统一路径和命名导入引擎,在引擎中制作材质球并赋予物体。制作材质将使用Material Instance(材质实例化)对材质的最终渲染进行优化和美化。
场景中的所有金属贴图都经过精确设计,只使用同一个材质球,将各种贴图以及属性进行参数化,这样所有的金属材质都使用同一个材质球的不同实例(Instance)。因此,渲染效率会得到大幅地提高。
如图3所示,最左侧的为普通材质球(作为其他材质的“父”材质),中间和右边的为材质实例,可以看出,经过精心设计,同一个材质通过更换贴图和参数,可以达到效果完全不同的材质实例效果。该图中3个物体的渲染实质使用的是同一个材质,比起使用3个材质,性能上得到了提升。通过将该技术的合理运用,在大量模型和材质的场景中,会大幅提高运行效率,美化场景效果,采用细节贴图,能够以较少的资源达到较高的精度和画面品质。
图4 接口系统组成图Fig.4 Interface system composition diagram
图5 系统二维展示界面Fig.5 System two-dimensional display interface
数据接口系统是连接可视化系统和模拟机系统的中转系统,由如下两个模块组成,两个模块通过共享内存区实现数据共享。
CNPO3DServer模块:从模拟机获取数据。
本模块依照模拟机的程序框架编写并被模拟机调度,本模块和模拟机其它系统的加载、卸载方式一致。调度频率可根据实际使用需求进行修改,在模拟机运行、冻结状态都被调度。
TCPCOM模块:从模拟机获取的数据通过网络协议发送到3D显示系统。
本模块在CNPO3DServer被加载时,开始独立运行,当CNPO3DServer被卸载时终止运行。
三维引擎中需要展示的主要包括二维展示、三维展示及特效展示。
图6 阀门二维动态展示符号(左为电动阀,右为手动阀)Fig.6 Two-Dimensional dynamic display of the valve (Electric valve on the left, manual valve on the right)
图7 主要厂房及内部主要系统布局Fig.7 Main plant and internal main system layout
可视化系统中的所有的二维展示及特效,如包括管道内部介质流速、温度、方向及阀门开度等,都与模拟机数据进行实时对接,并与模拟机数据呈相关性表现。
可视化系统对二维管道内的流体进行了分类,区分了不同的流体类型,如液态水、汽态水、空气等,同时采用不同形状的图标进行差异化展示。
可视化系统对不同的阀门进行了分类,如电动阀、气动阀、单向阀、手动阀,同时采用不同形状的图标进行差异化展示,使得用户能够一目了然区分不同类型的阀门。
三维展示内容主要包括厂房结构展示及主要设备结构展示。系统的动态特效也附着在三维模型上,并与模拟机数据进行实时对接,包括特效的开启、关闭、增大、减小等。主要特效包括安全壳温度场、压力场;中子注量率;压力容器水位、温度;蒸汽发生器水位、温度;主泵转速;一回路破口大小;喷淋系统开启及大小等。
粒子特效展示系统是一种用于模拟不规则物体或自然场景的方法,这些不规则物体的特点是具有一定规律,但又呈动态性和随机性。粒子系统中的每个粒子都具有形状、大小、颜色、透明度、运动速度、运动方向、生命周期等多种属性,而且这些粒子随时间的推移不断变化,在时间和空间上具有动态分布特性,从而能够真实地模拟出具有复杂运动规律的动态特效[1]。
图8 一回路主设备及破口特效展示Fig.8 Primary circuit main equipment and break special effects display
图9 粒子特效处理过程Fig.9 Particle effect process
图10 核岛厂房内部温度场粒子特效Fig.10 Nuclear island plant internal temperature field particle effects
粒子系统是用来模拟不规则现象和动画生成的高效技术,目前已经被广泛的应用于各大游戏引擎及三维软件之中,相比于其他的算法如林顿梅伊尔系统、分形构图系统等,粒子系统的适当使用能够很好地兼顾显示质量和运算效率,是目前为止用来模拟不规则模糊现象和物体的较为成功的图形生成算法。粒子系统在总体上会有一定确定属性的表现规律,但是对于单独的个体却会有一定随机属性表现出不同的特点。
Unity3D 中的粒子系统由Ellipsoid Particle Emitter(椭圆粒子发射器)、Particle Animator(粒子动画器)、Particle Renderer(粒子渲染器)3个部分所组成。椭圆粒子发射器是用来生成粒子的组件,该模块定义了粒子有规律或者无规律的大小、速度、颜色、持续时间、初始角度等属性来模拟所需要产生的粒子效果,椭圆粒子发射器的所在的坐标便是粒子初始化的坐标。粒子动画器是将粒子发射器产生的粒子进行二次定义,一般是粒子属性随时间或距离改变的变化规律,如增加粒子的发射速度,改变粒子的旋转角度,改变粒子的颜色,改变粒子的形状等。粒子渲染器的主要工作是将粒子效果渲染到可视化系统中,将粒子产生的效果直接显示在输出设备上,让用户直观地看到效果,并且这个组件还可以决定粒子的材质、光影等[2]。
本系统中的三维特效,如安全壳温度场、压力场;中子注量率;压力容器水位、温度;蒸汽发生器水位、温度、破口;主泵转速;一回路破口大小;喷淋系统开启及大小等都采用了动态粒子扩散手段进行展示,能够高效快捷形象生动地展示这些复杂的三维现象,并降低系统运行压力,保证系统流畅运行;同时动态粒子扩散特效展示方法能够方便地和模拟机参数进行关联,并呈一致性关联,即实现了动态特效展示的参数化表现。
在本系统中向场景中添加一个包含粒子发射器、粒子动画器、粒子渲染器等组件的烟雾粒子系统并设置每个粒子系统的形状大小和持续时间以及单位时间内可以产生的粒子数量、粒子的运动特点、粒子的材质贴图等属性。粒子系统与模拟机进行实时对接,粒子系统的形状大小和时间寿命等都由模拟机的实时参数驱动,能够实时展示系统的工况特点。以温度场为例,粒子系统颜色值由模拟机给出的厂房内部的温度值来实时驱动,不同温度之间的过渡则做插值计算。
通过在Unity3D中设置粒子特效,配合实时模拟机数据进行机组状态的展示,可以更加直观、形象地展示核电厂的运行特点和当前模拟机的运行状态,能够增加培训手段,提升培训效果。