基于Unity3D的地震应急场景模拟设计
2018-07-16王建谭星
文/王建 谭星
虚拟现实技术(Virtual Reality,简称VR)正在迅猛发展,可以使用户沉浸到创建的虚拟环境中。我国是地质灾害多发国家,严重危害民众生命财产安全,影响国家经济有序发展,“应急产业”受到各国政府和民众越来越多的关注,相应的安全生产、应急、救援技术和产品研发应用也得到了高度重视。利用计算机虚拟仿真技术模拟重现各种应急场景的真实性具有危险性小、成本低等优点。Unity3D软件是一个创建三维视频互动动画的多平台综合开发工具,效果逼真,已成为开发VR项目的主流引擎。通过3D视频动画的地震场景,可以让人们意识到地震的危害,从而更加关注地震信息,提高安全意识以及掌握地震灾害来临时的各种应急方法和急救措施。
1 系统总体设计
使用Unity 3D做一个地震的应急模型,包含地面震动、地震波、房屋的倒塌及周围场景变化。
1.1 房屋模型设计
房屋模型是地震场景的核 心体现,模拟地震通过房屋模型所体现。考虑到需要做倒塌效果,采用堆积木的形式建立房屋模型,一层层的堆砌最终形成一个完整的房屋,然后房屋的倒塌效果便可以通过一块块的模型运动来体现。本次采用一个主题房屋以及两个背景房屋来模拟地震,地面震动使用窗口抖动来实现。
1.2 碰撞设计
添加碰撞体组件。碰撞体是物理效果组件里面的一种,分为了3D和2D组件,碰撞体组件要与实际物体一起添加到Game Object中才能触发出各自的碰撞效果,如果两个物体撞在一起,只有在有碰撞体组件是才能发生碰撞,否则将会互相穿透而过。本文采用主要的碰撞体组件为盒碰撞体(Box Collider)与网格碰撞体(Mesh Collider),这两类碰撞体共同完成整个程序的地震效果。
1.3 其他景物模型
包括两部分:一部分作为可表现效果的碰撞模型,一部分为非碰撞模型即背景贴图,需要用到Unity 3D里面的Cube工程,在Game Object中的3D project可以找到需要的Cube对象,将其添加进模型职中。可以在地面设置多个Cube,对每个Cube对象进行盒碰撞体组件的添加,赋予其物理碰撞效果,与房屋中添加了物理碰撞效果组件的物体发生正确碰撞。
1.4 地震波效果
地震波是地震来临所产生的剧烈波动,有横波和纵波,本文选用横波效果,由一个圆环组成的来回振动的地震波模型,需要为圆环添加Animator模块,如图1所示。此模型制作简单,表现逼真,通过圆环的缓慢收缩和舒张来表现地震来临前的地震波波动,当来临时伴随这房屋的倒塌,地震波的收缩和舒张变得更剧烈,与房屋倒塌相对照。
1.5 镜头效果
镜头的运动轨迹用来标明地震发生,分为两个部分,第一部分是地震来之前的轻微抖动,第二部分为地震过程当中的剧烈抖动,可设置两个过程的镜头轨迹。初始镜头设置为整个模型的右下角位置,设定完毕后需要用程序与镜头关联,以镜头的移动为基础,做出抖动的效果,例如固定X,Y轴不动,使镜头的Z轴在原点对称两端做上下移动可以做出地震来临前的缓慢振动,然后使镜头的整个Z平面做快速的上下移动模拟地震来临时的剧烈振动的效果,镜头控制部分程序如下:
2 系统测试
在电脑运行的地震前后对比图如图2所示,前后场景变化效果较为明显,实现房屋倒塌且伴随地震的振动,达到了地震应急场景模拟的基本要求,整个房屋的倒塌破损度高,流畅度也能达到要求,其他的模型也能按照预期的效果完成。经过手机测试,测试手机也能较好兼容整个应用程序,呈现的效果与软件渲染效果基本一致,导出的视频约8秒,存储量为1.5MB。
3 结束语
本文采用Unity3D软件及C#语言编程设计了地震应急场景模拟,较好地实现地震时房屋倒塌、地表振动和周围景物破坏,播放流畅度达到要求,体现了虚拟现实技术在应急仿真模拟方面的优势。
图1:地震波模型的Animator模块
图2:地震前后对比图