Unity3D虚拟现实技术在机舱资源管理模拟器开发中的应用

2015-11-29 01:02蒋德志姚文龙张均东青岛远洋船员职业学院机电系山东青岛6607大连海事大学轮机工程学院辽宁大连606
中国航海 2015年3期
关键词:轮机机舱模拟器

蒋德志, 姚文龙,, 张均东(. 青岛远洋船员职业学院 机电系,山东 青岛 6607;. 大连海事大学 轮机工程学院,辽宁 大连 606)

Unity3D虚拟现实技术在机舱资源管理模拟器开发中的应用

蒋德志1, 姚文龙1,2, 张均东2
(1. 青岛远洋船员职业学院 机电系,山东 青岛 266071;2. 大连海事大学 轮机工程学院,辽宁 大连 116026)

针对目前机舱资源管理训练平台在高逼真度和强交互性等方面存在的不足,提出一种基于Unity3D平台的远程可交互式机舱资源管理模拟器的实现方法。首先,基于3dsMax/Unity3D的虚拟现实技术,阐述机舱资源管理模拟器的总体设计方案;其次,介绍Unity3D程序的开发流程和关键技术;最后,在应用3dsMax对超大型油船机舱设备进行三维建模的基础上,对应用Unity3D工具包实现虚拟场景的动态交互技术进行研究,实现三维船舶模型数据与二维模型数据的整合、碰撞检测和三维机舱虚拟漫游等。采用实船数据对该模型器进行仿真应用,结果表明:所开发的系统能很好地满足机舱资源管理训练的各项指标要求,且实现效率较高。

船舶工程;机舱资源管理;模拟器;Unity3D;虚拟现实;交互设计

近年来,国内外有关轮机模拟器的研究已取得较大进展。国外方面,挪威的KONGSBERG公司、英国的TRANSAS公司和波兰的UNITEST公司等均已开发出多种基于虚拟现实技术的轮机模拟器,但其系统仅限于设备操作技能训练,且采用被动式漫游,缺乏沉浸感。国内方面,大连海事大学、上海海事大学、武汉理工大学和集美大学等科研院校[1-4]近年来也已在该领域的研究方面取得较大进展,但是现有轮机模拟器的主要功能是操作技能训练,不具备STCW公约(International Convention on Standards of Training, Certification and Watchkeeping for Seafarers)马尼拉修正案中关于资源管理所要求的团队协作训练、情景意识训练、通信与沟通训练以及应急训练等功能,不能满足机舱资源管理操作评估的需要。[5-6]因此,研制机舱资源管理模拟器显得尤为重要。这里提出一种基于3dsMax和Unity3D的机舱资源管理模拟器的设计思路,提供多人在线或远程交互式训练功能。

