黃 旭 何傳易 楊德輝
(中國人民解放軍93199部隊司令部信息管理中心,黑龍江 哈爾濱150006)
隨著虛擬仿真技術的不斷發展和創新,使得將飛機座艙搬進教室成為可能。筆者結合某型飛機座艙儀表多、參數交聯復雜的特點,選擇了開發周期短、組件復用性好的GL Studio軟件來實現虛擬儀表仿真開發,并采用Vega Prime進行3D場景驅動,實現了GL Studio組件與Vega Prime間的結合和交互控制。
GL Studio是由美國DiSTI公司開發,使用OpenGL圖形庫建立實時、照片級、交互式圖形的虛擬儀表仿真程序的軟件。它獨立于平臺,可以運行于Windows NT、IRIX和Linux操作系統上。GL Studio提供了友好的設計界面,其代碼生成器能把美工人員設計繪制好圖形文件一鍵生成c++和OpenGL的源代碼,生成的可以源代碼單獨運行,也可以嵌入其他應用程序中。此外GL Studio組件的復用性極好,由GL Studio設計器創建的對象能容易地轉變成一個組件對象,當一個組件對象創建之后,就可以輕松地重復使用該對象[1]。
GL Studio是基于對象的虛擬儀表開發工具,將對象的開發過程分成建立圖形對象和建立行為代碼兩部分,前者由美工人員完成,后者則由編程人員完成。
其基本的開發流程如圖1所示。

圖1 GL Studio基本開發流程
美工人員收集真實儀表圖片素材,經過紋理提取和修飾以后,使用GL Studio的設計器進行界面布局,并對創建的對象有效地命名(符合C++命名規則及要求);編程人員除需掌握基本的C++語言編程技術外,還需熟悉儀表知識,并根據儀表功用,在界面設計基礎上創建對象的動作代碼,經過測試集成后發布最終仿真程序。
飛機座艙儀表仿真要求虛擬儀表能及時影響用戶操作,并能實時動態地顯示仿真數據,實現輸入設備與顯示部件之間的數據交互功能。常用到的輸入設備包括開關、按鈕、旋鈕等,GL Studio對大多數類型的輸入設備提供了封裝插件,大大減輕了開發人員的工作量。對于一些不常用的操作部件,則可以利用InputDevice控件通過編程響應鼠標事件來實現。
儀表設備基本顯示部件包括指針、指示燈、數字滾輪刻度盤、LED數碼管等。對于指針和指示燈類的顯示部件,GL Studio提供了大量函數進行指示控制,常用的函數有:
●動態旋轉:DynamicRotate(float,int);
●動態平移:DynamicTranslate(float,float,float,bool);●動態縮放:DynamicScale(const Vector&);●閃爍:Blinking(bool);
●顯示/隱藏: Visibility(bool);
對于數字滾輪刻度盤,GL Studio提供了GlsOdometer對象,用戶僅需設置好參數即可復雜的數字滾輪刻度盤功能;對于LED數碼管則可以使用GlsTextGrid字符類對象來實現。
GL Studio提供的大量的封裝插件和指示控件函數,實現了儀表數據的實時交互和動態顯示,逼真地還原了儀表的工作狀態。此外,用戶還可以使用PLAY_SOUND(o,index)宏播放指定編號的聲音,來響應用戶的鼠標操作,從而進一步增強操作的真實感。
Vega Prime是由MultiGen-Paradigm公司推出的最新VR開發平臺,具有面向對象、功能強大、界面友好、平臺兼容性好等特點[2]。其基本開發流程包括建立模型、場景設置和編寫驅動控制程序三部分:建立模型主要是完成各種仿真對象和地形等的3D建模工作,通常用第三方工具如 GL Studio(儀表)、3DMAX、Creator、Terravista(地形)等完成;場景設置指利用LynX Prime對應用程序及場景進行基本的配置,包括應用參數配置(如窗口、通道等參數)、環境設置、對象初始位置姿態設置以及某些特效設置等,設置完成后生成*.acf配置文件供程序加載使用;編寫驅動控制程序則是利用Vega Prime的應用程序編程接口(API),在VC++環境下實現VR仿真驅動控制程序的編寫、調試和發布,本文采用的是VS.NET2005(對應VC8.0版本)編程環境。
VC++工程類型可以分為:控制臺(Console)應用程序、Windows應用程序和基于MFC的應用程序。MFC是比較流行的基于文檔/視圖結構的應用程序框架,封裝了大量的Windows API函數,已成為開發Windows應用程序的主流框架結構,而標準的Vega Prime視景仿真程序為控制臺應用程序。為此我們將標準的Vega Prime仿真驅動程序改造成基于MFC對話框的驅動程序。
改造后的驅動控制程序在MFC對話框進程完成對話框初始化,啟動Vega Prime渲染進程完成系統初始化、定義、配置、仿真循環等工作。初始化用來VP系統初始化,創建內存等;定義、配置是通過讀取和解析LynX Prime應用程序生成的*.acf場景設置文件,創建三維模型,建立仿真對象與C++類之間的關系,完成場景加載工作;仿真循環則是根據仿真數據,完成場景渲染、漫游控制、數據交互等工作,在MFC下我們使用定時器對幀循環進行頻率控制,從而保證數據同步。
在GL Studio中完成飛機座艙儀表面板的制作后,可以利用VC將 GL Studio 模型文件(*.gls)制作成動態鏈接庫文件(*.dll文件)。 虛擬場景創建完畢之后,需將做好的飛機座艙虛擬面板的動態連接庫文件導入虛擬場景中,但Vega Prime本身并不支持GL Studio模型的直接加載,因此需要安裝配套的vpGLStudioPlugin插件,該插件使Lynx Prime場景編輯器可以直接加載GL Studio生成的動態鏈接庫文件,并將其生成為一個vpGLStudioComponent類,方便地實現了GL Studio組件與Vega Prime的交互控制功能,大大降低了系統的開發難度和成本。
使用vpGLStudioComponent類中的setAtrib函數可以將仿真數據傳遞給GL Studio虛擬儀表面板,從而控制儀表的狀態、動作和顯示數據,該函數傳遞的數據類型為字符型,因此在傳遞前需進行數據類型轉換。
不同儀表面板之間,儀表面板與仿真驅動程序間的數據交換則可以使用網絡通信、消息傳遞等方式進行傳遞。
當虛擬儀表面板上的元件發生動作時,向仿真驅動程序窗口發送消息:

