宋 杰 楊 健
(1.91550部隊91分隊 大連 116023)(2.91550部隊1分隊 大連 116023)
?
飛行器飛行試驗三維視景仿真系統(tǒng)設(shè)計與實現(xiàn)*
宋 杰1楊 健2
(1.91550部隊91分隊 大連 116023)(2.91550部隊1分隊 大連 116023)
介紹了一種基于Vega和Visual C++ 6.0的飛行器飛行試驗三維視景仿真系統(tǒng),給出了系統(tǒng)總體設(shè)計方案,闡述了系統(tǒng)實現(xiàn)的關(guān)鍵技術(shù)及系統(tǒng)調(diào)試過程。該系統(tǒng)具有人機(jī)交互界面友好,幀頻高、逼真性好等優(yōu)點。
三維視景; Creator; Vega; 仿真
Class Number TP391.9
在以往的飛行器飛行試驗仿真系統(tǒng)開發(fā)中,戰(zhàn)場實時態(tài)勢的顯示方式都是以數(shù)字海圖為背景、以二維軍標(biāo)(或簡標(biāo))形式顯示各類目標(biāo)數(shù)據(jù)信息,這種方式最大的優(yōu)點就是直觀簡潔,能清晰明確地表現(xiàn)戰(zhàn)場環(huán)境中各動態(tài)實體的實時狀態(tài)。但隨著計算機(jī)技術(shù)、圖形處理技術(shù)的發(fā)展,人們不再滿足這種簡單的顯示方式,希望能同時擁有一種更真實逼真的戰(zhàn)場態(tài)勢顯示環(huán)境,使自身陷入一種沉浸式、身臨其境的環(huán)境。為滿足這一要求,三維視景的開發(fā)逐漸成為新型戰(zhàn)場仿真環(huán)境系統(tǒng)開發(fā)中不可或缺的一部分,三維視景開發(fā)是通過構(gòu)建虛擬場景來模擬真實世界,并通過對虛擬場景的交互控制來模擬觀察和瀏覽真實世界[1]。
飛行器飛行試驗三維視景仿真系統(tǒng)就是通過對飛行器動力學(xué)仿真,模擬飛行器真實環(huán)境下的彈道特性,把仿真結(jié)果以動畫形式表現(xiàn)出來,根據(jù)仿真數(shù)據(jù)模擬飛行器從發(fā)射到擊中目標(biāo)的全彈道場景。
2.1 軟件開發(fā)工具
本系統(tǒng)使用Vega和Visual C++ 6.0作為軟件開發(fā)平臺,開發(fā)飛行器飛行試驗三維視景仿真系統(tǒng)。系統(tǒng)的設(shè)計開發(fā)分以下幾個步驟進(jìn)行:首先使用Multigen Creator建立了虛擬戰(zhàn)場環(huán)境,包括航區(qū)地形模型、自然景象模型、飛行器和艦艇等實體模型;其次利用Vega提供的用戶編程接口進(jìn)行二次開發(fā),實現(xiàn)發(fā)動機(jī)火焰、飛行器位置姿態(tài)、聲音效果等飛行器飛行特征;最終利用Vega場景驅(qū)動平臺開發(fā)環(huán)境和Visual C++6.0編程實現(xiàn)三維視景仿真[2]。系統(tǒng)利用函數(shù)庫Vega API和VC++6.0來搭建視景仿真驅(qū)動平臺。Vega是一個建立虛擬現(xiàn)實和實時仿真的應(yīng)用軟件,而VC++6.0的面向?qū)ο缶幊谭椒榻ㄔ煲粋€性能優(yōu)良的虛擬環(huán)境提供了更大的靈活性。
2.2 系統(tǒng)結(jié)構(gòu)框圖
飛行器飛行試驗三維視景仿真系統(tǒng)結(jié)構(gòu)框圖如圖1所示[3]。
圖1 三維視景仿真分系統(tǒng)結(jié)構(gòu)框圖
1) 根據(jù)地形數(shù)據(jù)庫,采用地形生成算法將地形數(shù)據(jù)文件轉(zhuǎn)換為多邊形網(wǎng)格,貼上相應(yīng)的紋理,生成3D地形模型。
2) 根據(jù)仿真需要和初始設(shè)定,模型動態(tài)調(diào)用子程序動態(tài)地調(diào)用3D模型庫中的模型加入到仿真應(yīng)用中。
3) 在仿真應(yīng)用中加入聲音數(shù)據(jù)、特殊效果、氣象模型等文件。
4) 模型的運動由HLA網(wǎng)絡(luò)傳輸?shù)膶崟r數(shù)據(jù)來驅(qū)動。碰撞檢測子程序負(fù)責(zé)各種碰撞的產(chǎn)生、碰撞效果和聲音的調(diào)用。
3.1 三維地形可視化技術(shù)
三維地形可視化是現(xiàn)實世界中真實地形的再現(xiàn),真實度高,必須采用具體數(shù)據(jù)構(gòu)造。地形的生成多采用數(shù)字高程模型DEM(Digital Elevation Model)建立地形的網(wǎng)格模型,然后通過紋理映射與光等技術(shù)再現(xiàn)真實地貌,其構(gòu)建基本流程如圖2所示[4]。
圖2 構(gòu)建三維地形基本流程
3.2 實體模型三維開發(fā)技術(shù)
實體模型三維開發(fā)采用Multigen Creator軟件,Multigen Creator文件儲存主要采用OpenFlight格式,該格式的模型數(shù)據(jù)庫可以完整描述一個三維虛擬場景中包括各種行為和聲音在內(nèi)的所有信息。OpenFlight格式是一種樹狀的層次化結(jié)構(gòu),可以方便地將模型按照幾何特性進(jìn)行有效的組織,并將其轉(zhuǎn)化為能夠方便地進(jìn)行編輯和移動的節(jié)點;而且這種樹狀結(jié)構(gòu)非常適合實時系統(tǒng)進(jìn)行各種遍歷操作。在飛行器飛行試驗實時仿真應(yīng)用中使用OpenFlight格式的模型數(shù)據(jù)庫,可以在獲得極高渲染效率的同時保證實時交互的靈活性[5~6]。由Multigen Creator創(chuàng)建的OpenFlight格式的艦船模型如圖3所示。
圖3 由Creator創(chuàng)建的艦船三維模型
3.3 基于MFC的Vega的應(yīng)用程序開發(fā)技術(shù)
當(dāng)整個場景模型完成后,就可以導(dǎo)入Vega中進(jìn)行三維視景的應(yīng)用開發(fā)。MultiGen Vega是MultiGen-Paradigm公司專門開發(fā)的一套完整用于交互式、實時可視化仿真應(yīng)用的軟件平臺,其基本功能是驅(qū)動、控制、管理虛擬場景并支持快速復(fù)雜的視覺仿真程序,快速創(chuàng)建各種實時交互的三維環(huán)境,快速建立大型沉浸式或非沉浸式的虛擬現(xiàn)實系統(tǒng)。
飛行器飛行試驗三維視景仿真系統(tǒng)采用Visual C++6.0與Vega實現(xiàn)實時仿真程序設(shè)計。對于在Windows平臺上開發(fā)Vega應(yīng)用程序,考慮到Vega函數(shù)是用C++語言編寫的,故采用Visual C++作為開發(fā)工具,特別是Visual C++中的MFC類庫是一個相當(dāng)成熟的類庫,基于該類庫開發(fā)的應(yīng)用程序不僅結(jié)構(gòu)合理緊湊,而且可以大大縮短開發(fā)周期。首先利用Visual C++6.0的應(yīng)用程序向?qū)梢粋€單文檔界面應(yīng)用程序框架,然后編輯和修改相應(yīng)的代碼,實現(xiàn)在視圖框架中顯示Vega的渲染窗口,再添加菜單、工具欄、對話框?qū)ega窗口的渲染過程進(jìn)行實時的交互式控制。
3.3.1 Vega應(yīng)用程序的基本框架和實現(xiàn)
Vega應(yīng)用程序可以分成兩個主要的階段,首先是Vega系統(tǒng)的靜態(tài)描述階段,然后進(jìn)入Vega系統(tǒng)的動態(tài)循環(huán)。Vega應(yīng)用程序框架圖如圖4所示[7]。
圖4 Vega應(yīng)用程序框架圖
第一個階段主要為Vega系統(tǒng)的正確運行進(jìn)行必要的系統(tǒng)配置,包括內(nèi)存分配,參數(shù)設(shè)置,Vega類的定義等。第二個階段主要為調(diào)用Vega應(yīng)用程序主循環(huán)。對Vega應(yīng)用程序設(shè)置完畢后,調(diào)用兩個函數(shù),實現(xiàn)在每一次新的顯示時更新三維場景中運動系統(tǒng)、運動體、觀察者、紋理等外部輸入信息,協(xié)調(diào)輸入輸出設(shè)備的同步,執(zhí)行用戶指定的系統(tǒng)回調(diào)函數(shù)。
而Vega仿真應(yīng)用程序主要是在Vega動態(tài)循環(huán)中實現(xiàn)的,故每一個Vega應(yīng)用程序都包含如下的函數(shù)語句[8]:
Void main(int argc,char *argv[])
{
vgInitSys();
vgDefineSys(argv[1]);
vgConfigSys();
while(1){
vgSyncFrame();
vgFrame();
}
}
vgSyncFrame()和vgFrame()函數(shù)一起決定了Vega進(jìn)程能夠與設(shè)定的幀頻率保持同步,從而能夠保證渲染出流暢的動態(tài)視景仿真畫面,再加上相應(yīng)的控制代碼就可以完成各種仿真要求[9]。
3.3.2 基于MFC的Vega的應(yīng)用程序開發(fā)
為了產(chǎn)生一個基于MFC的Vega應(yīng)用程序,首先要生成一個Visual C++單文檔應(yīng)用程序項目,其次編輯修改相應(yīng)代碼來實現(xiàn)在視圖框架中顯示Vega渲染窗口,并實現(xiàn)人機(jī)交互控制功能。
飛行器飛行試驗三維視景仿真系統(tǒng)中需要實時地進(jìn)行渲染循環(huán),這個過程非常耗時,需要使用線程來完成畫面的驅(qū)動及渲染。MFC中線程分為兩類:用戶界面線程和工作者線程;其中用戶界面線程用于處理輸入時間并對事件作出響應(yīng);工作者線程主要用于各種耗時的計算量大的場合。因此針對本仿真系統(tǒng)的實際需要,創(chuàng)建單獨的工作者線程來完成Vega驅(qū)動和渲染的任務(wù)[10]。
4.1 視點的控制與切換
視點控制采用了三種視點觀察方式:旋轉(zhuǎn)、跟蹤和靜止。跟蹤視點又以物體為中心,設(shè)定了八個跟蹤方位。為了讓用戶更清楚的觀察到視點切換時的位置變化,系統(tǒng)采用了線性插值的方式,使視點切換時可以由一個位置平滑移動到另一個位置,避免了跳變??刂泼姘逯袨槊總€仿真實體設(shè)定了按鈕,單擊可將視點的觀察中心切換到所選物體上。系統(tǒng)還設(shè)計了鍵盤控制熱鍵,用數(shù)字鍵和SHIFT加數(shù)字鍵可以快速切換觀察物體。各種視點切換控制都可以通過可視化界面或鍵盤控制。
4.2 演示系統(tǒng)中的數(shù)據(jù)記錄與回放
Vega Prime提供類記錄模塊(VCR)用來記錄仿真過程。VCR的作用類似于錄像機(jī),記錄的文件只能以記錄時的視點觀看,沒有人機(jī)交互功能,而且記錄的文件大量占用硬盤空間。本系統(tǒng)采用幀頻來記錄數(shù)據(jù),記錄每個運動實體的運動軌跡。這樣能節(jié)省大量的系統(tǒng)資源和磁盤空間,回放不需要啟動整個網(wǎng)絡(luò),而且回放過程可以控制視點的切換,比用VCR方式記錄的視頻數(shù)據(jù)要高效。在數(shù)據(jù)回放時,用戶通常希望能有不同的回放速度。解決的方法是:用線性插值的方法來實現(xiàn)慢放,用跳點讀取數(shù)據(jù)的方法來實現(xiàn)快放。
圖5 三維視景仿真實例動畫截圖
圖5為某型飛行器飛行試驗三維視景仿真實例動畫截圖。飛行器飛行試驗三維視景仿真系統(tǒng)畫面逼真流暢,顯示頻率≥30幀/秒;具有良好的聲音效果;操作人員可以通過鍵盤和鼠標(biāo)在不同視點間任意切換。
本飛行器飛行試驗三維視景仿真系統(tǒng)基本實現(xiàn)了飛行器試驗鑒定數(shù)字仿真系統(tǒng)三維視景仿真的要求。具有人機(jī)交互界面友好,幀頻高、逼真性好等優(yōu)點。該系統(tǒng)使飛行器設(shè)計人員可直觀地觀察飛行器的飛行過程、飛行姿態(tài)及目標(biāo)的運動形式,由此分析彈道的設(shè)計是否合理。尤其在飛行器武器系統(tǒng)的初步設(shè)計階段,客觀條件還不允許進(jìn)行實彈打靶試驗時,設(shè)計者可以利用飛行器飛行試驗三維視景仿真系統(tǒng)模擬打靶試驗,給彈道設(shè)計提供更為可靠的實驗依據(jù),從而縮短研發(fā)周期,節(jié)省研究經(jīng)費。
[1] 雷剛,鮮勇.彈道導(dǎo)彈飛行彈道的三維仿真[J].計算機(jī)仿真,2005,8:32-34.
[2] 唐勝景,汪群山,王憲宗,等.基于Visual C++和Vega的飛行器虛擬飛行仿真系統(tǒng)[J].北京理工大學(xué)學(xué)報,2007,27:5413-416.
[3] 宋強(qiáng),康風(fēng)舉.一種海上戰(zhàn)場視景仿真系統(tǒng)的開發(fā)[J].計算機(jī)仿真,2009,3:16-20.
[4] 陳娟,羅星.三維視景開發(fā)中的視景數(shù)據(jù)庫建模與優(yōu)化[J].艦船電子工程,2008,4:135-138.
[5] 孟曉梅,劉文慶.Multgen Creator教程[M].北京:國防工業(yè)出版社,2005:35-140.
[6] 王乘,周均清,李利軍.Creator可視化仿真建模技術(shù)[M].武漢:華中科技大學(xué)出版社,2005:156-270.
[7] 王乘,李麗平.Vege實時三維視景仿真技術(shù)[M].武漢:華中科技大學(xué)出版社,2005:65-180.
[8] 懷紅旗,王愛民.基于MFC和Vege的導(dǎo)航仿真系統(tǒng)[J].現(xiàn)代電子技術(shù),2005,2:167-170.
[9] 劉杰,雷斌.基于Vege和MFC的靶場虛擬漫游系統(tǒng)[J].電腦與信息技術(shù),2007,6:11-13.
[10] 侯俊杰.深入淺出MFC[M].武漢:華中科技大學(xué)出版社,2001,230-280.
Design and Implementation of Three-dimension Visual Simulation System of Aircraft Flight Test
SONG Jie1YANG Jian2
(1. Unit 91, No. 91550 Troops of PLA, Dalian 116023)(2. Unit 1, No. 91550 Troops of PLA, Dalian 116023)
Three-dimension visual simulation system of aircraft flight test based on Vega and Visual C++ 6.0 is introduced. The overall plan of the design of the system is explained in the paper, the key technology and debugging process of the system is expounded, the system has good man-machine interface, high frame rate and realistic.
three-dimension visual, Creator, Vega, simulation
2014年9月16日,
2014年10月27日
宋杰,男,工程師,研究方向:飛行器發(fā)射環(huán)境參數(shù)測量與分析。楊健,男,工程師,研究方向:飛行器總體研究。
TP391.9
10.3969/j.issn1672-9730.2015.03.023