摘要:從戰場作戰模擬出發,利用專業地形制作軟件CTS(Mulitigen Creator Terrain Studio)生成大地形,分析大地形數據組織調用原理,并通過Vega Prime API實現虛擬戰場場景的管理和調度。
關鍵詞:DEM;Vega Prime;MetaFlight數據;作戰模擬
中圖分類號:TP391文獻標識碼:A 文章編號:1009-3044(2008)20-30377-02
Three Dimensional Virtual Scene Real-time Simulation of Large Area terrain Based on MultiGen Vega Prime
XING Ying, ZHAO Zhen-nan
(People's Liberation Army University of Science Technology, Nanjing 210007,China)
Astract:This article bases on the simulation of battlefield to create the three dimensional terrain with CTS and analysis the theory that the data of large area terrain how to be organized and transferred and realize Virtual Scene Real-time Simulation.
Key words: DEM; Vega Prime; MetaFlight Dataset; Campaign Simulation
1 引言
通常數字高程模型DEM數據越精確,衛星遙感數據分辨率越高,場景就越真實。但仿真區域越大,DEM數據量也就越大;真實感越高,需要的多邊形就越多;紋理越精細,需要的紋理內存就越多。如何實時處理這些海量的數據,就成了實現大場景的漫游的關鍵。目前在視景仿真領域用于視景場景管理的軟件種類很多,比較流行的有MultiGen VegaPrime、OpenGVS、Vtree、WTK、Open Invetor等。其中VegaPrime作為當前實時視景仿真領域的主流高層開發平臺,是一種高性能的場景管理軟件,用于實時視景仿真、虛擬現實、科學計算可視化等。本文從分析大地形數據組織調用原理入手,最后基于VegaPrime實現三維大場景地形的調用、管理及實時動態操作。
2 數據的準備
本文采用覆蓋范圍為117°-E125°E,22°N-30°N 的衛星圖片和1:250000DEM數據,對紋理及各類數據進行優化預處理,依據所選工具軟件CTS的要求,根據紋理所覆蓋的區域和衛星影像分辨率,確定地表采樣間距、虛擬紋理的層數以及相應地形的LoD個數 ,對原始衛星影像進行融合、拼接、分割等處理,制作滿足地形要求的映射紋理。
3 基于VP的大地形管理調度原理
Vega Prime是MultiGen-Paradigm公司推出的實時視景仿真軟件環境,主要包括兩個方面:一是可視化的圖形編程環境Lynx;二是完整的C++語言應用程序接口API。
3.1 大地形管理與調度的方法
如圖1 DEM數據通過專業地制作軟件CTS生成Vega prime所識別Metaflight(*.mft)文件,Lynx prime場景編輯器和Vega Prime LADBM(大規模數據庫管理)對其進行加載管理,通過大地形管理接口函數對場景實施實時動態操作。
Vega Prime首先把地形數據分割,將大面積地形分割成若干地形單元文件。在調用的過程中,根據觀察者當前的位置及視線方向確定感興趣區域(AOI),近距離區域裝載高精度的地形單元文件,遠距離區域裝載低精度的地形單元文件。最后,把相應的紋理與地形單元匹配,就生成了地景庫。在對地景進行處理的基上,系統還需要建立子線程對地景庫進行管理和動態調度,首先根據觀察者的位置,確定感興趣的區域AOI,映射相應的地形文件;當觀察者位置改變時,帶動興趣區域AOI的變化,當變化超過設定的臨界值時,將不再感興趣區域AOI內的地形文件取消其映射關系,使其從物理內存中消失。將新出現的在感興趣區域范圍內的地形文件映射到物理內存,而且那些一直在感興趣區域內的地形文件保留原有映射關系;當新舊地形文件的數據融合后,通知主線程,進行繪制。
3.2 MetaFlight文件
Metaflight 文件類型采用了XML (extensible Markup Language)語言來描述地形數據庫。XML語言是一種有嚴格語法要求的元標記語言,其最大優點是允許自定義一套標記來開發與自己領域相關的標記語言。MetaFlight 就是用XML來將整個地形數據的數據結構、組織形式、文件命名方式、坐標系統所構成的復雜數據庫進行描述的。(如圖2)
采用XML語言描述地形數據庫的Metaflight文件本身并不包含具體的幾何形狀數據,它主要描述了構成數據庫的眾多文件(flt格式、fst格式和pfb格式文件等)的組織形式。采用XML語言描述地形數據庫的Metaflight文件在地形是數據庫生成工具CTS和實時應用軟件Vega Prime之間起到橋梁的作用,傳達地形數據庫以及地形任意子部分的信息,方便有效地實現數據的轉換、載入和使用。采用XML還可以方便地被Vega Prime、Sitebuilder 3d 或其它含有XML 文檔編輯器的軟件所讀取和編輯,適用范圍比較大。
本文將衛星圖片切分成分辨率為1600*1600的小塊,經計算制作紋理12層,地形為3 LOD,采樣為8*8。
4 場景調度管理實現
用Creator軟件工具制作場景中的重點目標、機場及機場三維建筑物10 ∶ 1實物模型,將模型以及CTS生成的地景數據庫導入到Vega Prime中,使用大地形管理模塊LADBM進行管理,可使用Vega Prime的GUI和VC.NET進行二次開發來完成場景的調度漫游。
運用Vega Prime進行場景的驅動與渲染
UINT runvpApp( LPVOID pParam )
// 實例化Vega Prime的應用實例
result = vp::initialize(__argc, __argv); // 初始化vega prime
vsgu::initialize(__argc, __argv);
pOwner->setVpInitted( true );result=vpKernel::instance()->define(pOwner->getAcfName());
// 加載acf文件
result=vpKernel::instance()->configure();
// 參數配置
pOwner->setVpConfiged(true); pOwner->postConfig();
while ( pOwner->getContinueRunning() // 仿真循環
int frameNum = vpKernel::instance()->beginFrame();
pOwner->postSync();// 幀同步
pOwner->vpUpdate();
result = vpKernel::instance()->endFrame();
pOwner->postFrame();
vpKernel::instance()->unconfigure();
pOwner->unref(); // 取消實例引用
vpKernel::instance()->breakFrameLoop();
vp::shutdown(); //關閉Vega prime
5 結束語
平臺使用英特爾雙核處理器,CPU 2.0 GHz ,內存為1G,顯卡為ATI HD 2400,顯存128 MB計算機。在大地形的漫游過程中,禎畫面比較流暢,基本上達到仿真的效果(如圖3)。使用Vega Prime實現場景管理調用基于線程的。線程作為基本的執行單元,劃分較小且共享內存單元,一定程度上提高了執行效率。本文基本解決了大場景調用的問題,但在地形精細度和紋理的精確度上還有待改進。
參考文獻:
[1] 汪連棟,張德峰,聶孝亮,馬孝尊.電子戰視景仿真技術與應用[M].北京:國防工業出版社.
[2] MetaFlight Concept Guide Version 1.2January 2005MultiGen-Paradigm, Inc.
[3] 楊麗,李光耀。城市仿真建模工具-Creator軟件教程[M].上海:同濟大學出版社.
[4] 周建龍。計算機圖形學理論與OpenGl編程實踐[M].廣州:華南理工大學出版社.
[5] Vega Prime Options Guide Version 2.0 March 2005MultiGen-Paradigm, Inc.
注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。”