APP下载

基于Unity3D的危情生存模拟训练系统

2015-07-31杨志和

上海电机学院学报 2015年5期
关键词:模拟训练虚拟现实物体

杨志和

(上海电机学院 电子信息学院,上海201306)

危情生存就是生活中可能会遇到的危险情况及在此情况下的生存技能与对策。危情分为来自自然界和社会两方面的安全威胁;具体地说,来自自然界的安全威胁主要是地震、洪、泥石流、山火和雷击等;来自社会的安全威胁主要包括火灾、车祸、殴打、抢劫、绑架、枪击、诈骗、跌落等。为了提高人们特别是青少年的安全意识和自我保护能力,危情生存培训变得必不可少。由于很多生存技能实训项目存在着危险性大、成本高、管理难度大等问题,使得真实场景的实训不切实际;而三维模拟实训的安全性、可靠性、实用性及取得的效果较好[1]。

Unity3D是一个全面整合的三维引擎,是一个让开发者轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等互动内容的综合型开发工具[2]。Unity的编辑器可运行在多种操作系统下,开发出的系统可发布至各种PC和手机平台上,利用Unity web player插件可支持网页浏览与操作。近年来,利用虚拟现实或仿真游戏开展虚拟教育培训的研究案例越来越多,包括基于Unity3D的煤矿井下逃生训练系、基于Unity3D的消防3D情景实训系统[3]、基于Unity3D的加油车虚拟训练系统[4]、基于Unity3D的汽车发动机虚拟装配训练考评系统[5]、基于Unity3D的挖掘机模拟训练系统[6]等,这些系统都是虚拟培训领域的典型应用案例。

通过对危情生存模拟训练项目的研究,本文借助Unity3D平台,基于虚拟现实与动漫多媒体技术,研究了危情生存模拟训练系统,给出了系统总体架构和技术路线,分析了系统开发中关键技术,并给出了相应的解决方案。

1 系统的需求分析

通过对危情生存模拟训练项目的研究,本文归纳、整理了危情生存的知识点和相关课程体系,建立了危情模型和危商能力素质模型,通过行为建模与数据抽象,建立了危商能力训练平台模型,通过改变模型及其参量可以模拟各种不同危情场景。

本文建立的危情生存模拟训练系统的基本架构如图1所示。图中,在预先设定的危情模型下,以学习者面对模拟的危情环境的应急反应行为数据为基础,将其应对行为作用于虚拟的外部客体(危险场景或灾害情境)中,对产生的事件进行量化(基于人、事、物的三维数据)后可得到仿真反馈量化模型;仿真环境则将危情三维场景模型数据库的资源导入Unity3D平台,制作成基于视觉、听觉、嗅觉甚至触觉上的危情重现;通过虚拟现实与人机交互技术,构成完整的危情生存交互式模拟训练系统。

图1 系统基本框架图Fig.1 Diagram of basic system frame

根据危情生存模拟训练的要求,系统需要具有以下功能:

(1)理论学习功能。进行“三生”,即生命、生存、生活教育,详细介绍危情的分类、防范与预防、应急处置等知识。

(2)基础培训功能。让学习者完成基本安全教育知识点的学习,包括体力训练、情绪掌控、求救与抢救知识等。

(3)三维模拟环境实训功能。通过三维互动游戏的方式,实现若干类危情事故的生存实训,进一步巩固所学基础理论知识,掌握与危情自救相关的实际应用本领与技能,培养危商素质。

(4)在线考试功能。通过在线题库实现学习者在线理论考试或模拟实战考试,并实现自动评分、考后查分等功能。

2 系统设计

2.1 系统总体设计

从系统的层次结构看,危情生存模拟训练系统的总体架构主要包括表现层、应用层、驱动层、集成层、资源层等5个层次,如图2所示。

图2 系统总体架构图Fig.2 System architecture

(1)表现层。该层是用户与系统互动的人机交互界面,也是系统的入口,通过底层业务构件的支持,基于构件的混聚(mash-up)来开发新的业务流程,实现模型的可视化建构。

(2)应用层。该层集中了系统的核心应用功能,包括理论学习区、基础培训区、3D模拟实训区、在线考试区等系列应用。

