楊志和
(上海電機學院 電子信息學院,上海201306)
危情生存就是生活中可能會遇到的危險情況及在此情況下的生存技能與對策。危情分為來自自然界和社會兩方面的安全威脅;具體地說,來自自然界的安全威脅主要是地震、洪、泥石流、山火和雷擊等;來自社會的安全威脅主要包括火災、車禍、毆打、搶劫、綁架、槍擊、詐騙、跌落等。為了提高人們特別是青少年的安全意識和自我保護能力,危情生存培訓變得必不可少。由于很多生存技能實訓項目存在著危險性大、成本高、管理難度大等問題,使得真實場景的實訓不切實際;而三維模擬實訓的安全性、可靠性、實用性及取得的效果較好[1]。
Unity3D是一個全面整合的三維引擎,是一個讓開發者輕松創建諸如三維視頻游戲、建筑可視化、實時三維動畫等互動內容的綜合型開發工具[2]。Unity的編輯器可運行在多種操作系統下,開發出的系統可發布至各種PC和手機平臺上,利用Unity web player插件可支持網頁瀏覽與操作。近年來,利用虛擬現實或仿真游戲開展虛擬教育培訓的研究案例越來越多,包括基于Unity3D的煤礦井下逃生訓練系、基于Unity3D的消防3D情景實訓系統[3]、基于Unity3D的加油車虛擬訓練系統[4]、基于Unity3D的汽車發動機虛擬裝配訓練考評系統[5]、基于Unity3D的挖掘機模擬訓練系統[6]等,這些系統都是虛擬培訓領域的典型應用案例。
通過對危情生存模擬訓練項目的研究,本文借助Unity3D平臺,基于虛擬現實與動漫多媒體技術,研究了危情生存模擬訓練系統,給出了系統總體架構和技術路線,分析了系統開發中關鍵技術,并給出了相應的解決方案。
通過對危情生存模擬訓練項目的研究,本文歸納、整理了危情生存的知識點和相關課程體系,建立了危情模型和危商能力素質模型,通過行為建模與數據抽象,建立了危商能力訓練平臺模型,通過改變模型及其參量可以模擬各種不同危情場景。
本文建立的危情生存模擬訓練系統的基本架構如圖1所示。圖中,在預先設定的危情模型下,以學習者面對模擬的危情環境的應急反應行為數據為基礎,將其應對行為作用于虛擬的外部客體(危險場景或災害情境)中,對產生的事件進行量化(基于人、事、物的三維數據)后可得到仿真反饋量化模型;仿真環境則將危情三維場景模型數據庫的資源導入Unity3D平臺,制作成基于視覺、聽覺、嗅覺甚至觸覺上的危情重現;通過虛擬現實與人機交互技術,構成完整的危情生存交互式模擬訓練系統。

圖1 系統基本框架圖Fig.1 Diagram of basic system frame
根據危情生存模擬訓練的要求,系統需要具有以下功能:
(1)理論學習功能。進行“三生”,即生命、生存、生活教育,詳細介紹危情的分類、防范與預防、應急處置等知識。
(2)基礎培訓功能。讓學習者完成基本安全教育知識點的學習,包括體力訓練、情緒掌控、求救與搶救知識等。
(3)三維模擬環境實訓功能。通過三維互動游戲的方式,實現若干類危情事故的生存實訓,進一步鞏固所學基礎理論知識,掌握與危情自救相關的實際應用本領與技能,培養危商素質。
(4)在線考試功能。通過在線題庫實現學習者在線理論考試或模擬實戰考試,并實現自動評分、考后查分等功能。
從系統的層次結構看,危情生存模擬訓練系統的總體架構主要包括表現層、應用層、驅動層、集成層、資源層等5個層次,如圖2所示。

