船舶机损事故案例多媒体演示软件的开发

2021-08-03 05:04孙岩胡以怀郭磊方云虎张陈芮晓松
电脑知识与技术 2021年17期

孙岩 胡以怀 郭磊 方云虎 张陈 芮晓松

摘要:该文综合利用3ds Max、Unity3D软件开发了一套船舶机损事故案例多媒体演示软件,能实现船舶机械设备的三维展示、语音自动播放、人机交互等功能。详细介绍了软件的开发过程和关键技术,包括总体结构、开发流程,以及海面波动、碎落动画、粒子喷射动画的多媒体设计等,实现了船舶机损故障的虚拟重现,可进行沉浸式事故案例学习,弥补了传统教学课程的不足。

关键词:船舶机损;船舶教学软件;多媒体仿真

中图分类号:TP391      文献标识码:A

文章编号:1009-3044(2021)17-0014-03

开放科学(资源服务)标识码(OSID):

1 背景

船舶險情因其事故发生地点空间狭小复杂、人员疏散与控制处置难度大、机械设备密集、事故发生点不易发现且难以救援[1],因此一旦发生事故极易造成人员伤亡和经济损失,甚至船沉人亡的严重事故,因此加强船员面对紧急情况时该具有的应对措施能力显得至关重要。

由于船舶行业的特殊性,实地演习虽然操作体验感真实,但会耗费大量人力物力财力,而且一旦在实地演习中危险真正发生,危险可控性不高,故实地演习难以操作。但仅凭书本中大量的文字描述,又很难使受训者理解故障现场,从而与实际脱节,不利于知识的消化吸收,同时也会缺乏面对实际事故发生时的冷静,导致教学训练效果欠佳[2]。

虚拟仿真技术利用计算机技术可集中实现建模、仿真、交互等功能,将图像、文字、立体模型整合。利用Unity3D引擎技术可轻松解决当前培训软件制作复杂、跨平台维护不便[3]等问题。

本文对船舶典型机损事故进行了详细研究,并针对船舶应急事故的要求和流程,利用3ds Max建立实际的模型,再基于Unity3D开发了一款操作简单、可自动播放教学视频的仿真软件,模拟仿真船上的具体故障设备、发生的典型事故,以及相应的排查和应急处理。该软件能够为受训人员提供一个真实感高、交互性强的虚拟仿真平台,使教学不再受时间、空间限制,大大减少了前期资金投入及后期设备维护的成本[4],也在一定程度上提高了船舶应急事故训练的灵活性以及教学质量。

2 软件开发过程

2.1 软件总体结构

前期收集了船舶各系统较为典型的事故案例,详细说明了故障发生的经过,以及轮机员相应的分析和紧急应对措施。考虑到本软件是针对学生群体的具体事故进行情景再现式教学,软件重在对故障场景的演示,且为达到教学目的,尽可能保证系统操作简单,软件界面简约适用。

针对轮机专业教学培训的实际需求,软件包括起动系统、调速系统、燃烧系统、换向系统、燃油系统、滑油系统和冷却系统等七个主要系统[5],有磨损、脏堵、断裂等各类部件易发生的故障案例,具体软件系统功能如图1所示。

在进入软件界面后,可根据受训者需求,点击进入相应的船舶系统,选择不同的事故案例开始学习。同时软件会将事故的发生经过和相对应分析与处理过程的文字随语音播放逐字出现,与动画演示视频也能够同步对应。如图2所示,演示视频以三维动画的方式呈现,受训者可根据需求实现音频的暂停或播放,也可拖动视频下方的进度条进行调整,或者点击屏幕右上方的按钮选择从头开始播放。

2.2 软件开发流程

为使受训者能够清楚地理解产生事故的相关设备及其表现出的故障现象,需要场景中同故障相关的模型具体结构部件和工作状态与实际设备一致,具体的软件开发流程如图3所示。细节化的建模可以使真实的故障状态完美呈现在动画教学视频中,故选取了事故案例中主要故障设备。由于船舶设备结构复杂、零部件较精细[6],利用3ds Max软件可以进行精度较高的建模。

