本科毕业设计3D建模及虚拟仿真程序开发基本规范-PartII(2.1版)
(核科学与技术学院虚拟仿真实验教学中心2022年)
3、 虚拟仿真程序开发规范
(1)模型外观及工质流动
1)仿真场景的模型及工质流动借鉴视频“AREVA - Operation of a PWR reactor”和“华龙一号总设计师邢继:核电站的工作原理是烧锅炉吗”的风格,该视频会同规范一起发布。
2)场景的背景采用白色或淡灰色,也可以是unity自带天空颜色,但是为了显示设备的阴影,要加个无限大的白色地面。
3)为实现对模型大小的感官认识,场景中需要添加一个人物模型。
4)场景中的模型要进行自阴影(AO)的渲染。
参考示例程序EquipmentVS Template1的相关内容
(2)程序设计及代码实现基本要求
1)程序功能采用C#脚本实现。
2)先进行程序功能设计(使用者的角度),设计中采用层次化、逐步分解细化的方法,直至代码实现层,并画出功能组成图,为实现使用功能向代码实现的转换打好基础。
3)代码实现时的注意点:1)最下层的功能要与代码模块(概念上网查)相对应,后续称这种与功能对应的代码模块为功能模块(简称模块),模块仍可以有子模块,例如一个函数、一个拥有关系的类对象;2)功能模块与包含代码的程序文件并不是一一对应,通常一个功能模块对应一个文件,但是模块之间调用(以及执行逻辑)关系和数据交换复杂时,就出现单个文件包含多个模块的情况,如自动演示中相机的控制。3)可以利用已有功能模块代码。
(注:对于程序文件,从虚拟仿真平台使用的角度看,其中的代码被称作脚本(决定场景对象中的行为),因此虚拟仿真程序文件也称为脚本文件,而该文件本身可以视为代码的一种管理方式。)
4)对于包含代码较多的程序文件,通常包括的功能模块及子模块拥有复杂的逻辑关系,或较长的执行流程,所以针对这一情况,应设计基于子模块级的流程图(从虚拟仿真平台使用的角度看,就是脚本框图),子模块的代码规模基本在20行以内(经验)。对于图形化的脚本编程,天然具有流程图功能,但是为阅读代码方便,仍要从功能模块级别进行模块划分,并进行注释说明。
5)项目工程文件夹及脚本文件的管理:项目文件夹的组织与命名应与Unity示例程序一致。文件夹及文件应命名为对应功能名称首字母大写。如果含有子功能模块,应提供整体功能文件列表。
6)类、变量、函数的命名:1)类名、public变量名、函数采用首字母大写,大写字母断词,即Pascal命名法;2)非public的变量、局部变量名及函数参数开头字母小写,大写字母断词,即Camel命名法。
7)类和变量应具有完整功能介绍,函数应有完整使用说明(功能及参数含义)。
8)脚本中调用应具有完整关系解释。
(3)对于设备虚仿程序的视角控制,统一以下要求
1)左键点击某零部件,实现零部件的点选;左键持续按下,实现零部件随鼠标在屏幕平面空间的移动。
2)左键点击某零部件,实现将该零部件设置为相机旋转中心;然后按下F键,将视点中心对准该零部件。
3)中键持续按下实现屏幕平面上相机平移(上下左右),方向与鼠标移动方向一致。
4)鼠标中键,即滚轮滚动实现相机视角放大缩小(zoom in 或zoom out)。
5)鼠标右键+LeftALT持续按下实现屏幕空间中,以某一焦点零部件为中心旋转。右键+Z键持续按下前后移动,慢速缩放;右键+LeftShift键持续按下前后移动,慢速缩放
参考示例程序EquipmentVS Template1的相关内容
(4)对于核电厂系统级的虚仿程序的视角控制及操作的交互方式,统一以下要求
1)对于系统级虚仿程序的交互,采用类似于第一人称射击类游戏的交互方式(unity例子程序中有此种交互方式)。
2)可以切换到飞行模式(无重力模式),实现任意高度的漫游。
3)可以实现代理人物后上方和眼睛位置的视角切换。
3)鼠标移动实现相机的角度控制(模拟人视角的转动),w、s、a、d控制相机的前后左右移动。
4)左键点按选设备(视角的中心点与鼠标点重合),然后按下N键,实现设备级的名称显示,按下I键,实现设备介绍;视点离设备,名字或介绍文本框关闭。
(5)设备及系统原理模拟要求
注:暂时定义没有物理模型驱动的原理演示为模拟,有物理模型驱动的原理演示为仿真。
1)原理模拟,主要是设备机械动作和工质流动的演示(暂不包括人员操作的模拟)。
2)数据接口
a、本设计尽管没有物理模型驱动,但是出于以后一定会与物理模型相连的考虑,在开发模拟程序时预留数据接口。
b、现阶段来说就是通过数据接口变量来设定数据,多工况运行的系统,要依据工况统一设定接口数据;而原理模拟均基于这些数据实现,例如泵的启停、阀门的开闭,工质的流量、温度等。
c、数据接口在设计阶段就要确定,并形成接口变量表,包括对应系统、设备的信息。接口变量命名采用与模型名称一致的规则。
3)利用动态贴图实现工质在设备内部存在的表示,利用粒子系统实现工质流动的表示,颜色表示温度,粒子运动速度表示流速。要制定颜色-温度,粒子速度-工质流速之间的映射关系,做到表示的一致和可视性。效果参照视频“AREVA - Operation of a PWR reactor”。
4)在原理模拟程序开发前,要撰写程序实现的策划文字版本,内容包括:
a、要实现的设备或系统内的设备动作及工质流动的通路的描述;对于系统的可以配合流程图进行说明。
b、表现模拟过程的模型剖切或透明处理。以及在程序中对剖切和透明的控制时机和方式。
5)模拟过程中的临时UI界面(用户操作界面),例如工况的切换、数值的显示、功能按钮(视角的切换等)、操作提示等。界面统一放置在屏幕左侧,上下布置,采用分区块布置原则。
(6)设备及系统结构交互操作要求
1)通过鼠标左键长按对象模型,并移动鼠标,实现零件从设备上移出,方便对零件的详细观察。
2)设置复位键,使设备模型恢复原装配关系。(一般使用重新载入场景实现模型复位)。
3)左键点击某零部件,然后按下N键,实现名称显示;鼠标离开零部件,名字文本框关闭。
4)按下I键,实现零部件介绍,按esc退出。
5)按下F1键,打开程序使用说明文本。帮助内容主要包括:
a、人机界面的说明;
b、鼠标键盘的使用说明。
6)直接按下A键,打开开发者信息,包括姓名、单位及开发结束时间,按esc退出。
7)实现剖切模式:建议方案,用一个立方体的各面的变换控制模型的剖切,设备整体及具有复杂内部结构的零件需要该功能。
(7)虚拟仿真程序主界面要求
程序分为三种不同类型,总程序界主界面、分系统程序界面以及设备程序界面;而结构和原理,则是每个程序的两个功能,当然底层实现结构和原理切换推荐使用场景切换的方式。
程序界面统一使用虚仿中心统一提供的模板(Unity Samples UI.unitypackage)。
也可以根据以下原则,对程序界面进行简单的调整。参考初级界面如图1所示。
1)单个设备程序或整合后程序界面为简单的扁平化风格。
2)颜色搭配时,文字及文字背景色要有明显区分度,避免使用大红大紫的颜色。
3)界面以所模拟的设备和系统场景为背景,模型与界面尽量不重叠,模型在视域中的大小适中。
4)界面的菜单在左侧,模型在右侧
5)点结构或原理按钮,界面整体向左移动消失,并使场景中物体居于视域中间。在模拟的场景中按下ESC键,返回该界面,再通过菜单按钮实现原理与结构的切换。
6)帮助、开发者信息、设备及系统介绍的界面的要求与初级界面一致。
7)在用Unity开发界面时,界面元素的位置参考点(锚点)要统一,暂定参考点为左上角。
图1. 程序界面风格样式
(8)程序发布
能够打包成Windows平台下的可执行程序,该程序起始模式为窗口模式,分辨率1920*1080。