圖2 系統總體架構圖Fig.2 System architecture
(1)表現層。該層是用戶與系統互動的人機交互界面,也是系統的入口,通過底層業務構件的支持,基于構件的混聚(mash-up)來開發新的業務流程,實現模型的可視化建構。
(2)應用層。該層集中了系統的核心應用功能,包括理論學習區、基礎培訓區、3D模擬實訓區、在線考試區等系列應用。
(3)驅動層。該層是系統的核心技術層,也稱為服務層,它集成了Unity3D服務引擎和一系列常用組件,如ActiveX組件、通信報文組件、任務流組件和控制流組件等;主要是將常用的業務模塊封裝成專門處理特定信息的服務組件或構件。
(4)集成層。該層是底層數據與服務的整合層,它把下位的資源層的程序與數據轉換為上位的驅動層可以操作的服務組件。
(5)資源層。該層提供上層調用所需的基本數據與服務組件,即數據資源和控制資源。數據資源包括二維數據資源(*.png、*.jpg、*.bmp文件)、三維數據資源(*.dts文件)、日志文件(*.log文件)、配置文件(*.ini、*.xml文件)等。控制資源包括學習、實訓、管理、評價等組件及其屬性信息等。
本文給出了危情生存模擬訓練系統構建的技術路線,如圖3所示。

圖3 系統技術路線圖Fig.3 System technical roadmap
(1)基于3DStudio Max設計系統原型,即系統的環境與場景模型,這是模擬現實互動過程的模型。根據類似現實事件的地形及影像數據,通過人工加工與處理,以危商知識模型數據為控制流來制作人物和工具模型,并使用渲染技術加以預處理。
(2)將特定場景的三維模型數據導入到Unity3D引擎中,然后導入二維場景模型數據庫,添加碰撞檢測設置、訓練模型等操作,并將場景所配套的音頻、視頻文件進行集成,生成面向特定危情場景的互動框架。
(3)制作系統所需的音視頻文件。其中,音頻文件采用真人語音錄制;音頻、視頻文件使用Adobe Premiere Pro編輯與合成;動畫文件使用Adobe Flash Professional制作。
(4)通過編寫腳本實現危商能力素質模型所要求的面向特定場景的行為模型,類似于游戲通關模型,這也是本文系統的核心。
2.3.1 虛擬現實技術 本文研究的危情生存交互式模擬訓練系統是一個虛擬現實系統。系統由輸入部分、輸出部分、虛擬環境數據庫、虛擬現實等組成,如圖4所示。

