Unity 3D船舶损管训练虚拟仿真系统的设计与实现
2019-08-10何隽
何隽
摘要:传统损管训练极易导致人员损伤、船舶或货物的损坏。针对损管训练在现实中难以完全开展的特殊性,但又需加强对损管人员的训练,建立了船舶、损管工具和损管人员模型,展现各种损管情况,提出训练思路,综合使用3dsMax和Unity 3D软件设计开发了船舶损管虚拟仿真训练系统。该文详细介绍了系统中堵漏伞工具對船舱圆形破口堵漏的开发过程。实践证明,该系统界面友好,操作简便,损管人员经过反复训练,可有效提高观察能力和决策速度,为损管训练提供了一种解决方案。
关键词:Unity 3D;损管;训练;虚拟仿真;破口堵漏
中图分类号:TP391.9 文献标志码:A
文章编号:1009-3044(2019)17-0246-03
开放科学(资源服务)标识码(OSID):
Abstract: Traditionally, the training of damaged pipes can easily lead to personnel injury, ship or cargo damage. In view of the particularity of the training of damaged pipes which is difficult to carry out completely in reality, but it is necessary to strengthen the training of damaged pipes personnel. A model of ship, damaged pipes tools and damaged pipes personnel is established, various damaged pipes are displayed, and training ideas are put forward. A simulation training system for damaged pipes of ships is designed and developed by using 3dsMax and Unity 3D software. This paper introduces in detail the development process of the leak plugging umbrella tool in the system to plug the circular break in the cabin. Practice has proved that the system has friendly interface, simple operation, and damaged personnel can effectively improve the observation ability and decision-making speed after repeated training. It provides a solution for damaged pipe training.
Key words: Unity 3D;damage control; training; simulation; breach of plugging
1 背景
船舶在航行过程中因触礁碰撞、海水腐蚀管路,而导致破损进水的事故时有发生。船上人员面对此类破损灾害,必须迅速采取正确的决策,否则进水情况将进一步扩大,甚至导致船舶沉没。为保障或恢复船舶生命力所采取的预防、限制和消除损害的措施和行动,成为损害管制(以下简称损管)[1]。因此,损管人员必须掌握堵漏工具的使用方法,在平时有规律地进行损管训练,才能在紧急情况下从容应对。但是常规实体的损管训练存在高能耗、高污染、破坏性、高危险性和不可视性的缺点[2]。
随着计算机技术的发展,虚拟仿真已经成为对各种复杂情况尤其涉及大能耗和具有危险性训练时必不可少的一个内容。美俄英等发达国家在损管模拟训练系统的研制上已有很多成功的范例,如美国的奥克兰损管学校配备了具有摇摆功能的堵漏训练仓。我国海军也逐步建立了以仿真模拟为主的舰艇损管指挥训练系统[3]。
本文鉴于Unity 3D强大的人机交互功能进行虚拟仿真损管训练系统开发,将远望号船和各类专业性堵漏工具在计算机中进行可视化处理,在PC端建立船舶虚拟仿真练环境,供学员学习操作工具和重复训练,解决了现实中船舱分布区域广、部分设备隐蔽性强难以观察和了解危险隐患的问题。
2 训练系统设计
2.1 总体设计
MVC框架在软件开发中能够对软件的可靠性、规范性和可扩展性起到极大的促进作用[4]。本系统基于Unity 3D引擎进行开发,完全符合逻辑层、数据层、界面层分离的MVC思想,如下图1所示:
2.2 模块设计
本系统可供学员通过人机交互进行漫游,进入不同场景中观察危险情况,当发现损管时,根据实际情况采用不同的仿真工具进行危急情况处置。因此损管训练的模块划分如下:
工具学习模块:损管训练核心就是针对各种不同的险情进行准确的工具选择。每种工具都有其适用范围,使用方法也不尽相同。在此模块中,训练者可以从X轴向和Y轴向720度观察工具的外形,学习到各种工具使用规程。
舱壁破口堵漏模块:破口堵漏模块中包含险情探测、装备工具、堵漏操作,先进入场景通过探测得知破口形状和大小,退出场景到指定地点对应选择工具装备到角色的背包系统中,再次进入场景对破口使用工具堵漏。
管路包扎模块:管路包扎模块包含险情探测、装备工具、包扎操作,先进入场景通过探测得知管道破口类型,退出场景到指定地点对应选择工具装备到角色的背包系统中,再次进入场景对管道破口使用工具包扎。
系统计分模块:完成上述损管训练任务后,系统将对此次任务完成的情况做出总结,给出用时情况、险情个数、排险任务个数、使用工具种类数量和成绩,还可以查看全过程信息和每个时间点的得分扣分统计。
3 损管训练实现
虚拟训练系统开发的过程中,3D模型的建立必不可少。在损管训练中主要用到堵漏箱、T型螺桿、伸缩支柱、堵漏伞、肋骨支架、堵漏垫和堵漏袋等专业工具。损管人员使用损管虚拟仿真系统进行训练时,首先会通过观察模型去学习各种工具的使用方法和适用范围。优秀的模型能够给训练者带来直观的体验,增强训练的效果。
本文主要讨论船舶舱壁圆形破口堵漏场景的损管训练。
3.1 3D模型
3.1.1 建模规范
比例规范:在场景中使用的3D模型之间比例必须一致,单位也需要与Unity 3D软件统一,以“米”为单位。
模型规范:模型命名规范,以工具和角色模型的中心为轴心点,模型文件要控制面数,根据本系统将应用在PC平台需控制在1500-4000个多边形,删除不可见的面,移除孤立的顶点,考虑在Unity 3D中运行内存。
材质规范:Unity 3D软件只支持3dsMax的标准材质和多维/子物体材质,只能支持位图类型的贴图,只支持漫反射和自发光贴图通道,以上特殊要求都要在建模过程中注意。
3.1.2 堵漏伞模型
圆形破口堵漏使用的主要工具是堵漏伞。为了在场景交互得到1:1的模型比例,首先要进行模型数据采样,统计得到如下表1的堵漏伞模型的各方面数据:
根据上述数据,选择标准基本体,使用车削、挤压和切片等命令,完成伞面、骨架、伞棍和手柄等部件,再嵌套组合成白模,加上贴图,就完成了堵漏伞3D模型。伞面建模见下图2:
3.1.3 角色模型的骨骼蒙皮
在为了得到更加完整的训练体验,避免第一人称视角移动镜头带来的晕厥感和视野缺失,本系统采用第三人称视角。第三人称视角可以让训练者多角度清楚观察自己在系统中担任的角色,这就需要对角色进行到1:1真人大小的建模,此内容不再赘述。进入场景中可以大角度观察周围的环境,从而更快发现险情所在,这就需要让角色模型在场景中活动起来。
首先,先对人物角色模型进行骨骼构筑,然后调整骨架位置和人物位置,再对部分骨骼数进行分段调整。其次,对模型添加蒙皮修改器,创建多个足迹,角色跳跃的动作成型了。此时,角色模型骨骼构筑和蒙皮效果如下图3所示:
除了上述模型以外,船体及各舱室模型的建立过程不再赘述。
3.2 Unity 3D引擎
Unity 3D是一款支持多平台的引擎,提供了丰富的图形化界面,可供用户创建交互内容,为开发虚拟仿真训练系统提供了方便。
本系统中使用的3D物理引擎定义了物体的物理材料属性、物体受力后的运动以及物体碰撞后的运动。其中主要用到了刚体(Rigidbody),它是激活物体物理属性的主要组件,当刚体被绑定在角色上时,角色将立即受到重力影响;碰撞器(Collider)定义了对象在发生物理碰撞时的形状[5];物理材质(Physics Material),当碰撞器交互时,它们的表面需要模拟材质的属性;触发器(Trigger)用来触发事件,在本系统中,角色走到一个舱室会触发随机产生的舱壁破口或管道破损事件。射线(Ray)是所有3D游戏中都会使用到的一项技术,被广泛使用到了路径搜寻、AI逻辑和命中判断,在本系统中主要用来探测灾害情况。
3.3 系统实现
船舶舱壁产生圆形破口的情况下,会出现漏水情况,在场景中使用Unity 3D自带的粒子系统,对粒子的速度、大小、存活时间、形状和颜色等参数调整到合适的数值,模拟水粒子,增强舱壁漏水的视觉效果,使损管人员在仿真训练中达到更加直观的体验。
通过工具选择模块的学习,损管人员应选择堵漏伞工具,点击圆形破口进行堵漏,使用代码来实现点击事件。堵漏伞的堵漏代码如下:
把falg设置成false则是将闭合的堵漏伞经过一段时间替换为打开的堵漏伞,即完成破口堵漏。再将这个方法反射到Button中On Click()这个属性中,选择对应函数,完成此次鼠标点击事件。
4 系统演示损管人员进入系统在工具学习之后,可选择不同场景,体验不同灾害类型进行训练。同一场景中也会因损管人员的进入,被随机触发2-3个不同类的灾害,供勘察和判断。选择界面如图4所示。
下图5为系统堵漏模块中其中一面舱壁出现破口的情况,损管人员可以探索破口类型,选择对应的堵漏伞工具或其他多个工具添加到背包系统,并从中单击选择相应工具,按住Control键进行手持,再按F键使用射线技术完成堵漏:
完成本场景中所有损管任务后,可查看此次任务完成的成绩,总共使用的时间、损管出现和完成的数量,以及使用工具的数量,如需要查看全过程信息和每个时间点的得分扣分统计,还可以进一步点击对话框左下角按钮,进入下一级界面,如下图6所示:
5 结束语
本文主要研究了船舶损管训练虚拟仿真系统的开发,重点针对使用堵漏伞进行圆形破口堵漏模块的设计和实现过程。本系统采用3dsMax建立的模型导入到Unity 3D引擎中,构建船舶仿真模型,供损管人员进行全面高效的训练,及降低了实地损管训练的昂贵费用,又实现了训练安全性。
参考文献:
[1] 侯岳, 王康勃, 浦金云. 基于退役舰改装的舰艇综合损管教学训练系统[J]. 实验室研究与探索, 2019, 38(2): 214-217.
[2] 康雪丽. 海上运输跨专业综合实验实训平台设计[D]. 大连: 大连海事大学, 2016.
[3] 厉行军, 杨少波. 基于态势的损管辅助决策系统[J]. 船海工程, 2018, 47(6): 14-17.
[4] 罗维, 张华. MVC程序设计[M]. 北京: 中国水利水电出版社, 2013(5).
[5] 石雷. 舰船抗沉损管训练仿真系统研究[D]. 成都: 西南交通大学, 2015: 45.
【通联编辑:谢媛媛】