Unity3D是近几年刚发展起来的一种性能卓越的开源三维虚拟现实开发平台,不仅能整合其他软件平台提供的资源,而且具有强大的计算机程序编译能力。Unity3D类似于Director, Blender Game Engine和Virtools等图型化开发软件,其编辑器可在 Windows 和 Mac OS 环境下运行,且支持各种脚本语言(包括Javascript,C#和Python)。许多高级语言都提供了与Unity3D的接口[7],这使得其能适应于不同的应用领域。

1 机舱资源管理模拟器总体设计

利用虚拟现实技术,结合机舱资源管理训练内容,以30万吨级超大型油船(Very Large Crude Carrier,VLCC)“远兴湖号”为母型船,建立VLCC机舱三维实体模型。通过制定不同的任务,使轮机人员明确各自在不同任务中的职责,有效利用船舶机舱现有的机械动力设备和安全设备,发挥个人在团队工作中的作用,从而严格、有条不紊地完成相关工作,体现团队成员在资源管理方面的技能,保证船舶安全航行,减少或避免潜在人为事故发生。[8]

该机舱资源管理模拟器除了具备传统轮机模拟器的操作功能以外,还具备情境意识训练、通信与沟通训练、团队协作训练以及应急训练等功能。其从总体功能上可分为值班人员的单人和多人协同训练模块、远程可视化交互控制模块以及教练员管理与在线培训模块等三大模块,各模块功能设计如下。

1.1值班人员的单人和多人协同训练模块

机舱资源管理强调的是值班人员在团队与团队协作、通信与沟通、领导与决策以及情景意识的培养与保持等方面的管理技能,因此所设计的机舱资源管理模拟器应具有足够逼真的三维操作模型,使学员真正感受到船舶的实际环境,更好地学习机舱资源管理所要求的技能。[9]此外,其还应具备传统轮机模拟器所包含的三维模型,如:船体、机舱总览、主推进装置及其推进系统、发电柴油机、自动化电站系统、应急发电机间、集控台、驾驶台、机旁操纵台、舵机系统、锅炉蒸汽系统、压载水系统、火灾报警和灭火系统(包括二氧化碳系统)、舱底水系统、燃油柜系统(包括燃料柜、沉淀柜和日用柜)、滑油柜系统(包括储存柜和沉淀柜)、空气系统以及冷却水系统等。

在多人协作完成机舱各种应急处理演练时,重点考察值班人员对操作规程的熟练程度和执行程度以及与其他同事的配合能力、团队协作精神。因此,所设计的机舱资源管理模拟器应能实现机舱进水时船舶吃水和横倾变化的检测以及设备的自动启停、机舱失火和全船失电的应急处理等内容的训练,并能使学员以虚拟身份登陆模拟器,自主操控虚拟角色完成机舱应急处理演练规则规定的各项操作,如同亲临应急处理现场一样。未能参演的岗位,系统以机器人(NPC)代替,可进行应急处理知识考核,提高轮机人员的应急处理水平。该部分功能是传统轮机模拟器所不具备的。

按照上述任务需求,该模块能实现以下3种操作训练。

1) 基本操作训练:能完成类似于传统轮机模拟器的瘫船启动、机舱备车准备、港内机动航行、海上定速航行、机舱完车准备、辅锅炉操作、分油机操作、应急操作以及特殊工况航行等。

2) 高级操作训练:能完成类似于传统轮机模拟器的主机遥控系统的参数查询和修改、特殊工况下控制模式的选择以及系统内故障排除评估等。

3) 管理技能训练:能完成传统轮机模拟器所欠缺的通信与沟通、常规工况及应急情况下轮机长和轮机员之间的协调与配合等。

1.2远程可视化交互控制模块

对于可远程交互式机舱资源管理模拟器的实现,采用基于B/S模式的TCP/IP结构。该结构是一个开放的、可在线调试和实时运行的模块化建模环境,用户通过IE等主流浏览器便可浏览三维场景;其模型的建立、调试、试验和运行结果显示都在客户端进行。通过网络传输反映三维场景的模型文件,用户可根据需要将相应的模型文件下载到本地后由对应的浏览器插件来提供对模型文件的动态显示和实时渲染。若用户与三维虚拟场景发生了交互作用,则服务器会根据用户的请求继续提供其他局部或不同视点的模型文件,由此实现基于网页的多人在线团队分工合作训练,例如组成团队来完成主机备车、值班小组的航行值班、机舱与驾驶台的联络、PSC模拟推演及其他应急处理演练等。

1.3教练员管理与在线培训模块

教练员管理与在线培训模块主要用于教员对模拟器进行管理和教学演示,可实现初始训练环境设置,训练过程控制,故障和工况设置,系统投入和解除控制,运行状态监视、记录和打印,教学对话,训练过程记录、考核和评估,实操评分及成绩单打印等功能。此外,关于机舱资源管理培训的相关资料(如应急视频、图片、文字和规章制度等)都可嵌入三维场景供学员学习。其具体实现的功能如下。

1) 启/停控制功能,包括加电集体启动、密码输入、直接进入“模拟器”界面、IP地址设置以及各仿真子系统准备状况监视等。

2) 运行模式设置功能,包括全部学员对同艘船舶进行全船操作训练、学员对分系统进行局部操作训练、冻结和运行控制以及声响控制等。

3) 外部条件(运行环境)设置功能,包括海水流速/流向设定、船舶航向设定、船舶吃水设定、海浪设定、风力和风向设定、大气压力设定、船体海生物附着程度设定、海水温度、集控室温度设定、环境温度设定、海面结冰状况设定以及(窄)航道状况设定。