(3)驱动层。该层是系统的核心技术层,也称为服务层,它集成了Unity3D服务引擎和一系列常用组件,如ActiveX组件、通信报文组件、任务流组件和控制流组件等;主要是将常用的业务模块封装成专门处理特定信息的服务组件或构件。

(4)集成层。该层是底层数据与服务的整合层,它把下位的资源层的程序与数据转换为上位的驱动层可以操作的服务组件。

(5)资源层。该层提供上层调用所需的基本数据与服务组件,即数据资源和控制资源。数据资源包括二维数据资源(*.png、*.jpg、*.bmp文件)、三维数据资源(*.dts文件)、日志文件(*.log文件)、配置文件(*.ini、*.xml文件)等。控制资源包括学习、实训、管理、评价等组件及其属性信息等。

2.2 系统技术路线

本文给出了危情生存模拟训练系统构建的技术路线,如图3所示。

图3 系统技术路线图Fig.3 System technical roadmap

(1)基于3DStudio Max设计系统原型,即系统的环境与场景模型,这是模拟现实互动过程的模型。根据类似现实事件的地形及影像数据,通过人工加工与处理,以危商知识模型数据为控制流来制作人物和工具模型,并使用渲染技术加以预处理。

(2)将特定场景的三维模型数据导入到Unity3D引擎中,然后导入二维场景模型数据库,添加碰撞检测设置、训练模型等操作,并将场景所配套的音频、视频文件进行集成,生成面向特定危情场景的互动框架。

(3)制作系统所需的音视频文件。其中,音频文件采用真人语音录制;音频、视频文件使用Adobe Premiere Pro编辑与合成;动画文件使用Adobe Flash Professional制作。

(4)通过编写脚本实现危商能力素质模型所要求的面向特定场景的行为模型,类似于游戏通关模型,这也是本文系统的核心。

2.3 系统中关键技术的应用

2.3.1 虚拟现实技术 本文研究的危情生存交互式模拟训练系统是一个虚拟现实系统。系统由输入部分、输出部分、虚拟环境数据库、虚拟现实等组成,如图4所示。

图4 虚拟现实系统的组成Fig.4 Composition of virtual reality system

虚拟现实系统的核心模块是传感器、交互式控制系统和虚拟环境。传感器是使人产生沉浸感的相关设备,涵盖人类对外部世界的各种感官,如视觉上的头盔式立体显示器、面向手感的数据手套、面向体感的数据衣和数据鞋、面向嗅觉的气味发生器、面向听觉的三维音响等[7]。学习者通过数字化的头盔、手套和话筒等输入设备为计算机提供输入信号;虚拟现实软件收到输入信号后加以解释,然后对虚拟环境数据库进行必要更新,调整当前虚拟环境视图,并将这一新视图及其他信息,如声音等传送给输出设备,以便用户及时看到效果[8]。

系统中主要应用了基于多媒体技术的音响仿真模块、基于惯性感应器的运动仿真模块、基于计算机图形图像技术和三维技术的视景仿真模块、基于数字手套的操作仿真模块。其中,通过环绕立体声的制作技术实现了场景的音响效果;通过固定在人体特定部位、集成了加速度计、磁力计和陀螺仪等功能的惯性传感器来采集人体的动作信息;通过无线传输模块与系统进行互动。各传感器相互通信构成了无线传感网络,捕获人体运动信息。这些数据与通过数字手套捕获到的手部动作数据一起,经过输入模块与控制系统实现互动。在输入和反馈模块中,都要对场景进行三维渲染和绘制,形成实时逼真的互动场景。

2.3.2 碰撞检测技术 在碰撞检测的实际应用中,首先判断两个凸面体是否相交。基于凸面体相交检测的碰撞检测算法具有极高的检测精确度,在多个测试样本中,不会发生漏判或误判。但算法在提高碰撞点检测精确度的同时,也提高了模型的复杂度,从而导致计算复杂度的增加;若计算复杂度大到一定程度,碰撞检测的实时性就不能保障。

为了进一步提高碰撞检测的实时性,本文的危情生存模拟训练系统引入了最小包装盒法[10],并对算法作了改进。最小包装盒算法的碰撞检测时间对两物体是否碰撞相当敏感,在2个物体未发生碰撞时,该算法能迅速检测出它们没有碰撞;而当2个物体发生碰撞时,则对发生碰撞的物体内的凸面体部分进行凸面体相交检测,这样能减少碰撞的检测时间。由于仿真系统中大量的物体处于静止状态,用包装盒法能迅速排除很多未发生碰撞的物体,提高了检测速度。为同时满足碰撞检测的实时性与检测精度高的要求,经过多次对比、分析,系统使用了基于相交碰撞检测算法与包装盒算法相结合的方法[11],既保证了检测的精度,又提高了检测速度。