圖4 虛擬現實系統的組成Fig.4 Composition of virtual reality system
虛擬現實系統的核心模塊是傳感器、交互式控制系統和虛擬環境。傳感器是使人產生沉浸感的相關設備,涵蓋人類對外部世界的各種感官,如視覺上的頭盔式立體顯示器、面向手感的數據手套、面向體感的數據衣和數據鞋、面向嗅覺的氣味發生器、面向聽覺的三維音響等[7]。學習者通過數字化的頭盔、手套和話筒等輸入設備為計算機提供輸入信號;虛擬現實軟件收到輸入信號后加以解釋,然后對虛擬環境數據庫進行必要更新,調整當前虛擬環境視圖,并將這一新視圖及其他信息,如聲音等傳送給輸出設備,以便用戶及時看到效果[8]。
系統中主要應用了基于多媒體技術的音響仿真模塊、基于慣性感應器的運動仿真模塊、基于計算機圖形圖像技術和三維技術的視景仿真模塊、基于數字手套的操作仿真模塊。其中,通過環繞立體聲的制作技術實現了場景的音響效果;通過固定在人體特定部位、集成了加速度計、磁力計和陀螺儀等功能的慣性傳感器來采集人體的動作信息;通過無線傳輸模塊與系統進行互動。各傳感器相互通信構成了無線傳感網絡,捕獲人體運動信息。這些數據與通過數字手套捕獲到的手部動作數據一起,經過輸入模塊與控制系統實現互動。在輸入和反饋模塊中,都要對場景進行三維渲染和繪制,形成實時逼真的互動場景。
2.3.2 碰撞檢測技術 在碰撞檢測的實際應用中,首先判斷兩個凸面體是否相交。基于凸面體相交檢測的碰撞檢測算法具有極高的檢測精確度,在多個測試樣本中,不會發生漏判或誤判。但算法在提高碰撞點檢測精確度的同時,也提高了模型的復雜度,從而導致計算復雜度的增加;若計算復雜度大到一定程度,碰撞檢測的實時性就不能保障。
為了進一步提高碰撞檢測的實時性,本文的危情生存模擬訓練系統引入了最小包裝盒法[10],并對算法作了改進。最小包裝盒算法的碰撞檢測時間對兩物體是否碰撞相當敏感,在2個物體未發生碰撞時,該算法能迅速檢測出它們沒有碰撞;而當2個物體發生碰撞時,則對發生碰撞的物體內的凸面體部分進行凸面體相交檢測,這樣能減少碰撞的檢測時間。由于仿真系統中大量的物體處于靜止狀態,用包裝盒法能迅速排除很多未發生碰撞的物體,提高了檢測速度。為同時滿足碰撞檢測的實時性與檢測精度高的要求,經過多次對比、分析,系統使用了基于相交碰撞檢測算法與包裝盒算法相結合的方法[11],既保證了檢測的精度,又提高了檢測速度。
2.3.3 高真實感圖像實時繪制技術 多細節層次(Levels of Detail,LOD)技術是一種有效的圖形生成加速方法,也是一種三維渲染技術。該技術在給定的圖形處理軟、硬件條件下,在不影響畫面視覺效果的前提下,根據視覺重要性原則,通過逐次簡化景物的表面細節來減小場景的幾何復雜度,從而提高圖形繪制的效率[12]。在計算機圖形學中,LOD技術的產生是為了減少某些復雜三維模型的運算;當視點變化時,所選取的細節層次模型各不相同,根據視野內物體的距離、重要程度或速度來確定要描繪的細節。如當視點離物體較近時選用描繪細致的模型,而當視點離物體較遠時則調用較粗略的模型;低速或重要的物體采用較細致的LOD,反之,則選擇較粗略的LOD。LOD技術是根據需要來選擇不同細節程度的物體表達方式,由于圖形計算工作量減少的物體通常是距離較遠的或是高速運動的物體,故視覺上因使用LOD技術而造成的模型質量的下降通常是難以察覺的[13]。LOD技術的主要難點在于如何快速構建并選擇幾何體的多層次細節模型,以及不同層次細節之間的自然過渡,避免在不同細節層次間切換引起視覺上的突跳感。本系統采用了一種改進的算法。該算法采用小波變換來得到幾何模型的多精度表示,其優點是能在簡化模型的同時較好地保持原模型的局部特征;也可以通過插值方法在近處和遠處這兩個區域間的幾何細節實現光滑的視覺過渡,從而形成幾何細節平滑過渡。
2.3.4 系統中的渲染技術 遮擋剔除是指當一個物體被其他物體遮擋時,不再對其進行渲染。常用遮擋剔除算法有兩種[14]:預處理遮擋剔除算法和實時遮擋剔除算法。預處理遮擋剔除法就是預先計算物體間的空間關系,并存儲渲染前需要預計算和預留額外存儲空間;在預處理遮擋剔除過程中,使用虛擬相機(視點)構建潛在可見對象集的層級視圖,并應用于整個場景。運行時,各相機使用這些數據來確定可見和不可見物體。有了該信息,Unity3D將確保僅發送可見對象進行渲染,從而減少繪制調用的次數,提高系統運行性能。在Unity3D里,遮擋剔除依靠中間件組件Umbra,該組件由Umbra軟件公司開發。Unity3D中采用潛在可視集合(Potentially Visible Set,PVS)和入口(Portal)的算法控制 Umbra的UI,在 Window→Occlusion Culling→Bake Tab下。
本系統開發過程中大量地運用了公告板(billboard)渲染技術[15],大大減少了場景渲染計算量,提高了系統的流暢度,降低了對開發環境配置的要求。公告板渲染技術主要是用于沒有固定表面效果的物體的快速展現,如煙霧、火焰、爆炸、云彩、樹木等。公告板技術與Alpha紋理、動畫技術結合混合使用,能夠以極低的系統資源實現豐富的繪制效果。
本文實現了危情生存模擬訓練系統的界面、場景和角色模型等的設計,并完成了角色模型、角色動畫的制作,開發了主要程序代碼,經過多次調試直至控制模型基本流暢。系統使用了由Unity3D引擎提供的高效的界面搭建功能組件,并利用OnGUI()函數加以控制,通過幀來調用腳本。系統將已經完成的Unity3D模擬訓練系統發布成.exe文件格式和.apk文件格式,然后分別在PC機和Android手機上進行真機測試。
本文研究的危情生存模擬訓練系統主要包括以下4部分:理論學習模塊、應用基礎實訓模塊、在線模擬訓練模塊和在線考試模塊。依照實訓內容的要求,各模塊提供相應的實訓功能:
(1)理論學習模塊。進入該模塊,首先通過選擇教材、篇章和小節來確定需要學習的知識;然后就能進入各種實訓場景,并通過對話、視頻、圖片等方式進行個人安全基本知識的學習。
(2)應用基礎實訓模塊。在應用基礎實訓中,可以根據需要選擇學習的內容和場景;在實訓時,還可以選擇個人防護裝備、外部環境等。實訓內容包括日常習慣與安全意識、危情處置流程學習、實際操作演練等。最后,對于本次實訓學習,完成一次綜合考評。
(3)在線模擬訓練模塊。系統以三維仿真技術為基礎平臺,搭載定制化開發的立體顯示設備,用戶佩戴立體眼鏡即可在任意環境下呈現不同的訓練畫面。模擬教學系統分別為初級學習和強化訓練者提供了人性化的學習方式,其包含了兩種學習模式:順序模式和自由模式。順序模式中,可以根據危情的正確處理流程進行逐步學習;在每項任務開始前會彈出提示框,提示下一步應該執行哪項任務,這樣可以幫助學習者快速了解相關應急處置流程。自由模式則可按照學習者自身需求,有針對性地對某項任務進行深入學習,不需要每次都重新開始學習整個流程。
(4)在線考試模塊。在線考試是對實訓的一次綜合考核過程。學習者可自行選擇模擬場景,參加模擬考試,考試結束后可立即查詢考試成績。圖5為地震逃生模擬訓練場景。