飛機虛擬座艙系統對飛機、機場和地形等各種仿真對象進行了3D建模工作,采用GL Studio制作虛擬儀表仿真程序,利用Vega Prime進行系統的場景仿真驅動,飛機的仿真數據由飛行解算程序仿真計算得出,通過網絡通信采用無連接的UDP協議方式與系統進行數據交換。完成后的飛機虛擬座艙系統運行界面及效果如圖2所示。

圖2 飛機虛擬座艙系統運行效果
虛擬現實技術在飛行領域有廣泛的應用前景,特別在航空理論教學中,虛擬現實技術的應用不僅能激發學員的學習興趣,提高教學效率,而且安全可控、易于復制,降低了教學成本。本文通過某型飛機虛擬座艙系統的研究與實現,為航理教、學人員提供了逼真的飛機虛擬座艙仿真環境,同時也建立了基于Vega Prime的虛擬仿真程序的基本開發流程和程序框架,為開發其它虛擬現實仿真程序提供了參考和基礎。
[1]于輝,趙經成,等.GL Studio虛擬儀表技術應用與系統開發[M].國防工業出版社,2010.
[2]王孝平,董秀成,等.Vega Prime實時三維虛擬現實開發技術[M].西南交通大學出版社,2012.
[3]李萬,王學軍,崔小鵬.GL Studio與Vega Prime在某艦炮虛擬訓練仿真系統中的應用[J].火炮發射與控制學報,2010,6.
[4]陳懷民,吳錦雯,黃曉波.基于GL Studio的飛行仿真虛擬儀表軟件設計與實現[J].測控技術,2013.
[5]楊建國,王乘.基于Multigen和Vega的虛擬現實技術[J].計算機仿真,2003.