◆馮成舜 石連栓
隨著城市的高速發(fā)展,火災(zāi)嚴(yán)重隱患不斷增加,火災(zāi)已成為頻繁發(fā)生的城市災(zāi)害,隨時(shí)威脅著人們的生命和財(cái)產(chǎn)安全。如何避免火災(zāi)的發(fā)生,及時(shí)實(shí)施救援措施以及安全逃離起火現(xiàn)場等,已經(jīng)成為人們關(guān)注的焦點(diǎn)。當(dāng)前的消防宣傳工作主要采用宣傳欄、知識講座、宣傳手冊、消防演習(xí)等方式,這種頻數(shù)很少的消防宣傳及演練,難以讓受訓(xùn)者更快地掌握消防器材的應(yīng)用、救援的注意事項(xiàng)及正確的逃生方法,同時(shí)傳統(tǒng)消防演習(xí)會產(chǎn)生高額的經(jīng)費(fèi)和不必要的影響。
隨著虛擬現(xiàn)實(shí)技術(shù)、計(jì)算機(jī)仿真技術(shù)等相關(guān)技術(shù)逐步應(yīng)用于消防安全工程領(lǐng)域,使得上述問題得到了有效的解決。結(jié)合虛擬現(xiàn)實(shí)和消防科學(xué),通過三維引擎實(shí)時(shí)渲染來構(gòu)建一個(gè)“虛擬消防演練教學(xué)系統(tǒng)”。該系統(tǒng)可以讓受訓(xùn)者或?qū)W習(xí)者能夠在場景中實(shí)現(xiàn)角色和場景的選擇、消防展館漫游學(xué)習(xí)、消防演示學(xué)習(xí)、滅火救援、安全疏散等功能,具有高安全、高仿真、低成本、可重復(fù)、易學(xué)習(xí)等多種優(yōu)點(diǎn),在消防安全工程中的應(yīng)用具有廣闊的前景。
本研究利用Photoshop、3Ds MAX、Virtools等軟件進(jìn)行開發(fā),構(gòu)建出一個(gè)具有信息顯示、消防展廳、消防演練、滅火救援、火勢評估等功能模塊的消防安全應(yīng)急虛擬系統(tǒng)。同時(shí)還提供自由漫游、交互式操作、人員疏散、緊急救援、滅火操作以及各類信息顯示等功能。系統(tǒng)功能模塊如圖1所示。
界面系統(tǒng) 界面系統(tǒng)功能模塊實(shí)現(xiàn)初始界面的展現(xiàn),角色、場景的選擇,以及系統(tǒng)各種信息的動態(tài)存放、提取及顯示,包括了場景地圖、生命值、裝備、建筑、火勢、消防設(shè)施、安全疏散等信息的顯示功能。用戶可以根據(jù)不同的信息做出決策,讓學(xué)習(xí)者及時(shí)掌握各類信息,真切地感受到火災(zāi)現(xiàn)場。
消防展廳系統(tǒng) 該功能模塊通過Virtools三維引擎在虛擬展館中展示各種消防設(shè)備和器材且呈現(xiàn)高亮提示狀態(tài),并具有對其尺寸功能、適用范圍、操作須知等信息的動態(tài)介紹。學(xué)習(xí)者操縱虛擬角色在消防展館內(nèi)漫游學(xué)習(xí)各種消防設(shè)施及消防知識。展廳中央虛擬屏幕播放各類消防器材使用和消防科普知識視頻,實(shí)現(xiàn)虛擬環(huán)境中多元性和逼真性的學(xué)習(xí)。
消防演練系統(tǒng) 該功能模塊又分為兩個(gè)子功能模塊。
一個(gè)是消防演習(xí)模塊,學(xué)習(xí)者選擇角色進(jìn)入虛擬火災(zāi)場景,角色跟隨并學(xué)習(xí)消防專家對消防器材的正確操作演示以及正確逃生等行為活動,并與學(xué)習(xí)者之前在展廳所掌握的知識相結(jié)合,形成知識的重構(gòu),加強(qiáng)對知識的掌握和領(lǐng)會。當(dāng)角色漫游距離消防人員較遠(yuǎn)時(shí),系統(tǒng)會提示危險(xiǎn)操作信息,同時(shí)消防人員身上出現(xiàn)三維提示圖標(biāo),在迷你地圖上會顯示出角色的具體位置,這樣方便角色的跟隨學(xué)習(xí),避免學(xué)習(xí)者迷航現(xiàn)象。
另一個(gè)是消防救援模塊。虛擬角色要進(jìn)行滅火操作、人員安全疏散等行為活動。角色進(jìn)入不同的場景,可以由系統(tǒng)隨機(jī)選擇或自己控制選擇起火點(diǎn),角色通過地圖找到起火位置和附近的消防設(shè)施,可以實(shí)時(shí)獲取和操作消防器材,在相關(guān)信息和配套設(shè)備的支持下進(jìn)行滅火作戰(zhàn),同時(shí)實(shí)施人員疏散救援活動。逼真的虛擬滅火救援演練活動不但使學(xué)習(xí)者熟練地掌握滅火消防器材的操作技術(shù)和救援技能,而且使其從心理上克服對火災(zāi)的恐懼心理。
分析系統(tǒng) 該系統(tǒng)功能模塊會實(shí)時(shí)分析出整個(gè)學(xué)習(xí)及演練過程的綜合信息,包括著火地點(diǎn)、火勢的大小、消防設(shè)施狀況、角色的生命值等信息,根據(jù)角色對滅火器材操作時(shí)間的長短,系統(tǒng)控制火勢的大小和起火點(diǎn)的損害程度,并給出相應(yīng)分析顯示;計(jì)算角色與火焰或起火點(diǎn)的相對距離,來判斷角色生命的危險(xiǎn)程度并實(shí)時(shí)更新生命值;實(shí)現(xiàn)監(jiān)控過程的回放,分析整個(gè)過程中學(xué)習(xí)者的學(xué)習(xí)操作行為,并且系統(tǒng)給出補(bǔ)充性學(xué)習(xí)。
該系統(tǒng)主要通過3Ds MAX 9構(gòu)建虛擬場景和角色模型,利用Virtools 5.0實(shí)現(xiàn)各種實(shí)時(shí)的交互操作,控制虛擬環(huán)境的部件。完整的系統(tǒng)開發(fā)過程涉及很多技術(shù)和技巧。筆者將整個(gè)過程的關(guān)鍵技術(shù)進(jìn)行闡述,主要包括:
1)角色控制及碰撞處理;
2)角色及場景動態(tài)獲??;
3)火焰和煙霧的模擬;
4)器材獲取、裝備及滅火操作。
角色控制及碰撞處理 角色在整個(gè)過程中通過鍵盤或鼠標(biāo)的控制,為角色添加腳本,并且加入Virtools中自帶的Building Blocks(后面簡稱BB)模塊,多個(gè)BB模塊組合實(shí)現(xiàn)對角色和物體的操作和控制。在主文件中建立虛擬角色代理并添加腳本,由Keyboard Mapper模塊將輸入的鍵盤信息轉(zhuǎn)換成Virtools可讀信息再發(fā)給三維引擎,通過Unlimited Controller接受信息并且調(diào)用該信息對應(yīng)的角色動作來控制角色的行為。用Enhanced Character Keep On Floor模塊強(qiáng)制角色在地板或樓梯上行走而不穿透地板,但必須為地板添加Floor屬性才可以實(shí)現(xiàn)。用Object Slider、Shadow Caster、Text Display等模塊實(shí)現(xiàn)碰撞、投影、角色名字顯示、視鏡優(yōu)化等功能。
角色及場景動態(tài)獲取 用戶進(jìn)入系統(tǒng)后進(jìn)行角色選擇,所選的角色可以在虛擬場景中進(jìn)行漫游、學(xué)習(xí)、操作、觀察等行為,體現(xiàn)了學(xué)習(xí)的主動性、情景性和沉浸性。在Virtools中由2D Frame創(chuàng)建腳本,用Mouse Waiter模塊等待鼠標(biāo)點(diǎn)選,2D Picking抓取所點(diǎn)選的內(nèi)容,用Test和Is In Group模塊來進(jìn)入模型選擇按鈕。如果點(diǎn)到模型選擇按鈕,則隱藏所有按鈕并且設(shè)置成不可點(diǎn)選狀態(tài),同時(shí)創(chuàng)建角色的下載創(chuàng)建地址,用Object Load模塊下載角色并且激活角色和角色代理腳本,將代理上的所有功能都賦予載入的角色,如圖2所示。場景的載入與角色的載入類似,在這里就不再贅述。
火焰和煙霧的模擬 虛擬火災(zāi)現(xiàn)場對火勢的精細(xì)模擬是非常關(guān)鍵的,利用Virtools中提供的八種粒子系統(tǒng),很好地解決了火焰及煙霧的模擬,提高系統(tǒng)的逼真性。在Virtools中由3D Frame來充當(dāng)粒子系統(tǒng)發(fā)射源,分別創(chuàng)建火焰粒子組、煙氣粒子組和濃煙粒子組,在模塊中設(shè)置粒子系統(tǒng)的生命周期、發(fā)射速度、粒子數(shù)目、粒子大小及衰減、粒子貼圖、粒子顏色漸變等各種屬性,來實(shí)現(xiàn)模擬不同火焰和煙氣。
將起火的位置進(jìn)行分析計(jì)算并為其加權(quán)重,由起火點(diǎn)Array來存放起火點(diǎn)空間坐標(biāo)、權(quán)重、起火點(diǎn)的模糊次序等信息。用火勢信息Array來存放火勢不同粒子系統(tǒng)的組合、大小和粒子系統(tǒng)的屬性等信息。在系統(tǒng)運(yùn)行時(shí),用戶自己或者系統(tǒng)隨機(jī)選擇起火位置,系統(tǒng)會從起火點(diǎn)數(shù)組中調(diào)用其位置、大小、權(quán)重等信息。通過計(jì)算是否有滅火操作和滅火的時(shí)間來動態(tài)控制各粒子系統(tǒng)的屬性設(shè)置,并判斷是否激活附近位置的著火點(diǎn),實(shí)現(xiàn)火災(zāi)發(fā)展和蔓延與真實(shí)火災(zāi)保持一致,火勢效果如圖3所示。
器材獲取、裝備及滅火操作 在虛擬場景中特定的位置會設(shè)置消防器材,如何獲取這些器材并且對其進(jìn)行操作成為關(guān)鍵問題。
首先,利用設(shè)備Array把器材的名稱、實(shí)體、位置、縮圖、是否永久裝備等信息錄入,同時(shí)為器材設(shè)置碰撞檢測Collision Detection,當(dāng)角色走近器材一定范圍內(nèi),系統(tǒng)進(jìn)行碰撞測試,判斷器材是否可以被裝備,同時(shí)器材一直以閃亮狀態(tài)提示。在角色的裝備包中動態(tài)顯示所獲取器材的縮略圖,并將該物體加入到角色裝備包器材數(shù)組,把場景中的物體隱藏并設(shè)置到其他位置,以免被誤點(diǎn)選。
其次,用戶選中并拖動裝備包中的現(xiàn)有器材或物品縮圖到角色的身上,為角色裝備器材,通過set position將該設(shè)備物體的位置設(shè)置到角色手上預(yù)制的虛擬對象的位置上,設(shè)置方向和大小同時(shí)添加到裝備組,實(shí)現(xiàn)器材的裝備。
最后,通過Key Event選擇按鍵來控制滅火動作開始,用Play Animation 3D Entity為角色添加滅火的動作。當(dāng)然,該腳本是在檢測滅火器已裝備的情況下才可以執(zhí)行。操作動作執(zhí)行完成后激活滅火器口的粒子系統(tǒng),實(shí)現(xiàn)器材操作,由Get Nearest In Group模塊來判斷角色最近燃火點(diǎn),由Iterator、Test等模塊判斷最近起火點(diǎn)一定范圍內(nèi)的已經(jīng)燃燒的起火點(diǎn),并按距離順序放到一個(gè)新Array中,根據(jù)滅火操作時(shí)間和距離次序來動態(tài)改變起火點(diǎn)的火勢的大小,并且檢測火勢參數(shù)值當(dāng)小于一定值時(shí)將粒子系統(tǒng)關(guān)閉,實(shí)現(xiàn)對火勢的控制。
本系統(tǒng)集消防知識學(xué)習(xí)、消防宣傳和演練于一體,實(shí)現(xiàn)了參與者從消防知識及器材的學(xué)習(xí)到消防演示教學(xué)再到消防實(shí)戰(zhàn)的深刻體驗(yàn)學(xué)習(xí),具有較強(qiáng)的實(shí)用性和可行性,為消防宣傳、消防演練教學(xué)及指揮實(shí)踐等方面提供了更有效便捷的方法。隨著計(jì)算機(jī)技術(shù)、虛擬現(xiàn)實(shí)技術(shù)及虛擬消防工程的不斷發(fā)展與完善,實(shí)現(xiàn)更強(qiáng)的交互性、沉浸性、協(xié)同性,今后將成為消防工程的重要支撐手段。本研究可為構(gòu)建其他虛擬工程系統(tǒng)所借鑒。
[1]高小輝.分布式虛擬環(huán)境在消防預(yù)案中的應(yīng)用[D].北京:首都師范大學(xué),2007.
[2]肖瓊.基于Mult1gen和Vega的視景仿真技術(shù)在突發(fā)事件中的應(yīng)用[D].武漢:華中科技大學(xué),2008.
[3]劉明昆.就是要做3D游戲:Virtools秘笈篇[M].北京:中國青年出版社,2010.
[4]陳馳,任愛珠,張新.基于虛擬現(xiàn)實(shí)的建筑火災(zāi)模擬系統(tǒng)[J].自然災(zāi)害學(xué)報(bào),2007,16(1):55-60.