2.3.3 高真实感图像实时绘制技术 多细节层次(Levels of Detail,LOD)技术是一种有效的图形生成加速方法,也是一种三维渲染技术。该技术在给定的图形处理软、硬件条件下,在不影响画面视觉效果的前提下,根据视觉重要性原则,通过逐次简化景物的表面细节来减小场景的几何复杂度,从而提高图形绘制的效率[12]。在计算机图形学中,LOD技术的产生是为了减少某些复杂三维模型的运算;当视点变化时,所选取的细节层次模型各不相同,根据视野内物体的距离、重要程度或速度来确定要描绘的细节。如当视点离物体较近时选用描绘细致的模型,而当视点离物体较远时则调用较粗略的模型;低速或重要的物体采用较细致的LOD,反之,则选择较粗略的LOD。LOD技术是根据需要来选择不同细节程度的物体表达方式,由于图形计算工作量减少的物体通常是距离较远的或是高速运动的物体,故视觉上因使用LOD技术而造成的模型质量的下降通常是难以察觉的[13]。LOD技术的主要难点在于如何快速构建并选择几何体的多层次细节模型,以及不同层次细节之间的自然过渡,避免在不同细节层次间切换引起视觉上的突跳感。本系统采用了一种改进的算法。该算法采用小波变换来得到几何模型的多精度表示,其优点是能在简化模型的同时较好地保持原模型的局部特征;也可以通过插值方法在近处和远处这两个区域间的几何细节实现光滑的视觉过渡,从而形成几何细节平滑过渡。

2.3.4 系统中的渲染技术 遮挡剔除是指当一个物体被其他物体遮挡时,不再对其进行渲染。常用遮挡剔除算法有两种[14]:预处理遮挡剔除算法和实时遮挡剔除算法。预处理遮挡剔除法就是预先计算物体间的空间关系,并存储渲染前需要预计算和预留额外存储空间;在预处理遮挡剔除过程中,使用虚拟相机(视点)构建潜在可见对象集的层级视图,并应用于整个场景。运行时,各相机使用这些数据来确定可见和不可见物体。有了该信息,Unity3D将确保仅发送可见对象进行渲染,从而减少绘制调用的次数,提高系统运行性能。在Unity3D里,遮挡剔除依靠中间件组件Umbra,该组件由Umbra软件公司开发。Unity3D中采用潜在可视集合(Potentially Visible Set,PVS)和入口(Portal)的算法控制 Umbra的UI,在 Window→Occlusion Culling→Bake Tab下。

本系统开发过程中大量地运用了公告板(billboard)渲染技术[15],大大减少了场景渲染计算量,提高了系统的流畅度,降低了对开发环境配置的要求。公告板渲染技术主要是用于没有固定表面效果的物体的快速展现,如烟雾、火焰、爆炸、云彩、树木等。公告板技术与Alpha纹理、动画技术结合混合使用,能够以极低的系统资源实现丰富的绘制效果。

3 系统实现

本文实现了危情生存模拟训练系统的界面、场景和角色模型等的设计,并完成了角色模型、角色动画的制作,开发了主要程序代码,经过多次调试直至控制模型基本流畅。系统使用了由Unity3D引擎提供的高效的界面搭建功能组件,并利用OnGUI()函数加以控制,通过帧来调用脚本。系统将已经完成的Unity3D模拟训练系统发布成.exe文件格式和.apk文件格式,然后分别在PC机和Android手机上进行真机测试。

本文研究的危情生存模拟训练系统主要包括以下4部分:理论学习模块、应用基础实训模块、在线模拟训练模块和在线考试模块。依照实训内容的要求,各模块提供相应的实训功能:

(1)理论学习模块。进入该模块,首先通过选择教材、篇章和小节来确定需要学习的知识;然后就能进入各种实训场景,并通过对话、视频、图片等方式进行个人安全基本知识的学习。

