許文波,李 莉,周虹霞,黃健熙,黃 波
(1. 電子科技大學自動化工程學院 成都 610054; 2. 四川電力科學研究所 成都 610072 3. 四川省軍區(qū)軍訓教研室 成都 610041; 4. 中國農業(yè)大學信息與電氣工程學院 北京 海淀區(qū) 100083)
海量三維大地形系統(tǒng)一直是視景仿真領域研究的熱點和難點。從90年代中期開始,美國Skyline公司開發(fā)了Skyline TerraSuite三維GIS軟件,能夠無縫集成航空影像、衛(wèi)星數(shù)據(jù)、數(shù)字高程模型和其他2D或3D信息源,包括GIS數(shù)據(jù)集層。它在快速數(shù)據(jù)融合、更新數(shù)據(jù)庫、支持大型數(shù)據(jù)庫和實時信息流通信技術等方面具有顯著的優(yōu)勢。該軟件還提供了二次開發(fā)工具為用戶提供定制和功能擴充服務,但它在復雜三維實體的建模方面功能較弱,而且購買價格比較昂貴。2005年6月底,Google公司在Keyhole公司開發(fā)的EarthView基礎上推出了桌面工具Google Earth,是目前最完善的海量遙感影像數(shù)據(jù)服務平臺,較好地實現(xiàn)了海量影像、DEM和矢量數(shù)據(jù)的傳輸、可視化等功能。微軟公司推出的MSN Virtual Earth Beta版能夠在線顯示45°視野的街道衛(wèi)星地圖以及覆蓋式的街道影像,但不能無級放大地圖,下載速度不夠理想。
三維仿真系統(tǒng)可廣泛應用于軍事、房地產、航空航天、教育、娛樂、工程施工、城市規(guī)劃等行業(yè)[1]。在軍事模擬訓練領域,文獻[2]實現(xiàn)艦炮射擊模擬訓練系統(tǒng),該訓練系統(tǒng)利用Vega結合Creator進行開發(fā),建立了桌面式的仿真沙盤系統(tǒng);文獻[3-4]進行了協(xié)同作戰(zhàn)、彈艦電子對抗等類似系統(tǒng)的開發(fā)研究;在城市規(guī)劃與建設領域,文獻[5]利用Vega仿真引擎結合VC++6.0編程實現(xiàn)了佛山市城市規(guī)劃電子沙盤系統(tǒng);文獻[6]應用ArcGIS的內置定制環(huán)境VBA對ArcGIS應用程序進行客戶化,設計并實現(xiàn)了重慶市區(qū)域規(guī)劃電子沙盤系統(tǒng);文獻[7]研制的南水北調電子沙盤系統(tǒng),是南水北調工程仿真系統(tǒng)的重要組成部分。
本文基于VegaPrime和CTS (creator terrain studio)開發(fā)了一個具有通用功能的大地形三維仿真系統(tǒng),通過動態(tài)實時調度取舍地形瓦片,實現(xiàn)了大地形海量數(shù)據(jù)的顯示以及虛擬紋理的正確映射,并在此基礎上基于MFC平臺開發(fā)了9個功能模塊?;谠撓到y(tǒng),可以做進一步的行業(yè)定制,形成面向更為特定行業(yè)應用的三維電子沙盤。
本文以福建省為研究區(qū),具體經緯度范圍為東經115.256°~119.996°,北緯27.905°~24.151°,總計面積約為21萬平方公里(其中包括了海域面積)。該區(qū)域的地貌特征為多丘陵和山地,少平原,平均海拔不高,大部分地區(qū)在海拔1 000 m以下,東南部為海域,西北方向的海拔也很低。
一個顯示內容豐富、層次性好、漫游自然流暢的電子沙盤一般應包括地形數(shù)據(jù)、地形紋理和3D模型等。
本文系統(tǒng)采用的DEM數(shù)據(jù)是美國國家航空航天局(NASA)發(fā)布的世界范圍的數(shù)字高程數(shù)據(jù)SRTM 3。福建省全覆蓋數(shù)據(jù)共16景,數(shù)據(jù)大小約為1.2 GB。
紋理數(shù)據(jù)來源于NASA的地球資源衛(wèi)星系列的LandSat 5上的專題制圖儀(thematic mapper,TM)所獲取的多波段掃描影像。TM有7個波段,其影像的空間分辨率除了熱紅外波段為120 m外,其余均為30 m,像幅185 km×185 km。本文采用5、4、3波段彩色合成,福建全省覆蓋共16景數(shù)據(jù),數(shù)據(jù)大小約為3 GB。
在實時仿真特別是軍事上的仿真中采用大量的3D模型,用戶可以動態(tài)加載這些模型到場景中與場景完成交互,如電子沙盤里面常用到的旗幟標注。Vega Prime主要支持FLT格式的3D模型,其本身提供了一個FLT的3D標準模型庫,如果庫中沒有需要用的模型,可以使用Creator軟件制作。
DEM數(shù)據(jù)需要進行的預處理主要包括拼接和裁剪。TM數(shù)據(jù)需要先進行波段的組合,形成彩色影像,本文選擇5、4、3波段合成。將波段合成的TM數(shù)據(jù)進行拼接與裁剪處理。CTS要求DEM數(shù)據(jù)和TM紋理數(shù)據(jù)有一致的投影坐標信息,因此最后還需要對兩類數(shù)據(jù)進行投影以及數(shù)據(jù)格式的轉換。
將經過預處理后的數(shù)據(jù)在CTS里利用紋理和地形向導的進程流水線生成虛擬紋理和地形格網。重要的參數(shù)設置主要有:1) 合理地設置虛擬紋理的層數(shù)以保證紋理的精度能得到最好的利用,CTS通過地面采樣距離(ground sample distance,GSD)反映采樣精度。以本文為例,TM的精度是30 m,每一經緯度大約是111 km,所以最高層紋理的GSD不得小于111×1 000/30 = 3 700,CTS面板顯示虛擬紋理取為16,則X、Y方向的GSD分別為6 912.225 089、8 728.896 574,所以本文中取16或更高層即可;2) 合理地設置LOD最高層地形的瓦片數(shù)以保證精度最高的紋理能夠映射到LOD最高的地形上。在CTS中地形格網和虛擬紋理都是以層次和瓦片的形式組織的,當?shù)匦瓮咂∮?、等于紋理瓦片時,最適合的那層紋理會被映射到相應的地形上,如果地形瓦片比紋理瓦片大,系統(tǒng)只有取精度次之的紋理中的瓦片進行比較。本文的紋理取了16層,精度最高層瓦片大小為0.074 072×0.058 656°,而地形的瓦片大小需要根據(jù)地形的Coverage(與紋理是一致的)與Grid Structure中的LOD層次劃分確定。Coverage的經緯度范圍是東經115.256°~119.996°,北緯27.905°~24.151°,即X方向為4.764°,Y方向為3.734°,按照上面描述的原則,X方向的地形瓦片數(shù)應該大于、等于4.764/0.074 072 = 64.32,Y方向的地形瓦片數(shù)應該大于、等于3.734/0.058 656 = 63.66。地形向導生成的LOD是5層,但其最高層(LOD4)的瓦片數(shù)是32×32,顯然不夠X、Y(Row和Col)的變化率。LOD4地形中的瓦片數(shù)是128×64,足夠滿足地形紋理瓦片大小原則。
CTS提供了兩種紋理瓦片最后能保存的格式:DDS和5551,前者是一種壓縮格式,而且在實時運行時表現(xiàn)的品質不比5551差,本文采用5551格式的紋理。通過設置適當?shù)膮?shù)運行CTS后生成了3.4 GB的數(shù)據(jù),最后一個Convert進程生成了683 MB的5551格式的最終紋理。
本文的系統(tǒng)核心是以虛擬紋理和地形格網為基礎的三維實時場景,系統(tǒng)功能都是基于該場景開發(fā)的。紋理和地形的生成來源于衛(wèi)星遙感數(shù)據(jù),實體模型來源于MultiGen-Paradgim Creator模型庫以及利用Creator自行制作的模型。在大地形場景的基礎上設計了9個功能模塊,每個功能模塊下有若干子功能,系統(tǒng)框架圖如圖1所示。
圖1 系統(tǒng)框架圖
系統(tǒng)基于VegaPrime開發(fā),MultiGen-Paradigm的Vega/VegaPrime系列是國內最受用戶歡迎的視景仿真驅動引擎,有調查顯示,目前在國內做視景仿真(或者虛擬現(xiàn)實)的,一半以上(57.5%)使用的都是Vega Prime(包括Vega)系列。Vega早在2003年就已經停止升級了,MultiGen-Paradigm現(xiàn)在致力于VegaPrime新版本的開發(fā)。VegaPrime基于VSG(vega scene graph)開發(fā),而Vega基于SGI公司的Perfomer場景圖管理系統(tǒng)開發(fā),Performer只能支持OpenGL,而VSG在一定程度上也支持DirectX;Vega基于C語言,而VegaPrime使用C++開發(fā),融入了很多現(xiàn)代C++的特性和技術,如設計模式和泛型;Vega的ACF文件是文本格式,而VegaPrime采用的是XML格式。
系統(tǒng)的地形和紋理是通過CTS(creator terrain studio)處理的,CTS是MultiGen-Paradigm開發(fā)的致力于處理大地形數(shù)據(jù)的軟件,在功能上大大超過Creator的地形處理模塊Terrain Pro。CTS采用進程流的方式,通過若干個進程的接力處理,可以方便地直接將原始DEM和紋理數(shù)據(jù)轉換為地形格網和虛擬紋理。
系統(tǒng)功能的開發(fā)環(huán)境是M icrosoft Visual Studio.NET 2003,此外地形和紋理數(shù)據(jù)的處理還借助了ERDAS、Global Mapper、Photoshop CS、M icroDEM等軟件。
本文首先利用原始遙感影像在CTS中生成所需的虛擬紋理(virtuall texture),然后根據(jù)虛擬紋理的分層分塊結構生成分層的LOD地形,在Vega Prime中通過LADBM(大地形管理模塊)進行分塊動態(tài)載入,最后在VC++2003編程環(huán)境下與地形做碰撞檢測實現(xiàn)交互。
電子沙盤由于地形一般較大,與之對應的紋理范圍也非常大,為了達到真實感,紋理分辨率一般也比較高。因此,一塊紋理的大小往往超出了顯存的大小,所以如果加優(yōu)化處理,僅僅一次顯示單塊紋理的做法將超出硬件的處理能力。VegaPrime/CTS利用Virtual Texture技術解決以上問題。
Virtual Texture (VT)技術源于SGI平臺下的Clipmapping技術,它是以層(Level)+瓦片(Tile)的結構組織的。層級從1×1的紋理開始,逐層2倍增加,一直到最高層。每層均覆蓋整個地形。從第1層到第9層均為1張紋理覆蓋整個地形,尺寸(長寬方向上的象素數(shù)目)從1×1~512×512。從第10層開始,按照512×512大小進行分塊,即第10層有2×2張512×512的紋理,第11層有4×4張512×512的紋理,一直到最高層[8]。
地形格網與虛擬紋理類似,也是層+瓦片的形式,地形的層稱為LOD(level of detail)。地形的層次一般不會像紋理那樣多,尤其是大地形的仿真,一般4層左右就合適。在進行紋理映射時,精度最高層的紋理瓦片映射到最高層LOD的地形瓦片,然后精度次之的紋理瓦片映射到次層LOD的地形瓦片。
細節(jié)層次技術是在不影響實際仿真效果的前提下,通過逐次簡化模型的細節(jié)來降低模型的復雜度,從而提高場景渲染的效率。對應于虛擬紋理的分層結構,3D地形生成也需要進行合理地分層/分塊處理;而且在對應的層上,地形分塊的大小必須小于、等于紋理分塊的大小,這樣才能顯示出相應層最高精度的紋理。另外,地形的分層和VT的分層不同,按照LOD分層設置,分成4~6層即可滿足應用要求[8]。本文考慮到30 m分辨率紋理的顯示,將地形分為4層LOD,并根據(jù)多邊形數(shù)目限制及視錐的參數(shù),設置了合理的LOD距離及每層LOD的多邊形構成。
在CTS生成虛擬紋理和地形LOD的過程中,會根據(jù)分塊紋理/分塊地形的層次級別,自動生成文件目錄結構,并生成一個特定的MetaFlight文件,通知VegaPrime如何匹配和調用這些分塊文件。
VegaPrime的大面積數(shù)據(jù)庫管理(large area database management,LADBM)是為滿足海量數(shù)據(jù)數(shù)據(jù)庫調度而設計的,特別針對龐大的數(shù)據(jù)庫在動態(tài)場景中瓦片的調度和數(shù)據(jù)集的裝載及組織。有了LADBM和MetaFlight格式的結合,大型數(shù)據(jù)集之間的協(xié)作變得更有效,MetaFlight的分級數(shù)據(jù)結構也在實時場景被優(yōu)化的同時得到維持。VegaPrime的核心功能包括雙精度(double precision)、多線程(multiple threading)、MetaFlight和LADBM,共同為大面積虛擬仿真提供了一個優(yōu)化的解決方案。
在LADBM中,用戶需要關心的Dataset實際上就是GeometryGridDatasets。GeometryGridDatasets是一種多層格網結構,格網在每層將地形在空間上分成一個個獨立的瓦片,不同的層代表相同區(qū)域的不同細節(jié)層次(LOD),高細節(jié)層次部分細分低細節(jié)層次部分,比如第3層的一個瓦片應該覆蓋第4層上相同區(qū)域的4個瓦片。父層總是完全包含了子層,子層絕不會跨越父層瓦片的邊界[9]。GeometryGridDatasets的層次結構如圖2所示。
圖2 GeometryGridDatasets層次結構
一般來說有兩種頁面調度策略,一種是簡單地將整個數(shù)據(jù)集全部調度進來,適用于小型數(shù)據(jù)集;另一種是在場景圖的坐標中定義一個位置(position),以這個位置為中心揀選瓦片,稱為點調度策略(paging strategy point,PSP)。如果場景圖與格網不是相同的坐標系統(tǒng),PSP先要將場景圖的位置坐標轉換為格網坐標,同時判斷每層格網的哪些細胞(cell)在策略位置點(strategy’s position point)的調度范圍內,只將在該范圍內的瓦片調進場景。當策略位置點移動,不再是調度范圍內的瓦片將被調出場景,同時調進進入策略范圍的新瓦片。LADBM的調度中心點可以依附(attached)到VegaPrime的任何物體上(只要是vpPositon及其派生類的對象就行)。PSP不一定是跟隨視點的,它能被移動到場景中的任何一點。同時,VegaPrime支持一個場景中使用多個調度策略,比如在場景中設置2個通道,各通道可以有自己的調度策略。唯一的限制是依附到場景(即調度策略)的所有數(shù)據(jù)集要求有相同的坐標系統(tǒng)[10-11]。
本文歸納總結LADBM在VegaPrime中的工作流程如下:
1) 如果格網坐標系統(tǒng)與數(shù)據(jù)坐標系統(tǒng)不一致,將策略位置坐標轉換到格網坐標;
2) 從LOD的最低層次開始,找出瓦片包含策略位置點(或者最接近策略位置點)。如果最接近策略位置點的瓦片不在策略的范圍(range)內,就不會有頁面調度,反之提交一個調度該瓦片的請求;
3) 檢查所有的相鄰瓦片是否滿足調度范圍直到超出調進范圍(page-in range),提交調度所有滿足條件的瓦片的請求;
4) 提交調出不再滿足調度范圍的瓦片的請求;
5) 進入LOD的下一個層次,重復步驟2)~4),直到所有層次都被處理。
碰撞檢測是構造仿真系統(tǒng)不可缺少的一個重要部分,它可以使用戶以更自然的方式與仿真系統(tǒng)中的場景對象進行交互。虛擬視景中動態(tài)物體與靜態(tài)物體之間或動態(tài)物體與動態(tài)物體之間,以及用戶與場景之間的交互基礎就是碰撞檢測。
在VegaPrime中碰撞檢測器被封裝成類vp Isector,它是由一些線段組成的,使用起來很簡單,把檢測器放置于仿真物體上隨之一起運動,設置碰撞檢測的目標,當這些線段與目標物發(fā)生相交時即認為碰撞發(fā)生。具體的使用方法有兩種:
1) 在程序的主循環(huán)中設定檢測器的位置,調用其update成員函數(shù)進行與目標物的碰撞檢測計算,然后查詢檢測結果。該方法效率較低,尤其當目標物很復雜時,其幾何結構體由很多個子節(jié)點組成,要分別遍歷它的各個子節(jié)點以進行碰撞檢測計算,將會耗費很長時間;
2) 使用服務類vp IsectorService。該方法涉及到碰撞檢測的消息機制,當碰撞發(fā)生時,碰撞檢測器會自動通知它的消息訂閱者,后者接到消息時就可以根據(jù)碰撞檢測的結果做相應處理。
碰撞檢測器與目標物都有各自的掩碼,二者需要分別設定,只有當它們做與運算的結果不為零時才進行碰撞檢測,這樣可以避免檢測器與非相關對象進行碰撞檢測。在VegaPrime中常用的碰撞檢測器有vp IsectorHAT、vp IsectorLOS、vp IsectorBump、vp IsectorZ、vp IsectorZPR和vp IsectorTripod等,它們都是以vp Isector為基類建立的類。
vp IsectorHAT (height above terrain)適用于高空飛行模擬,檢測器從其中心垂直向下射出一條直線直達地表面,可實時計算目標到地表面的距離,并獲得目標在地表面的垂直投影點。Vp IsectorLOS(line of sight)是基于視線的碰撞檢測器,如圖3a所示,自視點P沿視線方向(y軸正方向)延伸出一條線段,距離為r(r由用戶設定),終點為Q,將檢測器安置于仿真對象上,可實時探測到仿真對象的前方距離r內最近的物體。vp IsectorTripod由平行于z軸的3條等長且等高的線段組成,如圖3b所示,寬度w idth和長度height確定了3條線段之間的位置關系。它適于放置在運動載體上,當載體行駛于不平坦的地面上時,檢測器的3條線段與地面的3個交點構成了一個平面α,根據(jù)檢測器的方位角以及平面α的法線,容易計算出載體的俯仰角和滾動角。vp IsectorBump則分別自中心點向x、y和z軸正負共6個方向上引出6條線段,各條線段長度均可設定,如圖3c所示,任意一條線段與目標物相交時均認為有碰撞發(fā)生。另外,用戶也可根據(jù)需要從vp Isector派生出自己的碰撞檢測器。
圖3 VegaPrime的幾種碰撞檢測器
本文將三維仿真系統(tǒng)做成一個Windows窗體程序,使用MFC (m icrosoft foundation classes)類庫是最好的選擇。MFC下的VegaPrime開發(fā)首先要解決在哪個窗口顯示三維場景以及在什么地方執(zhí)行VegaPrime循環(huán)兩個問題。對于第一個問題,因為在MFC中獲取一個窗口類的句柄很容易,所以只要確定一個窗口作為VP窗口的父窗口,讓VP場景在父窗口中顯示就可以了。父窗口的類型是沒有限制的,如可以將一個對話框、一個View窗口、甚至一個對話框上面的控件作為VP的父窗口。對于第二個問題,有線程方式和定時器方式兩種處理方式,線程方式是在MFC中新開一個子線程,讓VP在該子線程里面執(zhí)行主循環(huán),定時器方式是在CMFCView類的OnCreate方法里面進行初始化,并設置一個Timer,然后在OnTimer函數(shù)中執(zhí)行主循環(huán)。本文采用定時器方式實現(xiàn)系統(tǒng)界面。
本文在界面的基礎上實現(xiàn)了視圖控制、標注、漫游、運動模式、地形分析、投影模式、環(huán)境設置、實用功能和觀察者坐標顯示共9個功能模塊,由于篇幅的原因不做詳細功能介紹。三維仿真系統(tǒng)主界面如圖4所示。本文實現(xiàn)的系統(tǒng)包含2萬個左右的三維幾何模型,三維場景加載速度小于40 s,漫游刷新率大于30 Hz。
圖4 三維仿真系統(tǒng)主界面
本文深入探討了基于CTS/VegaPrime 平臺的大地形三維仿真系統(tǒng)的實現(xiàn)方法,通過采用福建省90米格網分辨率DEM 數(shù)據(jù)、30 m分辨率TM遙感影像進行大區(qū)域的三維地形建模,開發(fā)了一個基于MFC的大地形三維仿真系統(tǒng),實現(xiàn)了系統(tǒng)基本功能。在技術層面,該文通過虛擬紋理及其與地形格網的映射、大地形分塊調度技術、碰撞檢測技術的應用,解決了在大區(qū)域地形海量數(shù)據(jù)的電子沙盤漫游的難點問題。系統(tǒng)為三維仿真系統(tǒng)的研制與應用提供了參考價值。
[1] 楊進, 李程, 費立凡. 基于CTS的大地形仿真應用研究[J].測繪科學, 2008, 33(1): 185-187.
YANG Jin, LI Cheng, FEI Li-fan. Research on application of large-area terrain simulation based on CTS[J]. Science of Surveying and Mapping, 2008, 33(1): 185-187.
[2] 趙偉, 吳旭光, 成靜. 基于VR技術的艦炮射擊模擬器研究與設計[J]. 計算機仿真, 2008, 25(12): 301-304.
ZHAO Wei, WU Xue-guang, CHENG Jing. Research and design of naval gun firing simulator based on virtual reality technology[J]. Computer Simulation, 2008, 25(12): 301-304.
[3] 王金華, 嚴衛(wèi)生, 高立娥. 協(xié)同作戰(zhàn)視景仿真系統(tǒng)的開發(fā)[J]. 計算機仿真, 2009, 26(1): 98-102.
WANG Jin-hua, YAN Wei-sheng, GAO Li-e. Develepment of visual simulation system for CEC counterplan[J].Computer Simulation, 2009, 26(1): 98-102.
[4] 龔錚, 張科. 彈艦電子對抗的視景仿真技術研究和應用[J]. 彈箭與制導學報, 2008, 28(1): 219-222.
GONG Zheng, ZHANG Ke. Research and application of visual simulation technology of ecm between antiship m issile and ship[J]. Journal of Projectiles Rockets M issiles and Guidance, 2008, 28(1): 219-222.
[5] 任波, 陳汭新, 李利軍, 等. 城市規(guī)劃電子沙盤系統(tǒng)設計[J]. 計算機與數(shù)字工程, 2005, 34(10): 124-126.
REN Bo, CHEN Rui-xing, LI Li-jun, et al. System design of urban planning electronic sand table[J]. Computer & Digital Engineering, 2005, 34(10): 124-126.
[6] 王黎明, 文輝, 王英. 重慶市區(qū)域規(guī)劃電子沙盤系統(tǒng)的設計與實現(xiàn)[J]. 地理研究, 2004, 24(2): 304-309.
WANG Li-m ing, WEN Hui, WANG Ying. Design and realization of electronic sand table system for regional planning of Chongqing[J]. Geographical Research, 2004,24(2): 304-309.
[7] 姚宏偉, 涂穎. 南水北調電子沙盤系統(tǒng)的研究與開發(fā)[J].系統(tǒng)仿真學報, 2002, 14(12): 1598-1602.
YAO Hong-wei,TU Ying. The study and development of the sand table system[J]. Journal of System Simulation,2002, 14(12): 1598-1602.
[8] 黃健熙, 毛鋒, 許文波, 等. 基于VegaPrime的大型流域3D管理系統(tǒng)實現(xiàn). 系統(tǒng)仿真學報[J]. 2006, 18(10):2819-2824.
HUANG Jian-xi, MAO Feng, XU Wen-bo, et al.Implementation of large area valley simulation system based on vegaPrime[J]. Journal of System Simulation, 2006,18(10): 2819-2831.
[9] MultiGen Paradigm Inc. Creator terrain studio user’s guide[M]. 2nd ed. [S.l.]: MultiGen-Paradigm Inc, 2006.
[10] MultiGen Paradigm Inc. Vega prime programmer’s guide[M]. 2nd ed. [S.l.]: MultiGen-Paradigm Inc, 2005.
[11] MultiGen Paradigm Inc. Vega prime options guide[M]. 2nd ed. [S.l.]: MultiGen-Paradigm Inc, 2005.
編 輯 黃 莘