劉欣倩,樊 娟
(1.西安建筑科技大學(xué),陜西 西安 710055;2.中煤科工集團(tuán)西安研究院有限公司,陜西 西安 710000)
?
基于Unity3D煤礦礦井突水事故的三維仿真研究
劉欣倩1,樊娟2
(1.西安建筑科技大學(xué),陜西西安710055;2.中煤科工集團(tuán)西安研究院有限公司,陜西西安710000)
摘要:隨著三維虛擬現(xiàn)實(shí)技術(shù)的快速發(fā)展,在對(duì)煤礦礦井突水事故可視化的研究中,文章利用目前應(yīng)用最廣泛并具有強(qiáng)大多語言多平臺(tái)編輯能力的Unity3D引擎,模擬礦井突水事故的發(fā)生,用3dMax實(shí)現(xiàn)礦井巷道建模、以Unity3D虛擬現(xiàn)實(shí)為平臺(tái)實(shí)現(xiàn)對(duì)巷道模型的渲染以及突水的模擬,并用JavaScript開發(fā)語言實(shí)現(xiàn)對(duì)場(chǎng)景以及模型的控制。
關(guān)鍵詞:煤礦突水;Unity3D;三維仿真
煤礦礦井突水事故由于受到地質(zhì)構(gòu)造以及不規(guī)范開采的影響,造成的人員傷亡以及經(jīng)濟(jì)損失在五大礦井災(zāi)害中排名第二。一旦發(fā)生突水事故,由于其突發(fā)性以及繼發(fā)性,輕則損壞井下工作設(shè)備或被迫停產(chǎn),重則完全淹沒礦井巷道以及造成人員傷亡。因此,對(duì)于突水過程可視化技術(shù)的研究是目前礦井突水研究的主要方向。
Unity3D引擎是一個(gè)多平臺(tái)的三維虛擬開發(fā)工具,一般用于三維網(wǎng)絡(luò)游戲、建筑可視化以及三維動(dòng)畫等方面。由于Unity3D具有編輯器功能集中、跨平臺(tái)支持、可導(dǎo)入多種類型的文件、多語言腳本編輯功能、強(qiáng)大的地形編輯器以及提供粒子系統(tǒng)渲染等特點(diǎn),因此,近幾年廣泛用于各類虛擬仿真設(shè)計(jì)開發(fā)以及網(wǎng)絡(luò)新媒體的應(yīng)用設(shè)計(jì)方面。目前,Unity3D引擎可將同一項(xiàng)目發(fā)布到PC機(jī)、Web瀏覽器、手機(jī)端IOS和Android等各種平臺(tái),市場(chǎng)應(yīng)用前景較好。
本文利用Unity3D平臺(tái),結(jié)合3Dmax建立的巷道模型,模擬實(shí)現(xiàn)煤礦礦井巷道突水事故。整個(gè)過程包括巷道建模,貼圖、渲染以及Unity3D腳本編程。
1.1Unity
Unity3D軟件編輯窗口主要包括:場(chǎng)景窗口(Scene)、工程窗口(Project)、層次結(jié)構(gòu)窗口(Hierarchy)和檢視窗口(Inspector)等。
一個(gè)完整的Unity3D項(xiàng)目是多個(gè)場(chǎng)景疊加起來的,每個(gè)場(chǎng)景中由若干個(gè)模型組成,并可以通過腳本來控制模型的屬性以及動(dòng)作,攝像頭用來呈現(xiàn)并控制場(chǎng)景里的內(nèi)容。Unity3D模擬現(xiàn)實(shí)中的物理現(xiàn)象主要利用其強(qiáng)大的物理引擎。
(1)層次結(jié)構(gòu)開發(fā)環(huán)境:父子鏈組織結(jié)構(gòu),即各個(gè)模型之間屬于父子關(guān)系。所以,子級(jí)對(duì)象狀態(tài)的改變?nèi)Q于它與父級(jí)對(duì)象之間的關(guān)系,即當(dāng)父級(jí)對(duì)象的位置發(fā)生變化時(shí),子級(jí)對(duì)象位置也會(huì)隨之一起變化。這樣的組織結(jié)構(gòu)層次清晰,便于學(xué)習(xí)Unity3D。(2)場(chǎng)景(Scene):Unity3D項(xiàng)目中的基本組成單位,一個(gè)完整的Unity3D程序都是由多個(gè)場(chǎng)景疊加組合而成,場(chǎng)景之間轉(zhuǎn)換是通過腳本程序來控制的。(3)模型(Game Object):在游戲設(shè)計(jì)中被稱為游戲?qū)ο?。Unity3D的程序設(shè)計(jì)是基于面向?qū)ο蟮?,其中所有的?duì)象,包括Game Object對(duì)象,都是Object對(duì)象的繼承。(4)腳本:Object對(duì)象的專有屬性以及行為動(dòng)作都是由腳本來來實(shí)現(xiàn)。Unity3D支持多種腳本語言,包括C#,JavaScript和Boo三種。Unity3D之所以支持動(dòng)態(tài)索引等功能,是由于Unity3D的基礎(chǔ)是一種基于.Net Framework的開源語言Mono的Mono腳本。(5)攝像頭(Camera):場(chǎng)景呈現(xiàn)給使用者看到的內(nèi)容由攝像頭來控制,一個(gè)完整場(chǎng)景展現(xiàn)的內(nèi)容是由多個(gè)攝像頭前后縱深疊加而成。攝像頭就像是場(chǎng)景中的窗戶。(6)物理引擎:Unity3D已經(jīng)內(nèi)置了對(duì)Nvidia的PhysX physics engine支持。開發(fā)者可以使用Unity3D內(nèi)置的物理引擎來模擬現(xiàn)實(shí)世界的物理現(xiàn)象,僅僅只需要給Game Object附加重力、剛體等物理特性就可以。(7)粒子系統(tǒng):Unity3D可以完成許多特殊效果的制作依靠的是其內(nèi)置了一套優(yōu)秀的粒子系統(tǒng)。
1.2腳本編寫
Game Object(模型)是Unity3D場(chǎng)景里所有實(shí)體的基類,為了實(shí)現(xiàn)不同的特效和功能,我們需要對(duì)Game Object對(duì)象的實(shí)例附加各種屬性以及動(dòng)作。Unity3D的腳本必須附加到一個(gè)實(shí)體上才可以執(zhí)行,本文中腳本的編寫使用JavaScript語言。在腳本中可以訪問到被附加的實(shí)體的屬性,如renderer(渲染器)、transform(變換)等。
在Unity3D中Mono Behaviour是所有腳本的基類,使用JavaScript語言時(shí)腳本自動(dòng)繼承Mono Behaviour,而使用C#時(shí),需要顯式繼承Mono Behaviour。腳本中有各種不同的函數(shù)被不同的事件所觸發(fā),要實(shí)現(xiàn)不同的功能就在相應(yīng)的函數(shù)里編寫代碼。
下面介紹幾個(gè)最常用的函數(shù):(1)Start():初始化,只要腳本實(shí)例被啟用了Start()函數(shù),將會(huì)在Update()函數(shù)第一次被調(diào)用之前調(diào)用。(2)Update():這個(gè)函數(shù)每一幀都會(huì)被調(diào)用,對(duì)于幀的更新它是主要的負(fù)荷函數(shù),用來運(yùn)行很多程序的行為代碼,不包括物理行為代碼。(3)FixedUpdate():這個(gè)函數(shù)比Update函數(shù)被調(diào)用的更頻繁。每一幀會(huì)被調(diào)用多次,F(xiàn)ixedUpdate()被調(diào)用會(huì)立即執(zhí)行所有的圖形計(jì)算和更新。程序的基本物理行為代碼寫在這個(gè)函數(shù)內(nèi)。(4)OnGUI():渲染和處理GUI事件時(shí)被調(diào)用,每一幀會(huì)被調(diào)用多次(一般最低2次)。
創(chuàng)建虛擬場(chǎng)景主要分為2個(gè)部分,建立基礎(chǔ)模型和場(chǎng)景管理。由于Unity3D自身建模能力有限,所以礦井巷道的模型需要通過其它建模軟件來建立。基于與Unity3D軟件有良好的兼容性,選用3DMax軟件來實(shí)現(xiàn)礦井巷道的建模工作。
礦井巷道場(chǎng)景的模擬主要包括幾個(gè)步驟,其流程圖如圖1所示。
圖1 礦井巷道場(chǎng)景模擬流程
3DMax提供多種建模方式,包括基礎(chǔ)形狀建模、多邊形建模、復(fù)合對(duì)象建模、面片建模、NURBS建模等方式。多邊形建模是3DMax建模方式中最容易掌握且被廣泛應(yīng)用的建模方式,主要是利用編輯多邊形的點(diǎn)、線、面3個(gè)元素來建立模型。因此,建立礦井巷道三維模型時(shí),選擇多邊形建模方式。由3DMax繪制出的基本礦井巷道模型如圖2所示。
圖2 礦井巷道基本模型
得到3DMax繪制出的基本巷道模型后,導(dǎo)出格式為FBX的文件,之后導(dǎo)入到Unity3D中,進(jìn)行貼圖、添加攝像機(jī)、燈光效果以及場(chǎng)景構(gòu)建等渲染,被導(dǎo)入的信息包括巷道的空間位置、屬性以及名稱材質(zhì)等。
通過Unity3D將單個(gè)模型進(jìn)行整合形成不同的虛擬場(chǎng)景,在模型不同的位置上附加貼圖,對(duì)虛擬場(chǎng)景進(jìn)行整體規(guī)劃,包括細(xì)節(jié)修改、位置調(diào)整并調(diào)節(jié)燈光的位置、強(qiáng)弱和顏色,使其更接近于現(xiàn)實(shí)世界的場(chǎng)景。巷道內(nèi)部渲染后如圖3所示。
圖3 渲染后巷道內(nèi)部
突水事故場(chǎng)景模擬主要是針對(duì)水流在巷道中的運(yùn)動(dòng)狀態(tài)進(jìn)行模擬。一般只需要表達(dá)基于表面紋理的水平面以及水浪水花等。
水流在現(xiàn)實(shí)世界中是一種不規(guī)則的物體,它的特點(diǎn)是動(dòng)態(tài)性和隨機(jī)性。對(duì)于這些不規(guī)則物體進(jìn)行模擬時(shí),Unity3D采用粒子系統(tǒng)來提高渲染的真實(shí)度以及性能。粒子系統(tǒng)是由若干個(gè)具有屬性和方法的粒子組成的,粒子數(shù)量越多,則模擬的物體其真實(shí)感就越強(qiáng)。粒子的屬性一般有形狀、大小、顏色、透明度、運(yùn)動(dòng)速度、運(yùn)動(dòng)方向、生命周期等。通過腳本可以控制粒子的各種屬性,從而使粒子可以隨著時(shí)間的變化而變化,使其不管是在時(shí)間上還是在空間上都具有動(dòng)態(tài)分布特性,從而可以較真實(shí)地模擬出水流運(yùn)動(dòng)規(guī)律的特效。
除了水流的模擬之外,讓水流在巷道中進(jìn)行流動(dòng),還需要對(duì)水流進(jìn)行碰撞設(shè)計(jì),這樣就能夠具有真實(shí)水流的動(dòng)態(tài)效果。實(shí)現(xiàn)方法是用粒子系統(tǒng)模擬水流時(shí)給所有粒子添加碰撞盒,當(dāng)發(fā)生剛體碰撞時(shí),阻擋并改變水流方向。突水事故模擬如圖4所示。
圖4 突水事故模擬
圖4中可以看出,突水位置的水流運(yùn)動(dòng)變化規(guī)律,隨著時(shí)間,突水量越來越大,巷道中被水流淹沒的面積也就越大。
隨著三維虛擬化技術(shù)的發(fā)展,虛擬現(xiàn)實(shí)會(huì)成為計(jì)算機(jī)可視化研究的主流方向。本文通過描述煤礦礦井突水事故的仿真過程,闡述了通過3DMax建模到使用Unity3D對(duì)模型進(jìn)行渲染,并使用腳本控制模型動(dòng)作以及粒子系統(tǒng),初步實(shí)現(xiàn)了煤礦礦井突水的仿真模擬。
[參考文獻(xiàn)]
[1]朱柱.基于Unity3D的虛擬實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)與應(yīng)用研究[D].武漢:華中師范大學(xué),2012.
[2]陳育濱,曾玉珠.基于Unity3D平臺(tái)的Web3D展示[J].電腦編程技巧與維護(hù),2012(1):67-72.
[3]劉永立,楊虎.煤礦火災(zāi)應(yīng)急救援演練虛擬現(xiàn)實(shí)系統(tǒng)研究[J].礦業(yè)安全與環(huán)保,2013(6):22-25.
[4]張錫英,韓吉燁.基于Unity3D的虛擬水流墻系統(tǒng)的設(shè)計(jì)研究[J].安徽農(nóng)業(yè)科學(xué),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
作者簡(jiǎn)介:劉欣倩(1990-),女,陜西渭南,碩士研究生。