曾文輝
摘要:消防安全是我國歷來非常重視的安全問題,尤其是校園安全消防問題。因?yàn)閷W(xué)校是人流比較密集的場所,一旦火災(zāi)發(fā)生,將會(huì)造成嚴(yán)重的人員傷亡和財(cái)產(chǎn)損失。然而,傳統(tǒng)的消防安全教育存在很大的局限性,課本授課、視頻授課的可互動(dòng)性不強(qiáng),而現(xiàn)場模擬消防演練因?yàn)槭芟抻趫龅?、環(huán)境和成本等因素,效果并不理想。虛擬現(xiàn)實(shí)技術(shù)(VR)的出現(xiàn),就突破了以上受限因素的局限,這是一種體驗(yàn)與交互一體的全新模式。將VR技術(shù)與消防安全教育進(jìn)行深度融合,研究基于VR技術(shù)的校園安全消防教育的設(shè)計(jì)與實(shí)現(xiàn)方法,建立基于VR技術(shù)的校園安全消防實(shí)訓(xùn)系統(tǒng)。
關(guān)建詞:消防安全;虛擬現(xiàn)實(shí)技術(shù)(VR);可互動(dòng)性;深度融合
中圖分類號(hào):TP3 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)15-0246-03
校園的消防安全主要是集中于學(xué)生宿舍、機(jī)房、化學(xué)實(shí)驗(yàn)室等用電生活區(qū)域和存放易燃易爆化學(xué)品的實(shí)驗(yàn)室。由于受場地、成本等因素的限制,舉辦一次大規(guī)模的消防演練不但影響學(xué)生在校園的生活,而且危險(xiǎn)性也高。隨著近年來虛擬現(xiàn)實(shí)技術(shù)(VR)的發(fā)展和普及,基于該技術(shù)開發(fā)一款具有高沉浸感和高互動(dòng)性的《基于虛擬現(xiàn)實(shí)技術(shù)(VR)的校園安全消防實(shí)訓(xùn)系統(tǒng)》。本文將以學(xué)生宿舍發(fā)生火災(zāi)為例,適配HTC View可穿戴式頭盔設(shè)備,使用Unity、3D Max、Photoshop等軟件對該系統(tǒng)進(jìn)行設(shè)計(jì)和開發(fā)。
1系統(tǒng)總設(shè)計(jì)
1.1系統(tǒng)整體設(shè)計(jì)
基于虛擬現(xiàn)實(shí)技術(shù)(VR)的校園安全消防實(shí)訓(xùn)系統(tǒng)是以學(xué)生宿舍為主要場景,分為學(xué)生宿舍室內(nèi)消防安全排查交互場景和宿舍室內(nèi)火災(zāi)逃生兩個(gè)模塊進(jìn)行設(shè)計(jì)和開發(fā)。學(xué)生宿舍室內(nèi)消防安全排查交互場景模塊主要是扮演宿舍管理員角色,在學(xué)生宿舍中進(jìn)行消防安全排查操作;而宿舍火災(zāi)現(xiàn)場逃生模塊主要是發(fā)生火災(zāi)時(shí),進(jìn)行室內(nèi)逃生,包括如何使用滅火器進(jìn)行滅火,如何使用消防斧頭進(jìn)行破門。本系統(tǒng)使用3ds Max三維建模軟件進(jìn)行模型的建立,模型包括:學(xué)生宿舍樓、宿舍室內(nèi)、各種大功率電器,人物角色等;使用Unity引擎制作交互;使用Photoshop制作uI界面。
而校園宿舍內(nèi)發(fā)生火災(zāi)原因一般為發(fā)生漏電或者使用大功率電器,所以本系統(tǒng)將排除其他發(fā)生火災(zāi)的原因,基于上述原因進(jìn)行開發(fā)。發(fā)生火災(zāi)的原因?qū)?yīng)使用什么類型的滅火器是非常重要的,所以在發(fā)生漏電或者使用大功率電器所發(fā)生火災(zāi)當(dāng)中,不能使用泡沫滅火器,只能使用干粉滅火器。為了提示如何下一步的操作,本系統(tǒng)將會(huì)采用模型邊緣高光的方式進(jìn)行提示。
1.2系統(tǒng)功能分析
整個(gè)系統(tǒng)將會(huì)分為消防隱患排查和火災(zāi)現(xiàn)場逃生兩個(gè)場景模塊。消防隱患排查模塊是通過操控HTC View頭戴式虛擬現(xiàn)實(shí)設(shè)備中的手柄在學(xué)生宿舍室內(nèi)進(jìn)行消防隱患排查,主要是檢查滅火器氣壓是否在標(biāo)準(zhǔn)線內(nèi),排查宿舍內(nèi)是否使用大功率電器,是否存在亂拉電線、網(wǎng)線的現(xiàn)象,如果存在則根據(jù)提示進(jìn)行沒收和整改(主要流程請參考圖1)。
火災(zāi)現(xiàn)場逃生模塊通過佩戴HTC View頭戴式頭盔,模擬出室內(nèi)火災(zāi)現(xiàn)場,操控虛擬現(xiàn)實(shí)設(shè)備手柄進(jìn)行滅火逃生。使用滅火器的期間,需要正確操作如何使用滅火器,第一步觀察滅火器氣壓表氣壓是否達(dá)標(biāo);第二步將瓶體顛倒幾次,使筒內(nèi)干粉松動(dòng);第三步拔掉滅火器的保險(xiǎn)銷;第四步左手握住噴管,右手提著壓把,在距離火焰兩米的地方,右手用力壓下壓把,左手拿著噴管左右搖擺;使干粉覆蓋燃燒區(qū),直至把火全部撲滅。最后檢查一樓大門是否上鎖關(guān)閉,如果有則使用消防斧進(jìn)行破門(主要流程請參考圖2)。
2系統(tǒng)實(shí)現(xiàn)
2.1火焰和噴霧特效實(shí)現(xiàn)
基于虛擬現(xiàn)實(shí)技術(shù)(vR)的校園安全消防實(shí)訓(xùn)系統(tǒng)場景的搭建因?yàn)槭腔诨馂?zāi)隱患而開發(fā)的虛擬實(shí)訓(xùn)系統(tǒng),所以真?zhèn)€交互場景中將會(huì)實(shí)現(xiàn)大量的粒子特效,主要包括火焰和滅火器噴霧粒子特效。在模擬真實(shí)火災(zāi)場景中,火焰的數(shù)量和火焰的大小必須控制得非常得當(dāng),才能模擬出真實(shí)室內(nèi)火災(zāi)氛圍。而實(shí)現(xiàn)火災(zāi)時(shí)室內(nèi)的景象,不緊需要粒子特效的還原,還要使用Unity引擎自帶燈光效果和火焰燃燒時(shí)所需的音效進(jìn)行烘托。滅火器所使用的噴霧特效必須控制粒子的生命周期等。
2.1.1火焰特效實(shí)現(xiàn)
真實(shí)的火焰效果,通常包括:火、火星、火光和煙霧等組成部分,火焰燃燒的同時(shí)會(huì)對周圍環(huán)境進(jìn)行烘焙。針對火焰組成部分,可以在Unity中分別創(chuàng)建粒子系統(tǒng)組件實(shí)現(xiàn),詳細(xì)層級(jí)結(jié)-構(gòu)參考圖3。在創(chuàng)建火焰的相關(guān)粒子系統(tǒng)時(shí),要先思考粒子發(fā)射的方向和使用的粒子系統(tǒng)的哪些參數(shù)模塊。新建的粒子系統(tǒng)默認(rèn)朝前播放粒子,所以需要x軸旋轉(zhuǎn)-90°,改為朝上發(fā)射?;A(chǔ)模塊,主要控制粒子生命時(shí)長、大小、方向、顏色、重力等,主要設(shè)置Looping參數(shù)讓粒子周期循環(huán)發(fā)射,粒子初始顏色不需要改變,因?yàn)楸鞠到y(tǒng)火焰粒子特效在Render參數(shù)模塊使用多幀火焰圖進(jìn)行渲染,如圖4。Gravity Modifier重力修改器,因火為升力,此處需改為-1,這樣火焰的方向就是向上。其余參數(shù)如Duration粒子發(fā)射時(shí)長、Start Speed粒子初始速度、Start Lift-time單個(gè)粒子的生命周期等參數(shù),請自行根據(jù)項(xiàng)目需求進(jìn)行更改。
2.1.2噴霧特效實(shí)現(xiàn)
噴霧粒子特效主要是應(yīng)用于滅火器滅火時(shí)噴射的干粉煙霧,實(shí)現(xiàn)起來比火焰特效要簡單??傮w上來說,火焰粒子初始方向是向上的,而滅火器噴霧粒子的發(fā)射方向是跟隨滅火器噴嘴朝向發(fā)射的,而且噴霧發(fā)射的距離是有限的,有效距離大概是2.5米左右,所以粒子的Start Lifrtime個(gè)粒子的生命周期大概設(shè)置為1-2.5區(qū)間,這樣會(huì)讓粒子的生命周期有一個(gè)隨機(jī)的變化。而噴霧發(fā)射時(shí)會(huì)有一個(gè)初始速度的變化,所以Start Speed粒子速度設(shè)置為1.1.5區(qū)間。噴霧粒子從噴射的初始時(shí)顏色呈現(xiàn)出來是白色的,當(dāng)粒子噴射的生命周期到達(dá)末期時(shí),粒子會(huì)變得透明,所以Color overLifetime模塊的Color設(shè)置成白色漸變到透明。噴射出去的噴霧粒子特效現(xiàn)實(shí)中是呈圓錐形,所以在Shape模塊中設(shè)置Shape參數(shù)為Cone。噴霧粒子的其他模塊參數(shù),請自行根據(jù)項(xiàng)目需求進(jìn)行更改。具體效果請參考圖5。
2.2系統(tǒng)交互功能實(shí)現(xiàn)
虛擬現(xiàn)實(shí)系統(tǒng)跟普通的三維動(dòng)畫的本質(zhì)區(qū)別在于是否有人機(jī)交互,交互是虛擬現(xiàn)實(shí)系統(tǒng)的核心,尤其是這種實(shí)訓(xùn)類虛擬現(xiàn)實(shí)系統(tǒng)。因?yàn)楸鞠到y(tǒng)是使用Unity進(jìn)行開發(fā),可適配HTCView、Oculus等可穿戴式虛擬現(xiàn)實(shí)設(shè)備,所以需要使用Steam-VR Plugin插件進(jìn)行開發(fā),而真?zhèn)€系統(tǒng)機(jī)會(huì)基于UniIv自身的程序API和SteamVR Plugin插件的API進(jìn)行交互開發(fā)。整個(gè)系統(tǒng)主要是兩個(gè)模塊,一個(gè)是排查隱患模塊,另一個(gè)是火災(zāi)逃生模塊,那么交互的部分也主要集中在這兩個(gè)模塊進(jìn)行開發(fā)。
2.2.1排查模塊交互實(shí)現(xiàn)
在排查模塊中,主要是排查是否有使用大功率電器,或者違規(guī)亂接電線和網(wǎng)線,所以使用手柄進(jìn)行捉拿大功率電器,然后進(jìn)行彈出uI界面進(jìn)行說明。創(chuàng)建一個(gè)新的基于Unity的C#腳本,因?yàn)樵诮换ブ?,使用到HTCView虛擬現(xiàn)實(shí)設(shè)備手柄進(jìn)行操作交互,而這些操作將會(huì)基于SteamVR Plugin插件的底層API進(jìn)行調(diào)用,所以在腳本中必須先引用Valve.VR.Interaction-svstem空間名,然后具體實(shí)現(xiàn)的方法有OnHandHoverBegin(Hand hand):當(dāng)手柄觸碰到相應(yīng)對象時(shí)觸發(fā)該方法,OnHand-HoverEnd(Hand handl:當(dāng)手柄停止觸碰相應(yīng)對象時(shí)觸發(fā)該方法,HandHoverUpdate(Hand hand):當(dāng)手柄觸碰到相應(yīng)對象時(shí)每幀調(diào)用,以上三個(gè)方法都是操控HTC View手柄時(shí)相對應(yīng)的方法。當(dāng)手柄拾取起違規(guī)的電器時(shí),使用game Object.SetActivefalse)或者Deslroy(gameObjectl將違規(guī)電器隱藏或者銷毀,然后uI界面提示為什么違規(guī)等文字信息。
2.2.2滅火器交互實(shí)現(xiàn)
在火災(zāi)逃生模塊中,最主要的如何使用滅火器進(jìn)行滅火的交互,使用滅火器滅火有兩個(gè)交互點(diǎn)。在使用滅火器滅火時(shí)要先將保險(xiǎn)銷拔掉,然后扔掉。這里手柄扔保險(xiǎn)銷后,保險(xiǎn)銷要有一個(gè)掉地上的物理重力,所以選擇保險(xiǎn)銷對象,添加一個(gè)Rigidbodv剛體組件,該組件是模擬物理效果的,然后使用gameObiect.GetComponentO.useGravity=true控制剛體組件的重力效果是否開啟,true就是開啟,false就關(guān)閉。接下來,只需要將滅火器噴嘴對準(zhǔn)火源,按下手柄的Trigger鍵,激活滅火器的噴霧特效進(jìn)行滅火。該交互主要使用到監(jiān)聽手柄的Trigger鍵,當(dāng)監(jiān)聽到按下Trigger鍵時(shí),激活噴霧特效,當(dāng)釋放Trigger鍵時(shí),停止噴霧特效,代碼如下:
還有一個(gè)滅火的交互點(diǎn),主要就是當(dāng)噴霧特效觸碰到火焰特效時(shí),火焰特效有一個(gè)組件變小的過程。在滅火器噴霧特效和火焰特效的碰撞中,必須將兩種粒子特效系統(tǒng)中的Collision參數(shù)模塊中的Send Collision Message選項(xiàng)勾上,這樣才能觸發(fā)粒子特效的碰撞事件,而控制火焰粒子特效的火焰大小參數(shù)是Emission參數(shù)模塊的Rate overTime參數(shù),當(dāng)參數(shù)為0時(shí),火焰特效將會(huì)消失,所以需要使用代碼控制該參數(shù)。代碼如下:
3總結(jié)
在未來的虛擬現(xiàn)實(shí)領(lǐng)域中,這種實(shí)訓(xùn)類型的虛擬顯示系統(tǒng)應(yīng)用將會(huì)越來越多,將會(huì)涵蓋我們的衣食住行,所以將來會(huì)代替成本高的實(shí)訓(xùn)活動(dòng),降低操作和學(xué)習(xí)的成本。