程乃偉,董宇佳,李 想,蔣波沱,黃 輝(沈陽航空航天大學安全工程學院,沈陽110136)
基于Vega Prime的虛擬應急救援系統遠程通信方法研究
程乃偉,董宇佳,李想,蔣波沱,黃輝
(沈陽航空航天大學安全工程學院,沈陽110136)
摘要:本文利用視景驅動引擎Vega Prime模擬出應急救援的場景,采用MFC的單文檔應用程序架構,在遠程通信方面運用的是數據報套接字并將其通信功能封裝成動態鏈接庫。重點介紹了在各個應急小組的界面場景中,所有車輛位置都達到了同步更新,體現了應急救援系統的遠程通信。
關鍵詞:Vega Prime;虛擬應急救援;遠程通信
隨著計算機硬件技術以及網絡技術的提高,虛擬仿真技術能最大程度上模擬出各類災害。同時虛擬應急救援系統可以用來檢查發現各個應急小組的決策,各個救援人員在應急處置過程中存在的問題,使得整個應急演練科學化、智能化、虛擬化,減少應急演練費用[1]。因此,本文利用視景驅動引擎VegaPrime和套接字技術,構建出事故現場,實現了虛擬應急救援系統中的遠程通信。
1.1VegaPrime
VegaPrime是MultiGen-Paradigm公司推出的最新的三維虛擬現實開發工具,具有面向對象、功能強大、界面友好、平臺兼容性好等特點[2]。其中LynXPrime界面主要包括實例樹的顯示區,用戶操作區,應用程序區,工具欄菜單區四部分。它使得用戶可以輕松的完成從模型的導入、位置狀態參數的設定到運動模式的選擇、特效的顯示、環境的配置、觀測者的狀態、窗口通道的設定等整個虛擬場景的初始化配置,并可通過實時動態預覽參數設置的效果,最后生成acf格式應用文件,可以直接運行也可以在程序中調用。
1.2UDP協議
UDP協議一般采用數據報式套接字,是一個簡單的面向數據報的運輸層協議:進程的每個輸出操作都正好產生一個UDP數據報,并組裝成一份待發送的IP數據報。該協議是一種無連接的不可靠的協議,它不對發送的分段做任何的軟件檢查。UDP的優勢在于傳輸速度,因為它不提供數據傳送保證機制,并且用于控制的通訊量很小。
因此,采用UDP協議較為理想。對于UDP協議的不可靠性,可以采用在發送的報頭中加入數據長度信息,在接收方對數據進行檢驗的方法,從而保證了接收數據的可靠性。
2.1場景的搭建
在LynXPrime界面上將所需的模型包括地形、建筑、車輛等導入到該場景中。根據實際情況調整好坐標(X,Y,Z)和姿態(H,P,R),符合笛卡爾坐標系的右手定則。然后創建火焰特效,這是LynX Prime的實時特效庫來配置的,這些都是VegaPrime系統設定好的模塊,不需要用戶去設定粒子系統模塊對象并設置相應的參數,當然消防車的噴水效果需要用戶自己調的,因為VegaPrime的粒子系統設定參數比較復雜,而且還涉及到紋理的處理,這不是本文的重點,所以在這里就不多介紹了。
2.2基于MFC單文檔架構的VegaPrime程序
構建基于單文檔的VegaPrime程序中,有兩種方法可以實現,既定時器方法和線程方法。定時器方法主要是基于一個定時器,在設定好的時間內刷新每一幀。而線程的方法是在程序中另外創建一個windows線程,然后將VegaPrime所有的內容寫入這個線程里[3]。本次研究是基于定時器方法的,下面是實現的方法。
在CVPView類中添加三個消息映射WM_CREATE、WM_TIMER和WM_SIZE,重載虛函數OnActivateView。在OnCreate函數里實現VP的初始化,OnTimer函數實現VP的幀循環,OnSize函數實現VP窗口大小的更新,OnActivateView函數里獲得VP窗口的輸入焦點[3],方便之后鍵盤操作。
2.3通信的建立
本次研究將整個通信功能封裝成動態鏈接庫,含有注冊通信函數的頭文件和通信所需的配置文件,方便了后期組建虛擬應急救援系統的通信網絡,同時也實現了場景和通信同步開發,增強了項目開發的效率。
在這個系統中,各個小組之間的通信分為“一對一”的單播通訊和“一對一組”的組播通信。單播通訊主要是各個應急小組向指揮小組發送的消息,組播通訊是各個小組場景實時的更新包括車輛位置、消防車噴水狀態、火焰狀態和指揮小組向全體應急小組所發的指令消息等。
(1)在主框架類中加載通信的動態連接庫,并在OnCreate函數里注冊組播通訊。
(2) 在VPView類 的OnTimer函 數 里 調 用getTranslate()和getRotate()這兩個函數實時獲得車輛位置信息。
(3)自定義一個消息,將獲得的車輛位置信息,發送給主框架類,其調用動態鏈接庫的函數,發送組播數據。
(4)接受組播消息也是在主框架類中調用動態鏈接庫的函數,將接收到的網絡數據以消息的形式發送給VPView類,VPView類得到消息調用setTranslate()和setRotate()這兩個函數,刷新車輛位置。
另外其它的組播消息和單播消息過程類似,只是調用的函數不同罷了。
本文基于MFC單文檔應用程序框架,結合VegaPrime視景開發,利用其自帶的API函數控制場景中的車輛運動。經過實踐證明,在整個系統的模擬過程中,使用數據報套接字進行遠程通信,能使各個應急小組的場景數據同步更新以及各小組間的能夠實時的進行交流,最大程度上還原現實應急救援的過程。另外還可以考慮將模擬演練中的各種信息寫入遠程的網絡數據庫上,方便演練之后進行查閱。而研究存在的問題,可進一步完善整個應急救援的過程,從而達到模擬演練的目的。最后,為保證場景渲染的流暢性,應考慮使用高性能的顯卡進行模擬。
參考文獻:
[1]孫成江,劉林.應急救援模擬演練系統設計與實現初探[J].石油工業計算機應用,2010,67(03):3-6.
[2]王孝平.Vega Prime實時三維虛擬現實開發技術[M].西南交通大學出版社,2007.
[3]趙常壽,韋宏強,樊蓉.基于MFC單文檔定時器的Vega Prime應用程序設計[J].電腦編程技巧與維護,2013,17(03):62-64.
作者簡介:程乃偉(1960-),男,遼寧沈陽人,碩士,教授,碩士生導師,研究方向:信息化安全技術。