4) 操作训练管理功能,包括已有训练项目选择、新项目录入、异常事件设置、操作记录、重做、结束返回等,其中:新训练录入功能指允许教练员将某一运行状态或情景下的系统参数、初始状态和情景存储为新的训练项目,并列入训练选项中;操作记录功能包括受训人登录、操作时间和操作内容记录打印等;重做功能指提供部分或整个训练项目的重做功能;结束返回指返回主界面或评估界面。

5) 系统故障检索与编辑功能,包括故障列表检索、故障分组编辑、故障参数编辑、新故障编辑与保存、故障运行管理(包括故障现象和故障处理过程监视)、故障复位(包括故障处理鉴别、故障完成复位和故障强制复位)以及返回等;此外,其还提供所有设备与系统的磨损变量,以便教练员根据磨损变量编辑新的故障项目。

6) 关于机舱资源管理培训的相关资料(如应急视频、图片、文字和规章制度等)都可嵌入三维场景供学员学习。

2 Unity3D程序开发流程

Unity3D程序的开发流程(见图1)一般分为制作并导入模型、组织通道模块和发布程序等3步。

1) 通过3dsMax 建成VLCC机舱三维实体模型, 包括几何模型、纹理和光照等,开发完成后把资源数据发布为.FBX格式文件。

2) 将.FBX格式文件导入Unity3D进行整个系统的合成与交互开发,形成基于Unity3D 引擎的虚拟现实环境,包括VLCC场景数据库、Unity3D 渲染引擎和碰撞检测等交互处理程序,其中相同的资源放在同一个目录下,方便虚拟仿真过程资源的索引、查找、装载和释放。

3) 在Unity3D界面中创建相应控制的脚本,打包发布为Web版本,生成远程可交互式机舱资源模拟器应用软件。

图1 Unity3D程序开发流程

程序设计的核心是Unity3D驱动模块,主要功能是驱动外部设备(如鼠标和键盘等)输入的信息以及绘制VLCC三维虚拟仿真数据资源。绘制仿真数据实现机舱虚拟场景仿真。处理外部设备输入信息,对设备虚拟场景对象进行操作(如旋转、缩放及移动等),实现交互仿真。

3 关键技术

3.1机舱场景漫游

漫游是机舱资源管理模拟器的关键功能,交互是实现漫游的方式。[8]普通交互可通过JavaScript实现,例如在模拟器漫游系统中用到的鼠标按键行走功能,可在Unity3D中通过WSAD分别实现上下左右移动。Unity3D 中内置了第一人称视角控制,将控制器预置体拖放至虚拟现实场景中,不仅可以模拟第一人称在场景中进行漫游,而且可以通过检测输入控制摄像机的方式驱动场景,实现任意视角的场景漫游。舵机间自动漫游程序开发见图2。

图2 舵机间自动漫游程序开发

3.2碰撞检测

在开发机舱资源管理模拟器的过程中,必须在场景驱动中设置设备的物理属性来避免“穿墙而过”。图3为开发过程中未添加碰撞检测程序效果图,从中可知,部分设备只有添加能执行碰撞检测的组件,才能使该设备在不影响性能的前提下具有碰撞检测功能。

Unity3D引擎中较常用的碰撞检测包围盒有 SphereCollider,WheelCollider,BoxCollider和MeshCollider等4种。根据机舱设备的特点和碰撞精度要求,采用Component-Physics-MeshCollider包围盒,使场景中设备与轮机员之间的碰撞检测具有良好的效果。

图3 分油机间未添加碰撞检测程序效果图

3.3局域网内的交互

利用Unity3D开发机舱资源管理模拟器,可实现机舱资源管理模拟器在局域网中联机协作训练的功能。不同轮机员可操作各自的客户端程序在同一个场景中进行操作,相互之间可看到对方的动作,共同完成机舱资源管理培训项目所要求的协同操作任务,提高训练效果。

