曾文輝



摘要:消防安全是我國歷來非常重視的安全問題,尤其是校園安全消防問題。因為學校是人流比較密集的場所,一旦火災發生,將會造成嚴重的人員傷亡和財產損失。然而,傳統的消防安全教育存在很大的局限性,課本授課、視頻授課的可互動性不強,而現場模擬消防演練因為受限于場地、環境和成本等因素,效果并不理想。虛擬現實技術(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總結
在未來的虛擬現實領域中,這種實訓類型的虛擬顯示系統應用將會越來越多,將會涵蓋我們的衣食住行,所以將來會代替成本高的實訓活動,降低操作和學習的成本。