圖5 地震逃生的模擬訓練場景Fig.5 Simulated training scene of earthquake escape
為增強青少年的安全意識和自我保護意識,幫助他們提高預防安全隱患和正確處理傷害的能力以及危情生存能力,本文借助Unity3D平臺,基于虛擬現實與動漫多媒體技術,研究了危情生存模擬訓練系統,介紹了系統主要框架和關鍵技術。該系統基于虛擬現實技術,在模擬環境中進行安全教育與訓練,提高了學習者處理各種危險突發事件的能力,達到實戰訓練的效果;可以廣泛應用于青少年安全教育和突發事故應急處理能力的模擬訓練,具有比較廣泛的應用前景。
[1] 肖夢雪.虛擬現實技術與3D立體電影[J] .中國傳媒科技,2012(6):35-37.
[2] 干建松.基于Unity3D的室內漫游仿真系統[J] .淮陰師范學院學報(自然科學版),2011,10(6):515-518.
[3] 熊玉梅.虛擬環境中物體碰撞檢測技術的研究[D] .上海:上海大學,2011:97-98.
[4] 李遠鑫,蔣海鷗,徐亦飛,等.基于Web3D的交互式虛擬社區[J] .計算機工程,2011,37(11):288-290.
[5] 韓萬江,姜立新.系統工程與軟件工程[J] .計算機應用,2010,30(S1):212-214.
[6] Menard M.Game Development with Unity3D[M] .[S.L.] :Delmar CengageLearning,2012:75-78.
[7] Wang Xiangyu,Dunston P S,Proctor R,et al.Reflections on using agame engine system for construction excavator operators[J] .Iaarc,2011(19):631-636.
[8] 宣雨凇.Unity3D游戲開發[M] .北京:人民郵電出版社,2012:45-46.
[9] 孟祥旭.人機交互基礎教程[M] .2版.北京:清華大學出版社,2010:112-113.
[10] 何崗,李俊,張鋒.基于Unity3D的消防3D情景實訓系統的設計與實現[J] .軟件產業與工程,2014(6):43-48.
[11] 朱瑞瑾,鞏秀鋼,楊梁.基于DirectX的模擬駕駛系統的設計與實現[J] .山東理工大學學報(自然科學版),2010,24(6):88-91.
[12] 曾勇.基于Unity3D的挖掘機模擬訓練系統研究[D] .西安:長安大學,2013:97-98.
[13] 郭芮,蔣明,鄭劼恒,等.基于Unity3D的加油車虛擬訓練系統設 計[J] .機 械 設 計,2014,31(3):84-87.
[14] 潘丹.基于unity3D的手術訓練游戲的設計與實現[D] .濟南:山東大學2014:133-134.
[15] 倪萌.基于Unity3D的汽車發動機虛擬裝配訓練考評系統的設計與實現[D] .北京:北京工業大學,2014:75-76.