在程序设计过程中,客户端与服务器采用C/S 结构。服务器相对独立,可支持多个客户端同时访问。服务器与客户端之间通过IP连接,通过远程过程调用传递数据,由此实现所有客户端都能看到原客户端的动作和交互操作等功能。[10]

4 机舱资源管理模拟器的技术实现

开发机舱资源管理模拟器主要用到Unity3D引擎,包括系统地形,系统物体,系统场景设计,以及碰撞、运动、镜头切换等脚本代码的编写和实现等。

4.1机舱资源管理模拟器平台界面

Unity用户界面(Graphical User Interface,GUI)控制利用的是OnGUI()函数,其特点是在控制脚本激活的状态下,允许在每帧调用。Unity3D引擎中提供了界面开发系统和相应的多种插件,在模拟器开发过程中,通过简单代码在Unity3D界面中搭建机舱资源管理模拟器的 GUI 界面,开发流程与其他GUI软件的开发流程类似。

4.2机舱资源管理模拟器训练场景开发

机舱资源管理模拟器训练场景的开发等同于游戏场景的创建。训练场景主要由机舱的房间布局以及机舱中的各种设备、管路和阀件等组成。根据机舱房间和设备尺寸的具体数据,训练场景可在3dsMax中构建。在构建模型的过程中,需注意多边形模型的优化问题。由于虚拟现实的机舱设备较多,因此数据量较大,对模型进行充分优化可缩减网络文件的大小,有利于后期交互的实现。此外,在贴图时要注意选取母型船实船图片,贴图的命名应使用英文。该模拟器中部分场景设计见图4~图6。

图4 主机舱场景设计

图5 空压机间场景设计

图6 应急发电机间场景设计

4.3远程可交互技术的设计与实现

机舱资源管理模拟器中的远程可交互主要指在局域网内通过多台计算机及其输入输出设备,实现人与计算机对话,包括交互界面设计和漫游设计等。在进入系统后,界面的左上方会呈现出多种供选择的漫游模式,包括手动导航、自动导航和小地图导航(见图7)等。点击自动导航按钮,系统将按照程序规划路线运行,并在左上角的小地图中实时展现;点击手动导航按钮,用户可通过键盘方向键和鼠标进行视角的改变,并可通过点击小地图迅速切换到相应场景中。在程序的设计过程中加入了碰撞检测算法,使得轮机员不会穿过墙体和设备等障碍物,保证了虚拟现实环境的真实性。该模拟器设置了与二维VLCC模拟器通信的接口,以便后期与硬件盘台对接。部分程序代码如下。

图7 小地图导航

1) 小地图代码

function OnGUI () {

bX=center Object.transform. position.x * mapScale;

bY= center Object.transform. position.z * mapScale;

bX= center Object.transform. position.x * mapScale;

bY= center Object.transform. position.z * mapScale;

GUI.Draw

Texture(Rect(mapCenter.x-128,mapCenter.y-128, 256, 256), radarBG);….}

2) 自动导航代码

function Update(){

if(get camera.camera1.enabled==true){//center object select center Object=Game Object.Find("AutoCamera");}

change=Time.realtimeSinceStartup;}

根据设定坐标, 到应急配电板第一屏:

if(transform.position.x>(transform.position.z-2035)*-1.3&&(-224-transform.position.x)>(transform.position.z-2035)*-0.89){GUI.Label(Rect(Screen.width*(1f/2f-90f/screenw), Screen.height*30f/screenh,Screen.width*600f/screenw, Screen.height*150f/860f), "应急配电板第一屏");}

3) 图形界面交互代码

var guiSkin:GUISkin;

private var currStyle:int=1;

