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