程乃偉,楊天卓
沈陽航空航天大學(xué)安全工程學(xué)院,遼寧沈陽 110000
飛行模擬器HUD開發(fā)及在VP中的實(shí)現(xiàn)
程乃偉,楊天卓
沈陽航空航天大學(xué)安全工程學(xué)院,遼寧沈陽 110000
平視顯示器(HUD)是飛機(jī)模擬器模擬飛行仿真開發(fā)系統(tǒng)中的一個(gè)重要組成部分,其視景不僅顯示飛機(jī)的位置和姿態(tài),還提供最直觀的數(shù)據(jù)供飛行員參考,使飛行員不需頻繁低頭查看座艙儀表就能了解飛機(jī)的當(dāng)前高度、航向和速度等實(shí)時(shí)信息。所以在模擬視景中加入HUD仿真設(shè)計(jì)是非常必要的。HUD的仿真設(shè)計(jì)是基于GL Studio儀表仿真工具,結(jié)合VS.NET2003編譯環(huán)境,并最終嵌入到Vega Prime(VP)場景。以某型飛機(jī)模擬座艙為例,給出了其HUD仿真模型的基本建模步驟,并對(duì)HUD建模的關(guān)鍵技術(shù)及如何將HUD移植到場景中進(jìn)行了深入探討。
GL Studio;平視顯示器;飛機(jī)模擬座艙;仿真
隨著計(jì)算機(jī)虛擬仿真技術(shù)的發(fā)展,基于計(jì)算機(jī)的模擬學(xué)習(xí)和作戰(zhàn)訓(xùn)練系統(tǒng)被廣泛使用。飛機(jī)模擬器能夠培養(yǎng)飛行員的實(shí)際操作能力和解決問題能力,給飛行員提供真實(shí)的感覺,以安全、科學(xué)、經(jīng)濟(jì)、高效的方式完成對(duì)飛行員的必要訓(xùn)練。因此,基于虛擬現(xiàn)實(shí)技術(shù)的模擬器設(shè)計(jì)將是仿真領(lǐng)域未來發(fā)展的潮流和趨勢。如何能高效逼真地模擬實(shí)裝,符合教學(xué)和訓(xùn)練的需要,是系統(tǒng)開發(fā)和設(shè)計(jì)人員亟待解決的一個(gè)重要難題。
GL Studio是一個(gè)獨(dú)立平臺(tái)的快速原型工具,用來創(chuàng)建實(shí)時(shí)的、照片級(jí)別的、可交互的圖形界面。GL Studio被用于HUD建模的選擇依據(jù)主要有以下幾個(gè)方面。
1)GL Studio不僅提供了儀表開發(fā)平臺(tái)和開放的對(duì)外接口,同時(shí)還可與眾多第三方軟件集成在一起,例如:VP、MatLab等。
2)GL Studio編輯器是一個(gè)3D所見即所得的繪制工具,包括了用戶所期望的所有圖形界面元素。
3)GL Studio代碼生成器已經(jīng)內(nèi)嵌到編輯器中,它允許程序員將編輯器繪制的圖形轉(zhuǎn)換成可移植的C++代碼。
4)GL Studio生成的人機(jī)接口有兩種方式與外界交互,一種是通過協(xié)議讀取外界數(shù)據(jù)來驅(qū)動(dòng)儀表顯示;一種是通過GL Studio提供的Call Back功能使圖形化對(duì)象可以響應(yīng)用戶界面事件。
使用GL Studio工具開發(fā)HUD建模過程簡單,生成代碼易于理解。下面以某型飛機(jī)HUD為例,介紹HUD仿真模型的開發(fā)過程。
2.1 HUD界面設(shè)計(jì)
機(jī)模擬座艙視景畫面中HUD界面顯示基本信息主要包括:飛機(jī)當(dāng)前高度、速度、航向、飛機(jī)姿態(tài)等信息,如圖1中上、左、右及中間刻度帶所指示。打開VS2003編程軟件創(chuàng)建一個(gè)儀表項(xiàng)目,從生成的HUD.gls格式程序進(jìn)入,就可以創(chuàng)建這些信息的圖形并編輯驅(qū)動(dòng)代碼。以下以航向刻度帶為例介紹建模主要步驟。
航向刻度帶運(yùn)作機(jī)理是刻度線及上方數(shù)字橫向滾動(dòng),刻度線下方指針指示的就是當(dāng)前飛機(jī)航向。
1)刻度線的創(chuàng)建:在圖形設(shè)計(jì)畫布上使用工具欄中Inserts a GlsLinearScale創(chuàng)建一段刻度線,在編輯器主控制窗口重新命名為heading,右鍵打開heading的對(duì)象屬性窗口,選中兩組線并根據(jù)圖示比例設(shè)置線段間隔、長度、線寬及數(shù)量。
2)數(shù)字顯示:使用工具Inserts a Gls TextGird在每個(gè)刻度線上方創(chuàng)建數(shù)字顯示。命名中間數(shù)字顯示為Center,打開Center屬性,設(shè)置數(shù)字的大小、字體效果及位數(shù)。
圖1 HUD界面
2.2 HUD代碼設(shè)計(jì)
創(chuàng)建完圖形元素后,為這些元素的驅(qū)動(dòng)添加代碼實(shí)現(xiàn)。在Code代碼編輯區(qū)創(chuàng)建一個(gè)Property并命名為Heading,航向刻度帶實(shí)時(shí)顯示實(shí)現(xiàn)代碼及講解如下:
static float scale = -60.0f/1.0f; //刻度間距在圖形編輯區(qū)的像素差
char Center[16],Left[16],Right[16];
float adjustedHeading;
_heading = value/10; //數(shù)字顯示36實(shí)際代表航向360,所以需對(duì)接收數(shù)值進(jìn)行處理
adjustedHeading= fmodf(_heading,36.0f); //為了實(shí)現(xiàn)航向刻度帶360度循環(huán)滾動(dòng)
int center = (int)adjustedHeading;
center = center - (center % 1);
sprintf(Left,“%2d”,CalcHeading(center-1));
sprintf(Center,”%2d”,CalcHeading(center));//根據(jù)中間刻度數(shù)字顯示值,顯示左右值
sprintf(Right,”%2d”,CalcHeading(center+1));
leftReadout-〉String(Left);
centerReadout-〉String(Center);
rightReadout-〉String(Right);
float diff=adjustedHeading-center;//計(jì)算位移差
HeadingGroup-〉Location(startLoc. x+diff*scale,startLoc.y,startLoc.z);//根據(jù)位移差值,左右移動(dòng)整個(gè)刻度帶圖形構(gòu)成元素
3.1 獨(dú)立圖形對(duì)象
為了便于部分圖形及代碼的修改和重用,在創(chuàng)建類似刻度帶這種塊狀結(jié)構(gòu)時(shí),可使用工具欄中Converts Selected To Component來獨(dú)立塊。而在需要使用該模塊的地方Inserts a Component就可以直接調(diào)用。如圖1中,航向刻度帶就是HUD.gls通過添加組件形式添加進(jìn)來,打開組件就可以直接進(jìn)行圖形設(shè)計(jì)和編寫驅(qū)動(dòng)代碼。
3.2 隱藏圖形邊界
為了讓圖形元素在一定范圍內(nèi)顯示,如運(yùn)行時(shí)只要顯示航向刻度帶的中間三個(gè)刻度,實(shí)現(xiàn)方法如下:
1)在編輯器Generation中選中User Defined Base Class選項(xiàng),在Base Class Name中填寫public GlsComponentScissor。
2)在畫布中創(chuàng)建一個(gè)矩形框框住需要顯示航向刻度的部分,并在編輯器Geometry中把這個(gè)矩形框重新命名為clipThis。
3)在編輯器Code中Initialize()函數(shù)中添加函數(shù)語句:SetViewport(clipThis);通過調(diào)用該函數(shù)實(shí)現(xiàn)對(duì)clipThis矩形框外的圖形的隱藏。
4)在GL Studio項(xiàng)目中,引用包含該函數(shù)的頭文件gls_component_scissor.h。功能實(shí)現(xiàn)代碼如下:
4.1 準(zhǔn)備工作
VP不能導(dǎo)入由GL Studio直接生成的*.gls模型文件,但可以接受VC環(huán)境下生成的*.dll文件。打開GL Studio項(xiàng)目程序,在啟動(dòng)一欄選擇LiveComponent Debug,成功編譯后在相應(yīng)文件夾下就會(huì)產(chǎn)生動(dòng)態(tài)鏈接庫*.dll文件。
4.2 移植方法
為了能夠在基于VP的視景中導(dǎo)入GL Studio模型,需要安裝GLS_Vega_Prime_2_9_2_Setup_vc71插件,安裝好插件重新打開VP圖形編輯器,在創(chuàng)建實(shí)例中就會(huì)多出一個(gè)vpGlStudio類。添加該類的實(shí)例對(duì)象,就可導(dǎo)入HUD在VS.NET2003環(huán)境中生成的動(dòng)態(tài)鏈接庫文件。
4.3 單位轉(zhuǎn)換
VP與GL Studio采用的基本單位不同,在沒有任何處理的情況下,在場景中移植過去的HUD會(huì)非常大,應(yīng)根據(jù)實(shí)際需求并以場景地平線位置為對(duì)齊標(biāo)準(zhǔn)縮放HUD仿真模型的大小。
目前,該HUD仿真軟件已成功應(yīng)用于某飛機(jī)模擬座艙當(dāng)中,為仿真飛行狀態(tài)參數(shù)顯示提供了良好的界面,實(shí)現(xiàn)了設(shè)計(jì)HUD仿真模型的初衷。經(jīng)開發(fā)實(shí)踐證實(shí),GL Studio 建模形象逼真、效率高、代碼移植性好,將其廣泛應(yīng)用于飛機(jī)模擬座艙的仿真開發(fā)已成為趨勢,但要做到更加完美逼真的虛擬仿真,需要融合多種仿真開發(fā)平臺(tái)和更多相關(guān)理論支持。
[1]謝廣輝,邱淑范.基于虛擬現(xiàn)實(shí)技術(shù)的飛行訓(xùn)練模擬器探討[J].中國航天,2001(10).
[2]趙經(jīng)成,付戰(zhàn)平,于輝.等.虛擬仿真訓(xùn)練系統(tǒng)在航空裝備技術(shù)保障領(lǐng)域的應(yīng)用[C]//第四屆長三角科技論壇航空航天與長三角經(jīng)濟(jì)發(fā)展分論壇暨第三屆全國航空維修技術(shù)學(xué)術(shù)年會(huì)論文集,2007.
[3]李海浩,朱寧龍,田立軍.基于GL Studio 的虛擬面板的開發(fā)研究[J].科技信息,2009(22).
[4]朱淵超,車建國,楊作賓,等.基于GL Studio的某型雷達(dá)面板仿真[J].電腦開發(fā)與應(yīng)用,2006,19(5).
TP39
A
1674-6708(2015)142-0104-02
程乃偉,碩士,教授,研究方向:系統(tǒng)安全工程、事故仿真、應(yīng)急救援
楊天卓,碩士生,研究方向:虛擬仿真