function OnGUI(){

GUl.skin=guiSkin;

var hw:int=Screen.width/3;

GUI.Box(Rect(0,Screen.height-210,Screen.width,210),"");

GUI.BeginGroup(Rect(0,Screen.height-210,Screen.width,210);

……}

在设计远程可交互程序时,每完成一种功能或一个模块,随即进行功能测试,以保证所编写代码的正确率,尽力减少Bug。在程序编写任务完成后,进行系统整体测试。

5 结束语

通过阐述基于Unity3D 的可远程交互式机舱资源管理模拟器,将虚拟现实技术引入到机舱资源管理模拟器的研究与开发中,实现了机舱资源管理模拟器所要求的团队协作配合训练、通信与沟通训练以及应急处理等,可更好地满足海事局对机舱资源管理评估的要求,尤其是在远程培训方面,将给在职船员提供极大的方便。开发完成后的机舱资源管理模拟器将填补国内外机舱资源管理模拟器研制领域的空白。

[1] 曾鸿,张均东,何治斌,等. 船舶轮机模拟器CAVE 系统设计与关键技术研究[J]. 系统仿真学报, 2012, 24(1): 123-126.

[2] 王海燕,刘晓晨,武晓英. 一种分布式船舶轮机模拟器[J]. 系统仿真学报, 2011, 23(4): 687-690.

[3] 孙俊,陈辉. 轮机模拟器主机工作过程建模与实时仿真[J].计算机仿真, 2007, 26(11): 316-319.

[4] 王永坚,杨国豪. 基于Web3D虚拟轮机模拟器操作训练系统的建构[J]. 集美大学学报:自然科学版, 2009, 14(2): 165-169.

[5] YOUNG C. The STCW Convention[Z]. 1995.

[6] 吴志达.一个基于Unity3D游戏引擎的体感游戏研究与实现[D]. 广州:中山大学,2012.

[7] 蒋德志,赵晓玲.基于轮机模拟器的“机舱资源管理”研究与实践[J].中国航海,2011,34(1):22-25.

[8] ZHU Hongming, WU Dianliang, FAN Xiumin. Interactive Assembly Tool Planning Based on Assembly Semantics in Virtual Environment[J]. International Journal of Advanced Manufacturing Technology,2010,51(5-8):739-755.

[9] HU Feng. On the Factors Influencing the Work Efficiency of the Global Virtual Team and Possible Solutions [J]. Journal of Yunnan Nationalities University, 2005,22(6): 105-108.

[10] CWILEWICZ R, TOMCZAK L.Improvement of Ship Operational Safety as a Result of the Application of Virtual Reality Engine Room Simulators[C]. 6th International Conference on Computer Simulation Risk Analysis and Hazard Mitigation, 2008.

DevelopmentofEngineRoomResourceManagementSimulatorBasedonUnity3D

JIANGDezhi1,YAOWenlong1,2,ZHANGJundong2
(1. Marine Engineering Department, Qingdao Ocean Shipping Mariners College, Qingdao 266071, China; 2. Marine Engineering College, Dalian Maritime University, Dalian 116026, China)

The Unity3D platform is used to improve the display reality and the interaction function of the engine room resource management training system. The general design scheme of the engine room resource management simulator with virtual reality based on the 3dsMax/Unity3D are proposed. The program development process with Unity3D is introduced with the key technologies highlighted. The 3D models of the engine room equipment of the Very Large Crude Carrier(VLCC) are constructed with 3dsMax. The dynamic interaction of virtual scene are developed by using Unity3D kit and Java3D to realize the integration of the 3D marine model data and 2D spatial data, collision detection and 3D marine engine room virtual wandering. The test with real marine data shows that the developed simulator system can well meet the requirements of engine room resource management training with higher efficiency.

ship engineering; engine room resource management; simulator; Unity3D; virtual reality; interaction design

2015-04-18

国家自然科学基金(61374102);中远集团科技计划项目(2012-1-H-004);山东省高等学校科技计划项目(J13LN72)

蒋德志(1969—),男,山东潍坊人,教授,硕士,主要从事轮机模拟器、机舱资源管理教学研究以及模拟器的研究开发。

E-mail: jiangdzh@coscoqmc.com.cn

1000-4653(2015)03-0013-05

U666.158;U676.4

A

猜你喜欢
轮机机舱模拟器
船舶机舱火灾的原因分析及预防
驾驶模拟器转向系统的设计与研究
了不起的安检模拟器
船舶机舱通风相关要求及常见关闭装置分析
盲盒模拟器
划船模拟器
船舶机舱常见消防隐患及防控
通过斗轮机位置数据共享实现两机防撞
适合多种显示设备的轮机模拟器GUI缩放技术
船舶轮机常见的故障