摘要:本文分析了Vega 開發環境的主要特點及Lynx各個模塊的功能,重點討論了在Vega 環境下利用Lynx開發虛擬現實應用程序的主要過程,從而完成虛擬仿真軟件的開發。
關鍵詞:Vega;Lynx;應用程序接口
中圖分類號:TP391.9 文獻標識碼:A
1 引言
目前在視景仿真領域用于視景場景管理的軟件種類復雜,比較流行的有MultiGen Vega、OpenGVS、Vtree、WTK、OpenInvetor等。每種軟件都有各自不同的特點,各個公司也有自己不同的營銷策略。其中Vega作為當前實時視景仿真領域的主流高層開發平臺,是一種高性能的場景管理軟件,用于實時視景仿真、虛擬現實、科學計算可視化等。Vega具有很好的圖形環境界面,豐富的應用程序接口API和實用函數庫以及大量功能模塊,可以為復雜的應用方便快捷地建立場景模型數據的驅動。
2 Vega軟件簡介
Vega是MultiGen-Paradigm公司推出的實時視景仿真軟件環境,主要包括兩個方面:一是可視化的圖形編程環境Lynx;二是完整的C語言應用程序接口API。Lynx是點擊式圖形環境,只需鼠標點擊就可以驅動圖形,可以快速、容易地改變應用性能、顯示通道、多CPU資源分配、視點、特殊效果、運行時間、系統配置、模型和數據庫等等,而這些都不涉及源碼。它能夠使用戶在極短的時間內開發出完整的實時仿真應用。它將最后的仿真應用程序存儲為ADF(Application Definition File)格式。通過C語言接口來實現對視景仿真應用進行軟件控制,使用戶實現更靈活的視景仿真系統。所有的Vega應用程序接口包括頭文件、相關類及函數命名都以Vg開頭。每一個Vega類是一個完整的控制結構,可以隨意地設置和改變模型的屬性。
LynX提供了很多功能模塊,大大提高了仿真對象模型構造效率。借助LynX,只需修改某些參數,不用編寫任何代碼或進行編譯處理,就可以構造出仿真對象模型。在仿真對象模型中,可以指定可見對象、操縱方式、運動方式、視點與操縱對象間的關系、顯示通道、光照環境、云霧、運動對象與其他對象間交叉關系、聲音及觸發方式等。Lynx編程環境的具體作用為:
(1) 圖形用戶界面軟件(運行Lynx軟件,顯示界面);
(2)以圖形界面的形式,供用戶設置環境、操作參數等;
(3) 定義、生成和預覽Vega應用程序;
(4) 參數設置結果生成、存儲在ADF文件。
3 利用Lynx編程環境進行二次開發
我們利用Lynx編程環境進行二次開發時,首先要用Lynx編程環境建立一個最簡單的ADF文件。由于它的各類參數已自動設置(缺省值),各類之間的關聯已自動建立。我們只需要編程實現對少量特定參數的設置或修改,就可以實現特定的目標。
關于Lynx編程環境需要注意的是:
(1)Lynx編程環境首先用缺省值為每一個類設置參數;
(2)Lynx編程環境自動建立各類之間的關聯關系;
(3)用戶使用Lynx編程環境實際上是對缺省值進行修改,以實現特定的目標。
關于Vega類需要注意的是:
(1)類內一些參數是必設項,必須設置;
(2)類與類之間存在著關聯,必須正確建立這些關聯關系;
(3)二次開發編程必須用語句實現每一種關聯關系。
利用Lynx編程環境建立ADF文件,并用ADF文件設置系統,可以使我們將精力集中在特定的問題上,大大減少編程工作量。
用Lynx建立一個ADF文件,我們需要注意:三維模型文件是以Object的形式調入的,經歷了文件到數據集(DS),最后投入場景(Scenes)的過程;Observer與Motion關聯在一起,通過對Motion的控制實現對Observer的運動控制。通過以上關聯,我們設定需要的參數,許多的選項可以采用默認選項。完成后保存的ADF文件,我們可以用“記事本”打開該文件,顯示其內容及存儲數據格式。
Vega有三種應用程序模型:
(1)經典模型,主程序為main();
(2)標準的Windows應用程序,主程序為WinMain();
(3)基于MFC的Windows應用程序。
其應用程序模式如下:
vgInitSys();//初始化系統
vgDefineSys( \"myapp.adf\" );//定義系統
vgConfigSys(); //設置系統
while( 1 ) {//實時循環體
vgSyncFrame();//循環同步控制
vgFrame();//調用內部函數
}
應用程序前半部分設置系統;循環體是實現場景動畫瀏覽的程序部分。一般在循環體前設置各個類的參數,根據需要少量參數可在循環體內設置。
以上程序編譯運行后就可以對myapp.adf文件定義的場景進行漫游。如果添加了用戶定制代碼,則可以根據定制代碼控制場景的變化。之所以這么幾條語句就完成了一個模擬場景漫游的編程,完全是由于Lynx 程序定義的ADF文件完成了大量的程序初始化工作,才使得Vega 編程變得如此簡單。
如果掌握了Vega 各個模塊類及其函數的功能與使用方法,用戶就可以根據具體任務的需求在用戶定制代碼區添加自己的代碼,完成獨特的虛擬仿真軟件的開發。
——————————
作者簡介
劉世彬(1977-),男(漢族),河北邯鄲,沈陽炮兵學院,講師,研究方向:作戰模擬與系統仿真。
劉興彥(1966-)男(漢族),吉林白城,沈陽炮兵學院,副教授,研究方向:自行突擊炮作戰訓練仿真模擬。