刘欣倩,樊 娟
(1.西安建筑科技大学,陕西 西安 710055;2.中煤科工集团西安研究院有限公司,陕西 西安 710000)
基于Unity3D煤矿矿井突水事故的三维仿真研究
刘欣倩1,樊娟2
(1.西安建筑科技大学,陕西西安710055;2.中煤科工集团西安研究院有限公司,陕西西安710000)
摘要:随着三维虚拟现实技术的快速发展,在对煤矿矿井突水事故可视化的研究中,文章利用目前应用最广泛并具有强大多语言多平台编辑能力的Unity3D引擎,模拟矿井突水事故的发生,用3dMax实现矿井巷道建模、以Unity3D虚拟现实为平台实现对巷道模型的渲染以及突水的模拟,并用JavaScript开发语言实现对场景以及模型的控制。
关键词:煤矿突水;Unity3D;三维仿真
煤矿矿井突水事故由于受到地质构造以及不规范开采的影响,造成的人员伤亡以及经济损失在五大矿井灾害中排名第二。一旦发生突水事故,由于其突发性以及继发性,轻则损坏井下工作设备或被迫停产,重则完全淹没矿井巷道以及造成人员伤亡。因此,对于突水过程可视化技术的研究是目前矿井突水研究的主要方向。
Unity3D引擎是一个多平台的三维虚拟开发工具,一般用于三维网络游戏、建筑可视化以及三维动画等方面。由于Unity3D具有编辑器功能集中、跨平台支持、可导入多种类型的文件、多语言脚本编辑功能、强大的地形编辑器以及提供粒子系统渲染等特点,因此,近几年广泛用于各类虚拟仿真设计开发以及网络新媒体的应用设计方面。目前,Unity3D引擎可将同一项目发布到PC机、Web浏览器、手机端IOS和Android等各种平台,市场应用前景较好。
本文利用Unity3D平台,结合3Dmax建立的巷道模型,模拟实现煤矿矿井巷道突水事故。整个过程包括巷道建模,贴图、渲染以及Unity3D脚本编程。
1.1Unity
Unity3D软件编辑窗口主要包括:场景窗口(Scene)、工程窗口(Project)、层次结构窗口(Hierarchy)和检视窗口(Inspector)等。
一个完整的Unity3D项目是多个场景叠加起来的,每个场景中由若干个模型组成,并可以通过脚本来控制模型的属性以及动作,摄像头用来呈现并控制场景里的内容。Unity3D模拟现实中的物理现象主要利用其强大的物理引擎。
(1)层次结构开发环境:父子链组织结构,即各个模型之间属于父子关系。所以,子级对象状态的改变取决于它与父级对象之间的关系,即当父级对象的位置发生变化时,子级对象位置也会随之一起变化。这样的组织结构层次清晰,便于学习Unity3D。(2)场景(Scene):Unity3D项目中的基本组成单位,一个完整的Unity3D程序都是由多个场景叠加组合而成,场景之间转换是通过脚本程序来控制的。(3)模型(Game Object):在游戏设计中被称为游戏对象。Unity3D的程序设计是基于面向对象的,其中所有的对象,包括Game Object对象,都是Object对象的继承。(4)脚本:Object对象的专有属性以及行为动作都是由脚本来来实现。Unity3D支持多种脚本语言,包括C#,JavaScript和Boo三种。Unity3D之所以支持动态索引等功能,是由于Unity3D的基础是一种基于.Net Framework的开源语言Mono的Mono脚本。(5)摄像头(Camera):场景呈现给使用者看到的内容由摄像头来控制,一个完整场景展现的内容是由多个摄像头前后纵深叠加而成。摄像头就像是场景中的窗户。(6)物理引擎:Unity3D已经内置了对Nvidia的PhysX physics engine支持。开发者可以使用Unity3D内置的物理引擎来模拟现实世界的物理现象,仅仅只需要给Game Object附加重力、刚体等物理特性就可以。(7)粒子系统:Unity3D可以完成许多特殊效果的制作依靠的是其内置了一套优秀的粒子系统。
1.2脚本编写
Game Object(模型)是Unity3D场景里所有实体的基类,为了实现不同的特效和功能,我们需要对Game Object对象的实例附加各种属性以及动作。Unity3D的脚本必须附加到一个实体上才可以执行,本文中脚本的编写使用JavaScript语言。在脚本中可以访问到被附加的实体的属性,如renderer(渲染器)、transform(变换)等。
在Unity3D中Mono Behaviour是所有脚本的基类,使用JavaScript语言时脚本自动继承Mono Behaviour,而使用C#时,需要显式继承Mono Behaviour。脚本中有各种不同的函数被不同的事件所触发,要实现不同的功能就在相应的函数里编写代码。
下面介绍几个最常用的函数:(1)Start():初始化,只要脚本实例被启用了Start()函数,将会在Update()函数第一次被调用之前调用。(2)Update():这个函数每一帧都会被调用,对于帧的更新它是主要的负荷函数,用来运行很多程序的行为代码,不包括物理行为代码。(3)FixedUpdate():这个函数比Update函数被调用的更频繁。每一帧会被调用多次,FixedUpdate()被调用会立即执行所有的图形计算和更新。程序的基本物理行为代码写在这个函数内。(4)OnGUI():渲染和处理GUI事件时被调用,每一帧会被调用多次(一般最低2次)。
创建虚拟场景主要分为2个部分,建立基础模型和场景管理。由于Unity3D自身建模能力有限,所以矿井巷道的模型需要通过其它建模软件来建立。基于与Unity3D软件有良好的兼容性,选用3DMax软件来实现矿井巷道的建模工作。
矿井巷道场景的模拟主要包括几个步骤,其流程图如图1所示。
图1 矿井巷道场景模拟流程
3DMax提供多种建模方式,包括基础形状建模、多边形建模、复合对象建模、面片建模、NURBS建模等方式。多边形建模是3DMax建模方式中最容易掌握且被广泛应用的建模方式,主要是利用编辑多边形的点、线、面3个元素来建立模型。因此,建立矿井巷道三维模型时,选择多边形建模方式。由3DMax绘制出的基本矿井巷道模型如图2所示。
图2 矿井巷道基本模型
得到3DMax绘制出的基本巷道模型后,导出格式为FBX的文件,之后导入到Unity3D中,进行贴图、添加摄像机、灯光效果以及场景构建等渲染,被导入的信息包括巷道的空间位置、属性以及名称材质等。
通过Unity3D将单个模型进行整合形成不同的虚拟场景,在模型不同的位置上附加贴图,对虚拟场景进行整体规划,包括细节修改、位置调整并调节灯光的位置、强弱和颜色,使其更接近于现实世界的场景。巷道内部渲染后如图3所示。
图3 渲染后巷道内部
突水事故场景模拟主要是针对水流在巷道中的运动状态进行模拟。一般只需要表达基于表面纹理的水平面以及水浪水花等。
水流在现实世界中是一种不规则的物体,它的特点是动态性和随机性。对于这些不规则物体进行模拟时,Unity3D采用粒子系统来提高渲染的真实度以及性能。粒子系统是由若干个具有属性和方法的粒子组成的,粒子数量越多,则模拟的物体其真实感就越强。粒子的属性一般有形状、大小、颜色、透明度、运动速度、运动方向、生命周期等。通过脚本可以控制粒子的各种属性,从而使粒子可以随着时间的变化而变化,使其不管是在时间上还是在空间上都具有动态分布特性,从而可以较真实地模拟出水流运动规律的特效。
除了水流的模拟之外,让水流在巷道中进行流动,还需要对水流进行碰撞设计,这样就能够具有真实水流的动态效果。实现方法是用粒子系统模拟水流时给所有粒子添加碰撞盒,当发生刚体碰撞时,阻挡并改变水流方向。突水事故模拟如图4所示。
图4 突水事故模拟
图4中可以看出,突水位置的水流运动变化规律,随着时间,突水量越来越大,巷道中被水流淹没的面积也就越大。
随着三维虚拟化技术的发展,虚拟现实会成为计算机可视化研究的主流方向。本文通过描述煤矿矿井突水事故的仿真过程,阐述了通过3DMax建模到使用Unity3D对模型进行渲染,并使用脚本控制模型动作以及粒子系统,初步实现了煤矿矿井突水的仿真模拟。
[参考文献]
[1]朱柱.基于Unity3D的虚拟实验系统设计与应用研究[D].武汉:华中师范大学,2012.
[2]陈育滨,曾玉珠.基于Unity3D平台的Web3D展示[J].电脑编程技巧与维护,2012(1):67-72.
[3]刘永立,杨虎.煤矿火灾应急救援演练虚拟现实系统研究[J].矿业安全与环保,2013(6):22-25.
[4]张锡英,韩吉烨.基于Unity3D的虚拟水流墙系统的设计研究[J].安徽农业科学,2014(13):4111-4113.
Study on Three-dimensional Simulation Based on Unity3D Coal Mine Water Inrush Accident
Liu Xinqian1, Fan Juan2
(1.Xi’an University of Architecture and Technology, Xi’an710055, China; 2.CCTEG Xi’an Research Institute, Xi’an710000, China)
Abstract:With the rapidly development of 3D virtual reality technique, during the research of coal mining water inrush accidents visualization, this article uses the Unity3D engine, which is most widely used currently and has strong editing ability with multi-language and multi-platform, to simulate the water inrush accidents, using 3dMaxto realize modeling mine roadway and to realize rendering mine model and simulating the water based on Unity3D virtual reality, using JavaScript, which is a kind of language of development, to realize controling scene and model.
Key words:water inrush of coal mine; Unity3D; 3D simulation
作者简介:刘欣倩(1990-),女,陕西渭南,硕士研究生。