以燃烧系统中“航行中主机再起动发生爆燃”一项为例,根据案例,需建立主机、喷油泵、活塞、油管等模型,如图4为喷油泵解体零件。在采集完相关设备的图片、视频等素材后,利用3ds Max进行基本建模,再利用贴图功能使模型更具有真实感,材质功能赋予模型金属感和机械感。简单的动画如单一的旋转、移动等可在3ds Max再制作中完成制作,而拆装、脱落、碎裂、屈展等较复杂的动画,导入Unity3D中,可使效果能够更加简便地实现。

模型在3ds Max中建成并渲染完之后以“.FBX”格式导出,然后导入到Unity3D的Assert文件夹下[7],根据需求,可分别在Assert下新建各系统文件夹,将对应故障所需的模型存入即可。同时Unity3D会自动将模型、材质等分开存放,随选随用。如导入的模型尺寸不统一,可根据需要对模型进行整体或单维度的调整,避免先后导入的模型之间大小失真。

事故案例中有些场景有水、火和烟的特殊效果均利用了Unity3D的粒子系统加以完成。特效导入后,根据所需场景,对相关参数进行调整,从而模拟水面波动、燃烧爆炸、烟雾消散等[8]。

3 关键技术及实现

3.1 海面波动

由于部分场景涉及船舶在海上航行的状态,故需要模拟海面的波动以及船体的摇晃。如整个海面都用粒子系统进行模拟,则计算机会因软件运行占用内存过大,从而使画面失真,出现不连贯及卡顿现象,所以在遵循资源最优化的原则下,选择用平面(plane)制作动画,以代替海面的上下起伏。

首先在Assert下新建一个材料(material),赋予海水的图片,再在场景中新建一个平面,把材料赋给平面,同时利用Visual Studio的C#语言编写脚本,并挂载给平面。在脚本中通过公开规模(scale)和速度(speed),将参数的修改调至前端,可以直接对海面波浪的起伏程度和速度进行调整,以符合众多场景的不同需求,如图5所示。

3.2 碎落动画

为真实还原故障现场,需依据仿照设备实际工作情况逐帧制作动画。有规定运作轨迹的动作可将其分解为平移和旋转,通过Unity3D的动画(animator)功能可快捷地完成动作叠加实现效果,但是如燃烧系统“凸轮错位引起排温升高”一项中,“弹簧垫圈全部碎落在链条箱内”,若逐帧给每块碎裂的弹簧垫圈制作动画,不仅工作量巨大,而且由于不能规划好掉落过程中因碰撞、摩擦等因素造成的掉落途径,会使动画极度失真,故面对类似问题,使用了刚体(rigidbody)和碰撞体(collider)功能。

将用3ds Max制作好的动画模型导入Unity3D中,先给垫圈添加刚体的组件,并根据需求设置重力(mass)、摩擦力(drag)等相关数据值,以便模型具备重力下落等运动特性。其次针对垫圈、螺丝、螺帽和法兰等会互相接触的物体[9],由于接触动作较简单,且物体形状较规则,可选用方形碰撞器(box collider)以减少计算机在执行阶段所需的计算,如此可使垫圈模型沿模型外表滑落,不致穿模失真。之后利用Unity3D动画功能制作动画效果,在开始需要掉落效果的帧处添加垫圈属性(add property),激活刚体和碰撞体组件,否则会在开始运行的同时就发生掉落动作。设置和效果如图6所示。

3.3 粒子喷射动画

喷油器的雾化情况能够直接影响主机功率,在船舶燃油系统发生的故障中经常需要做雾化试验。而Unity3D的粒子系统中,粒子是一个动态产生的过程[10],符合喷油器喷油的动作规律,因此对粒子系统进行导入可以真实地模拟喷油的过程。