(2)应用基础实训模块。在应用基础实训中,可以根据需要选择学习的内容和场景;在实训时,还可以选择个人防护装备、外部环境等。实训内容包括日常习惯与安全意识、危情处置流程学习、实际操作演练等。最后,对于本次实训学习,完成一次综合考评。

(3)在线模拟训练模块。系统以三维仿真技术为基础平台,搭载定制化开发的立体显示设备,用户佩戴立体眼镜即可在任意环境下呈现不同的训练画面。模拟教学系统分别为初级学习和强化训练者提供了人性化的学习方式,其包含了两种学习模式:顺序模式和自由模式。顺序模式中,可以根据危情的正确处理流程进行逐步学习;在每项任务开始前会弹出提示框,提示下一步应该执行哪项任务,这样可以帮助学习者快速了解相关应急处置流程。自由模式则可按照学习者自身需求,有针对性地对某项任务进行深入学习,不需要每次都重新开始学习整个流程。

(4)在线考试模块。在线考试是对实训的一次综合考核过程。学习者可自行选择模拟场景,参加模拟考试,考试结束后可立即查询考试成绩。图5为地震逃生模拟训练场景。

图5 地震逃生的模拟训练场景Fig.5 Simulated training scene of earthquake escape

4 结 语

为增强青少年的安全意识和自我保护意识,帮助他们提高预防安全隐患和正确处理伤害的能力以及危情生存能力,本文借助Unity3D平台,基于虚拟现实与动漫多媒体技术,研究了危情生存模拟训练系统,介绍了系统主要框架和关键技术。该系统基于虚拟现实技术,在模拟环境中进行安全教育与训练,提高了学习者处理各种危险突发事件的能力,达到实战训练的效果;可以广泛应用于青少年安全教育和突发事故应急处理能力的模拟训练,具有比较广泛的应用前景。

[1] 肖梦雪.虚拟现实技术与3D立体电影[J] .中国传媒科技,2012(6):35-37.

[2] 干建松.基于Unity3D的室内漫游仿真系统[J] .淮阴师范学院学报(自然科学版),2011,10(6):515-518.

[3] 熊玉梅.虚拟环境中物体碰撞检测技术的研究[D] .上海:上海大学,2011:97-98.

[4] 李远鑫,蒋海鸥,徐亦飞,等.基于Web3D的交互式虚拟社区[J] .计算机工程,2011,37(11):288-290.

[5] 韩万江,姜立新.系统工程与软件工程[J] .计算机应用,2010,30(S1):212-214.

[6] Menard M.Game Development with Unity3D[M] .[S.L.] :Delmar CengageLearning,2012:75-78.

[7] Wang Xiangyu,Dunston P S,Proctor R,et al.Reflections on using agame engine system for construction excavator operators[J] .Iaarc,2011(19):631-636.

[8] 宣雨凇.Unity3D游戏开发[M] .北京:人民邮电出版社,2012:45-46.

[9] 孟祥旭.人机交互基础教程[M] .2版.北京:清华大学出版社,2010:112-113.

[10] 何岗,李俊,张锋.基于Unity3D的消防3D情景实训系统的设计与实现[J] .软件产业与工程,2014(6):43-48.

[11] 朱瑞瑾,巩秀钢,杨梁.基于DirectX的模拟驾驶系统的设计与实现[J] .山东理工大学学报(自然科学版),2010,24(6):88-91.

[12] 曾勇.基于Unity3D的挖掘机模拟训练系统研究[D] .西安:长安大学,2013:97-98.

[13] 郭芮,蒋明,郑劼恒,等.基于Unity3D的加油车虚拟训练系统设 计[J] .机 械 设 计,2014,31(3):84-87.

[14] 潘丹.基于unity3D的手术训练游戏的设计与实现[D] .济南:山东大学2014:133-134.

[15] 倪萌.基于Unity3D的汽车发动机虚拟装配训练考评系统的设计与实现[D] .北京:北京工业大学,2014:75-76.

猜你喜欢

模拟训练虚拟现实物体
深刻理解物体的平衡
我们是怎样看到物体的
模拟训练(二)
REALITY BITES
风口上的虚拟现实
模拟训练(十一)
模拟训练(十)
虚拟现实技术向科幻小说借灵感
为什么同一物体在世界各地重量不一样?
悬浮的鸡蛋