基于虚拟现实技术(VR)的校园安全消防实训系统
2020-07-04曾文辉
曾文辉
摘要:消防安全是我国历来非常重视的安全问题,尤其是校园安全消防问题。因为学校是人流比较密集的场所,一旦火灾发生,将会造成严重的人员伤亡和财产损失。然而,传统的消防安全教育存在很大的局限性,课本授课、视频授课的可互动性不强,而现场模拟消防演练因为受限于场地、环境和成本等因素,效果并不理想。虚拟现实技术(VR)的出现,就突破了以上受限因素的局限,这是一种体验与交互一体的全新模式。将VR技术与消防安全教育进行深度融合,研究基于VR技术的校园安全消防教育的设计与实现方法,建立基于VR技术的校园安全消防实训系统。
关建词:消防安全;虚拟现实技术(VR);可互动性;深度融合
中图分类号:TP3 文献标识码:A
文章编号:1009-3044(2020)15-0246-03
校园的消防安全主要是集中于学生宿舍、机房、化学实验室等用电生活区域和存放易燃易爆化学品的实验室。由于受场地、成本等因素的限制,举办一次大规模的消防演练不但影响学生在校园的生活,而且危险性也高。随着近年来虚拟现实技术(VR)的发展和普及,基于该技术开发一款具有高沉浸感和高互动性的《基于虚拟现实技术(VR)的校园安全消防实训系统》。本文将以学生宿舍发生火灾为例,适配HTC View可穿戴式头盔设备,使用Unity、3D Max、Photoshop等软件对该系统进行设计和开发。
1系统总设计
1.1系统整体设计
基于虚拟现实技术(VR)的校园安全消防实训系统是以学生宿舍为主要场景,分为学生宿舍室内消防安全排查交互场景和宿舍室内火灾逃生两个模块进行设计和開发。学生宿舍室内消防安全排查交互场景模块主要是扮演宿舍管理员角色,在学生宿舍中进行消防安全排查操作;而宿舍火灾现场逃生模块主要是发生火灾时,进行室内逃生,包括如何使用灭火器进行灭火,如何使用消防斧头进行破门。本系统使用3ds Max三维建模软件进行模型的建立,模型包括:学生宿舍楼、宿舍室内、各种大功率电器,人物角色等;使用Unity引擎制作交互;使用Photoshop制作uI界面。
而校园宿舍内发生火灾原因一般为发生漏电或者使用大功率电器,所以本系统将排除其他发生火灾的原因,基于上述原因进行开发。发生火灾的原因对应使用什么类型的灭火器是非常重要的,所以在发生漏电或者使用大功率电器所发生火灾当中,不能使用泡沫灭火器,只能使用干粉灭火器。为了提示如何下一步的操作,本系统将会采用模型边缘高光的方式进行提示。
1.2系统功能分析
整个系统将会分为消防隐患排查和火灾现场逃生两个场景模块。消防隐患排查模块是通过操控HTC View头戴式虚拟现实设备中的手柄在学生宿舍室内进行消防隐患排查,主要是检查灭火器气压是否在标准线内,排查宿舍内是否使用大功率电器,是否存在乱拉电线、网线的现象,如果存在则根据提示进行没收和整改(主要流程请参考图1)。
火灾现场逃生模块通过佩戴HTC View头戴式头盔,模拟出室内火灾现场,操控虚拟现实设备手柄进行灭火逃生。使用灭火器的期间,需要正确操作如何使用灭火器,第一步观察灭火器气压表气压是否达标;第二步将瓶体颠倒几次,使筒内干粉松动;第三步拔掉灭火器的保险销;第四步左手握住喷管,右手提着压把,在距离火焰两米的地方,右手用力压下压把,左手拿着喷管左右摇摆;使干粉覆盖燃烧区,直至把火全部扑灭。最后检查一楼大门是否上锁关闭,如果有则使用消防斧进行破门(主要流程请参考图2)。
2系统实现
2.1火焰和喷雾特效实现
基于虚拟现实技术(vR)的校园安全消防实训系统场景的搭建因为是基于火灾隐患而开发的虚拟实训系统,所以真个交互场景中将会实现大量的粒子特效,主要包括火焰和灭火器喷雾粒子特效。在模拟真实火灾场景中,火焰的数量和火焰的大小必须控制得非常得当,才能模拟出真实室内火灾氛围。而实现火灾时室内的景象,不紧需要粒子特效的还原,还要使用Unity引擎自带灯光效果和火焰燃烧时所需的音效进行烘托。灭火器所使用的喷雾特效必须控制粒子的生命周期等。
2.1.1火焰特效实现
真实的火焰效果,通常包括:火、火星、火光和烟雾等组成部分,火焰燃烧的同时会对周围环境进行烘焙。针对火焰组成部分,可以在Unity中分别创建粒子系统组件实现,详细层级结-构参考图3。在创建火焰的相关粒子系统时,要先思考粒子发射的方向和使用的粒子系统的哪些参数模块。新建的粒子系统默认朝前播放粒子,所以需要x轴旋转-90°,改为朝上发射。基础模块,主要控制粒子生命时长、大小、方向、颜色、重力等,主要设置Looping参数让粒子周期循环发射,粒子初始颜色不需要改变,因为本系统火焰粒子特效在Render参数模块使用多帧火焰图进行渲染,如图4。Gravity Modifier重力修改器,因火为升力,此处需改为-1,这样火焰的方向就是向上。其余参数如Duration粒子发射时长、Start Speed粒子初始速度、Start Lift-time单个粒子的生命周期等参数,请自行根据项目需求进行更改。
2.1.2喷雾特效实现
喷雾粒子特效主要是应用于灭火器灭火时喷射的干粉烟雾,实现起来比火焰特效要简单。总体上来说,火焰粒子初始方向是向上的,而灭火器喷雾粒子的发射方向是跟随灭火器喷嘴朝向发射的,而且喷雾发射的距离是有限的,有效距离大概是2.5米左右,所以粒子的Start Lifrtime个粒子的生命周期大概设置为1-2.5区间,这样会让粒子的生命周期有一个随机的变化。而喷雾发射时会有一个初始速度的变化,所以Start Speed粒子速度设置为1.1.5区间。喷雾粒子从喷射的初始时颜色呈现出来是白色的,当粒子喷射的生命周期到达末期时,粒子会变得透明,所以Color overLifetime模块的Color设置成白色渐变到透明。喷射出去的喷雾粒子特效现实中是呈圆锥形,所以在Shape模块中设置Shape参数为Cone。喷雾粒子的其他模块参数,请自行根据项目需求进行更改。具体效果请参考图5。
2.2系统交互功能实现
虚拟现实系统跟普通的三维动画的本质区别在于是否有人机交互,交互是虚拟现实系统的核心,尤其是这种实训类虚拟现实系统。因为本系统是使用Unity进行开发,可适配HTCView、Oculus等可穿戴式虚拟现实设备,所以需要使用Steam-VR Plugin插件进行开发,而真个系统机会基于UniIv自身的程序API和SteamVR Plugin插件的API进行交互开发。整个系统主要是两个模块,一个是排查隐患模块,另一个是火灾逃生模块,那么交互的部分也主要集中在这两个模块进行开发。
2.2.1排查模块交互实现
在排查模块中,主要是排查是否有使用大功率电器,或者违规乱接电线和网线,所以使用手柄进行捉拿大功率电器,然后进行弹出uI界面进行说明。创建一个新的基于Unity的C#脚本,因为在交互中,使用到HTCView虛拟现实设备手柄进行操作交互,而这些操作将会基于SteamVR Plugin插件的底层API进行调用,所以在脚本中必须先引用Valve.VR.Interaction-svstem空间名,然后具体实现的方法有OnHandHoverBegin(Hand hand):当手柄触碰到相应对象时触发该方法,OnHand-HoverEnd(Hand handl:当手柄停止触碰相应对象时触发该方法,HandHoverUpdate(Hand hand):当手柄触碰到相应对象时每帧调用,以上三个方法都是操控HTC View手柄时相对应的方法。当手柄拾取起违规的电器时,使用game Object.SetActivefalse)或者Deslroy(gameObjectl将违规电器隐藏或者销毁,然后uI界面提示为什么违规等文字信息。
2.2.2灭火器交互实现
在火灾逃生模块中,最主要的如何使用灭火器进行灭火的交互,使用灭火器灭火有两个交互点。在使用灭火器灭火时要先将保险销拔掉,然后扔掉。这里手柄扔保险销后,保险销要有一个掉地上的物理重力,所以选择保险销对象,添加一个Rigidbodv刚体组件,该组件是模拟物理效果的,然后使用gameObiect.GetComponentO.useGravity=true控制刚体组件的重力效果是否开启,true就是开启,false就关闭。接下来,只需要将灭火器喷嘴对准火源,按下手柄的Trigger键,激活灭火器的喷雾特效进行灭火。该交互主要使用到监听手柄的Trigger键,当监听到按下Trigger键时,激活喷雾特效,当释放Trigger键时,停止喷雾特效,代码如下:
还有一个灭火的交互点,主要就是当喷雾特效触碰到火焰特效时,火焰特效有一个组件变小的过程。在灭火器喷雾特效和火焰特效的碰撞中,必须将两种粒子特效系统中的Collision参数模块中的Send Collision Message选项勾上,这样才能触发粒子特效的碰撞事件,而控制火焰粒子特效的火焰大小参数是Emission参数模块的Rate overTime参数,当参数为0时,火焰特效将会消失,所以需要使用代码控制该参数。代码如下:
3总结
在未来的虚拟现实领域中,这种实训类型的虚拟显示系统应用将会越来越多,将会涵盖我们的衣食住行,所以将来会代替成本高的实训活动,降低操作和学习的成本。