以“航行中主机再起动发生爆燃”一项中“检查该缸的油头雾化情况和喷油定时”为例,将喷油器位置确定后,新建一个粒子系统(particle system),通过平移、旋转将该粒子系统置于喷油器喷口处,且保证粒子发射角度与喷油器主体在一直线。之后根据喷油器喷油孔实际的开孔角度,在形状(shape)中选择锥形(cone)、调整发射角度(angle)为60,圆台上底面半径(radius),即初始发射面为0.2。通过改变粒子的开始生命周期(start lifetime)和开始速度(start speed)改变喷射形状的大小,宏观上即表现为喷出油距离的远近。通过限制粒子的开始大小(start size)为0.07、提高模拟速度(simulation speed)至10,可以使喷出的油滴更细、速度更快。在放射(emission)中通过改变随时间变化的速率(rate over time)可以控制喷油的密度。由于在实际情况中,人眼看到的雾化喷射,油滴不是一粒粒喷射出的,因此使用了粒子系统的拖尾效果(trails),同时在渲染(renderer)中新加入了一个油的材料,为更贴近实际,在材料中选择了渐褪(fade)的渲染模式(rendering mode)。喷油相关设置及效果如图7所示。

3.4 界面切换

在系统主界面上,屏幕显示了七个系统。受训者可选择不同的系统,利用鼠标直接点击系统所在按钮进入下一层界面,此场景是借助了Unity3D中的UI面板制作而成。

以初始界面点击进入系统总览界面为例。在初始界面(后简称为A界面)新建一个按钮(button),重命名为“start”,同时另外新建一个面板(panel)设为系统总览界面(后简称为B界面),并在2D模式下,将两块面板重合摆置。之后在A界面的start按钮中单击(on click)设置中添加单击效果,使start按钮被点击时,A界面变为不激活而B界面被激活。完成以上按钮设置后,还需只保持A界面为激活状态,而将B界面取消激活,如此在运行时,点击start按钮即可使A界面消失,同时B界面出现,从而实现鼠标单击按钮切换界面的效果。

4 结束语

利用3ds Max进行建模,使用Unity3D制作动画特效,可实现船舶主要系统典型机损故障的动画模拟仿真,给学生以直观的感受,有利于提高教学效率,弥补了培训设备不足和教学时间和空间受限的问题。后续还可添加测试评分模块,进一步提高软件的交互性和教学实用性。

参考文献:

[1] 葛贝贝,梁静国,李一倬.船舶火灾应急管理仿真系统[J].黑龙江科技信息,2008(26):9,229.

[2] 刘欢.油化船舶电气设备的使用要求与防火防暴措施[J].科技传播,2011(21):151-152.

[3] Zhang X,Chen F E.Development of vehicle fault maintenance system based on Unity3D[J].Journal of Physics:Conference Series,2020,1549:042010.

[4] 祁永超,田銘兴,陈小强,等.基于Unity3d的变电站虚拟仿真培训系统构建[J].兰州交通大学学报,2021,40(1):53-59.

[5] 徐鹏.基于Unity3D开发平台的Web3D技术的数字科技馆展示系统设计制作[J].科技与创新,2021(3):51-52.

[6] 申蔚,李天宇.虚拟拆装教学系统的设计与实现[J].高教学刊,2021(5):72-75.

[7] 柳依何,顾继俊.基于Unity203D的吸力锚安装工艺虚拟仿真系统[J].科技创新与应用,2021(2):117-121.

[8] 吴可玉,庄建军,徐琳玲.基于Unity203D的虚拟消防与安全教育系统[J].实验技术与管理,2020,37(12):237-240.

[9] 陈亮,李耕,叶志浩.船舶电力系统虚拟仿真实验教学的探索与实践[J].教育教学论坛,2021(6):117-120.

[10] 叶诗慧.基于Unity3D的化学虚拟实验系统的设计与实现[J].微型电脑应用,2020,36(10):32-34,38.

【通联编辑:谢媛媛】