施松波
(武漢數(shù)字工程研究所 武漢 430074)
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)和虛擬現(xiàn)實(shí)技術(shù)的發(fā)展及應(yīng)用,虛擬戰(zhàn)場(chǎng)的提出和應(yīng)用推動(dòng)了軍事仿真演練的發(fā)展,為推動(dòng)軍事仿真訓(xùn)練和演練技術(shù)的發(fā)展提供了新的途徑。虛擬戰(zhàn)場(chǎng)是利用虛擬現(xiàn)實(shí)技術(shù)生成虛擬作戰(zhàn)自然環(huán)境,并在保證其一致性的基礎(chǔ)上,通過計(jì)算機(jī)網(wǎng)絡(luò),將分布在不同地域的虛擬武器仿真平臺(tái)聯(lián)入該自然環(huán)境中,進(jìn)行戰(zhàn)略、戰(zhàn)役、戰(zhàn)術(shù)等想定演練的分布式交互仿真應(yīng)用環(huán)境[1]。虛擬戰(zhàn)場(chǎng)環(huán)境建立在數(shù)字地圖的基礎(chǔ)上,在大區(qū)域虛擬戰(zhàn)場(chǎng)環(huán)境研究中,需要大規(guī)模的地理數(shù)據(jù)源作為基礎(chǔ),從而對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)、查詢、分發(fā)等操作,因此三維地形數(shù)據(jù)模型和可視化是虛擬戰(zhàn)場(chǎng)環(huán)境中最核心和最關(guān)鍵的技術(shù)。目前,這方面的研究己經(jīng)成為數(shù)字地球、地理信息系統(tǒng)(GIS),數(shù)字?jǐn)z影測(cè)量、虛擬現(xiàn)實(shí)(VR)等領(lǐng)域的核心內(nèi)容。本論文的研究目標(biāo)就是通過高效地組織地形數(shù)據(jù),保證在虛擬戰(zhàn)場(chǎng)環(huán)境下實(shí)現(xiàn)大規(guī)模地形的無縫漫游和場(chǎng)景的高度真實(shí)感顯示[2]。
Google Earth、World Wind、SkylineGlobe、EV-Globe、GeoGlobe是國(guó)內(nèi)外技術(shù)成熟的地形數(shù)據(jù)處理商業(yè)軟件,雖然提供了簡(jiǎn)單的二次開發(fā)函數(shù)接口或部分開源代碼,支持用戶將本地?cái)?shù)據(jù)和模型加載到數(shù)字地球模型等簡(jiǎn)單的應(yīng)用開發(fā)中。但也存在許多不足之處,比如只能使用單一的軟件默認(rèn)的數(shù)字地球數(shù)據(jù),無法集成不同格式數(shù)字地球數(shù)據(jù);開發(fā)模式簡(jiǎn)單,無法滿足用戶多方面需求,不夠靈活;渲染效率低、傳輸效率低[3]。
本文選擇開源數(shù)字地球軟件osgEarth進(jìn)行大規(guī)模場(chǎng)景數(shù)據(jù)的組織管理與可視化。OpenScene-Graph(OSG)是一個(gè)高性能的開源三維圖形引擎,它以O(shè)penGL為底層平臺(tái),使用C++編寫而成,可以運(yùn)行于各種主流操作系統(tǒng),其功能特性涵蓋了大規(guī)模場(chǎng)景的分頁(yè)支持,多線程、多顯示的渲染,粒子系統(tǒng)與陰影,各種文件格式的支持,以及對(duì)Java、Perl、Python等語(yǔ)言的封裝[4]。OSG 廣泛應(yīng)用于虛擬仿真、虛擬現(xiàn)實(shí)和工程可視化等領(lǐng)域。osgEarth[1]是一個(gè)基于OSG開發(fā)的實(shí)時(shí)地形模型加載和渲染工具,它可以直接從網(wǎng)絡(luò)上的服務(wù)器端讀取數(shù)據(jù),并實(shí)時(shí)地進(jìn)行處理和顯示[5]。它支持WMS、WCS、TMS等多種地圖數(shù)據(jù)服務(wù)器端,自己則作為一個(gè)不斷獲取和解析數(shù)據(jù)的客戶端,它還可以和Google map、Yahoo map、ArcGIS Online等數(shù)字地球服務(wù)器建立連接并從中獲取所需要的數(shù)據(jù)。
大規(guī)模場(chǎng)景數(shù)據(jù)的組織管理與可視化可以分為四個(gè)層次:osgEarth讀取數(shù)據(jù)、創(chuàng)建數(shù)字地球虛擬場(chǎng)景、動(dòng)態(tài)調(diào)度和虛擬場(chǎng)景漫游,大規(guī)模場(chǎng)景可視化流程圖如圖1所示。
圖1 大規(guī)模場(chǎng)景可視化流程圖
osgEarth讀取數(shù)據(jù):osgEarth本身包含了獲取多種網(wǎng)絡(luò)數(shù)據(jù)的各種插件,通過這些插件,osgEarth可以直接從網(wǎng)絡(luò)上的服務(wù)器獲取數(shù)據(jù),包括WMS,WCS,TMS等多種地圖數(shù)據(jù)服務(wù)器,各種數(shù)字地球數(shù)據(jù)如Google Earth、World Wind、ArcGIS Online、MapServer和ESRI ArcGIS Server發(fā)布的GIS數(shù)據(jù)等,作為虛擬場(chǎng)景的建模數(shù)據(jù)。
創(chuàng)建數(shù)字地球虛擬場(chǎng)景:處理本地影像數(shù)據(jù)和三維模型,以加快后續(xù)的數(shù)據(jù)讀取和渲染速度。然后在底圖上疊加本地?cái)?shù)據(jù)以增加虛擬場(chǎng)景的細(xì)節(jié)和層次。并進(jìn)行一定的交互開發(fā),比如漫游、查詢、標(biāo)繪、量測(cè)等功能。
· 動(dòng)態(tài)調(diào)度:利用磁盤緩存技術(shù)對(duì)本地磁盤存儲(chǔ)數(shù)據(jù)進(jìn)行訪問,利用內(nèi)存緩存技術(shù)管理場(chǎng)景數(shù)據(jù)的動(dòng)態(tài)緩存,負(fù)責(zé)緩存數(shù)據(jù)的管理和調(diào)度,從而實(shí)現(xiàn)場(chǎng)景圖的動(dòng)態(tài)管理和場(chǎng)景數(shù)據(jù)的動(dòng)態(tài)加載和卸載。
· 場(chǎng)景漫游:用戶可以通過網(wǎng)絡(luò)獲取建設(shè)好的虛擬場(chǎng)景數(shù)據(jù),從而可以漫游虛擬場(chǎng)景并進(jìn)行一些交互來獲取一定的信息。
由于三維對(duì)象的渲染要消耗很多的系統(tǒng)資源,所以對(duì)大量精細(xì)三維對(duì)象的渲染速度會(huì)比較慢[6],為了解決這一困難,采用細(xì)節(jié)層次模型技術(shù),即對(duì)三維對(duì)象進(jìn)行分層管理,在遠(yuǎn)端觀察地球時(shí)對(duì)象較多采用顆粒度較大的粗糙模型,在近端觀察地球時(shí)對(duì)象較少采用顆粒度較小的精細(xì)模型,這樣既能滿足從遠(yuǎn)至近從模糊到清晰的視覺效果,又能極大地提高系統(tǒng)的效率。當(dāng)用戶視點(diǎn)移動(dòng)時(shí),視點(diǎn)范圍內(nèi)的地形數(shù)據(jù)就應(yīng)該加載,距離視點(diǎn)很遠(yuǎn)或在視域范圍之外的數(shù)據(jù)就可以暫時(shí)卸載。
osgEarth采用動(dòng)態(tài)四叉樹LOD方式進(jìn)行地形數(shù)據(jù)的組織[7]如圖2所示,圖中每一個(gè)正方形為四叉樹的一個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)保存了中心點(diǎn)的高度及瓦片寬度。地形數(shù)據(jù)被實(shí)時(shí)地劃分為不同LOD層次瓦片序列,基于視點(diǎn)進(jìn)行動(dòng)態(tài)分頁(yè)、調(diào)度和渲染。整個(gè)地形場(chǎng)景是一棵瓦片化地四叉樹,四叉樹低層次(低經(jīng)度)的影像是從高層次(高精度)的影像上實(shí)時(shí)重采樣獲取的。
圖2 多分辨率地形四叉樹表示示意圖
瓦片的大小:長(zhǎng)與寬是2的N此冪,DOM通常采用128×128(pixel)或256×256(pixel);DEM通常采用16×16(pixel)或32×32(pixel)。瓦片的格式:DOM一般采用png、jpg格式;DEM一般采用tiff格式。瓦片代理的地理范圍:每一層中的各個(gè)瓦片所表示的地理范圍相同,不同層的瓦片所表示的地理范圍不同。第0層中瓦片表示的地理范圍為180°×180°,第1層中瓦片表示的地理范圍為90°×90°,第2層中瓦片表示的地理范圍為45°×45°,依次類推。瓦片標(biāo)志:每一層中的瓦片是以行、列坐標(biāo)進(jìn)行標(biāo)志。瓦片文件組織:針對(duì)某個(gè)DOM(或DEM),其瓦片文件以分級(jí)的一系列文件夾來組織,文件夾結(jié)構(gòu)為:頂層目錄\層目錄\列目錄\tiles文件。瓦片索引:由于每一個(gè)瓦片都有對(duì)應(yīng)的地理范圍,并且都有相應(yīng)的索引號(hào)(層、行、列),在三維場(chǎng)景中進(jìn)行數(shù)據(jù)瀏覽時(shí),可以根據(jù)視點(diǎn)的可視范圍確定需要調(diào)用的瓦片。
osgEarth提供了一系列插件,用于實(shí)時(shí)地進(jìn)行全球數(shù)據(jù)的剖分。GDAL/OGR插件支持多種格式的柵格和高程數(shù)據(jù),可以實(shí)時(shí)地從網(wǎng)絡(luò)上或本地讀取GeoTIFF、ECW、MrSID等類型的地理空間數(shù)據(jù)。AGGLite、Feature Stencil等插件讀取多種矢量數(shù)據(jù),還具有把矢量數(shù)據(jù)柵格化為小圖片塊,把數(shù)據(jù)覆蓋在地形圖上等功能。插件在讀取數(shù)據(jù)的同時(shí)按照全球網(wǎng)絡(luò)剖分原理對(duì)讀取的數(shù)據(jù)進(jìn)行分層分塊,同時(shí)把剖分結(jié)果緩存到本地,以后直接調(diào)度,提高效率。
osgEarth使用簡(jiǎn)單,一個(gè)簡(jiǎn)單的XML配置文件可以組織基于球面的全球地理數(shù)據(jù),并調(diào)用osg-Viewer顯示出來。osgEarth支持有多個(gè)圖像源的地圖,允許用戶創(chuàng)建地圖時(shí),在基礎(chǔ)層上覆蓋高分辨率的地圖。
上述地圖使用本地?cái)?shù)據(jù)源(使用GDAL插件)提供的兩個(gè)圖像。osgEarth使用各種方法來渲染圖像層,所以可以渲染多少圖像層的限制取決于用戶的硬件。順序是很重要的,定義多個(gè)圖像源時(shí),它們?cè)谠揺arth文件中指定的順序是從在底部到頂部的。
添加高程數(shù)據(jù)到地球的文件與添加圖像非常相似。高程數(shù)據(jù)可以通過將高程元素加入到XML從而添加到地球文件中去。定義多個(gè)高程數(shù)據(jù)順序也很重要,它們?cè)谠揺arth文件中指定的順序是從在底部(高分辨率)到頂部(高分辨率)的。
在地形場(chǎng)景實(shí)時(shí)動(dòng)態(tài)顯示中,每一幀場(chǎng)景的渲染數(shù)據(jù)對(duì)應(yīng)于計(jì)算機(jī)內(nèi)存中的幾片連續(xù)分布的地形數(shù)據(jù)頁(yè)面[8]。隨著視點(diǎn)的移動(dòng),在地形場(chǎng)景動(dòng)態(tài)渲染過程中,需要即時(shí)更新計(jì)算機(jī)內(nèi)存中的地形數(shù)據(jù)頁(yè)面。每次從計(jì)算機(jī)硬盤中讀入新的地形數(shù)據(jù)到內(nèi)存中會(huì)耗費(fèi)一定時(shí)間,引起視覺上的“延遲”效果。為了提高實(shí)時(shí)渲染的效率,本文采用兩級(jí)緩存的結(jié)構(gòu),設(shè)置磁盤緩存和內(nèi)存緩存。場(chǎng)景圖只與內(nèi)存緩存發(fā)生直接聯(lián)系,當(dāng)場(chǎng)景圖需要卸載數(shù)據(jù)時(shí),將數(shù)據(jù)存入內(nèi)存緩存,當(dāng)內(nèi)存數(shù)據(jù)過多時(shí),內(nèi)存緩存將部分?jǐn)?shù)據(jù)寫入硬盤緩存,當(dāng)場(chǎng)景圖請(qǐng)求某個(gè)內(nèi)存緩存中沒有的數(shù)據(jù)時(shí),內(nèi)存緩存從磁盤緩存加載數(shù)據(jù)。內(nèi)存緩存盡量讓經(jīng)常使用的數(shù)據(jù)常駐內(nèi)存。
在實(shí)現(xiàn)對(duì)場(chǎng)景圖的緩存策略中,為了減少程序設(shè)計(jì)的復(fù)雜性,采用智能指針注冊(cè)的方法。OSG中,大部分對(duì)象都繼承自osg::Referenced類,該類記錄了智能指針引用的次數(shù),智能指針引用某osg::Referenced指針時(shí),該指針的引用次數(shù)會(huì)增加,智能指針銷毀時(shí),引用次數(shù)會(huì)減少。本文采用數(shù)據(jù)項(xiàng)注冊(cè)的方法來管理緩存。每當(dāng)新加載一個(gè)數(shù)據(jù)塊時(shí),都要在內(nèi)存緩存中以智能指針的方式注冊(cè)。當(dāng)場(chǎng)景圖發(fā)生變化時(shí),內(nèi)存緩存遍歷所有的注冊(cè)項(xiàng),檢查其引用數(shù),一旦引用數(shù)為1,說明該數(shù)據(jù)塊已經(jīng)被場(chǎng)景圖卸載,因此可以將其寫入緩存。
如圖3所示,視點(diǎn)移動(dòng)時(shí),可視范圍也發(fā)生變化,可視范圍相對(duì)應(yīng)的頁(yè)面也發(fā)生變化。視點(diǎn)在地形場(chǎng)景漫游過程中是連續(xù)運(yùn)動(dòng)的,所以前后兩幀之間顯示的內(nèi)容也是連續(xù)的,不會(huì)發(fā)生跳躍性變化,因此內(nèi)存中的部分?jǐn)?shù)據(jù)是可重用的,必須刪除己經(jīng)離開可視范圍的地形頁(yè)面數(shù)據(jù),調(diào)入新的進(jìn)入到可視范圍的地形頁(yè)面數(shù)據(jù)。
圖3 地形場(chǎng)景漫游示意圖
動(dòng)態(tài)調(diào)度地形數(shù)據(jù)的過程如圖3所示:視點(diǎn)t+1時(shí)刻向正北方向移動(dòng),視點(diǎn)移動(dòng)的距離超過某一閾值(Y方向上閾值為DY/2),更新后臺(tái)數(shù)據(jù)緩沖區(qū)中數(shù)據(jù),將其最南邊的一行數(shù)據(jù)塊刪去;視點(diǎn)t+2時(shí)刻繼續(xù)向正北方向移動(dòng)再超過一定閾值(Y方向上閾值為DY),新加入最北邊的一行數(shù)據(jù),同時(shí)開始交換內(nèi)存緩存和磁盤緩存中的數(shù)據(jù),從而可以保證視點(diǎn)的可視范圍大小總是不變。視點(diǎn)在其它方向上發(fā)生變化時(shí),處理方式與此類似。
利用以上方法,每次僅僅顯示可視范圍內(nèi)數(shù)據(jù)頁(yè)的數(shù)據(jù),而與原始數(shù)據(jù)的范圍、大小無關(guān),就實(shí)現(xiàn)了任意范圍的地形景觀模型的實(shí)時(shí)動(dòng)態(tài)渲染。
本文的DEM地形數(shù)據(jù)直接采用GTOPO30作為數(shù)字高程數(shù)據(jù)。GTOPO30是一個(gè)全球的數(shù)字高程模型,它覆蓋西經(jīng)180°至東經(jīng)180°,南緯90°至北緯90°的所有區(qū)域。它的分別率為30s(即0.00833333°)由于該DEM數(shù)據(jù)為柵格數(shù)據(jù),小于一個(gè)柵格的點(diǎn)被忽略(即面積小于1km2的小島)。為了便于數(shù)據(jù)的分發(fā),GTOPO30被劃分為33個(gè)小的區(qū)域(Tiles)。
本文的紋理數(shù)據(jù)采用美國(guó)宇航局NASA提供的全球衛(wèi)星圖world topo bathy(分辨率為21600×21600×8)作為紋理數(shù)據(jù)。
由于全球數(shù)字高程數(shù)據(jù)是海量數(shù)據(jù),不可能一次性讀入內(nèi)存并顯示。本文根據(jù)實(shí)際需求引用與GTOPO30數(shù)字高程圖覆蓋范圍相同的低分辨地形數(shù)據(jù)作為全球數(shù)據(jù)顯示。然后在全球數(shù)據(jù)上創(chuàng)建視點(diǎn)的可視范圍,即是圖4中的局部數(shù)據(jù),作為戰(zhàn)術(shù)地圖進(jìn)行顯示。通過可視范圍四個(gè)角在世界坐標(biāo)系中的地理坐標(biāo)可以計(jì)算該視點(diǎn)的可視范圍覆蓋了哪些地形頁(yè)面數(shù)據(jù),并進(jìn)行合理調(diào)度,實(shí)現(xiàn)在低分辨率全球地形圖上顯示局部高分辨率DEM數(shù)據(jù)[9]。
圖4 局部多分辨率地形顯示示意圖
隨著軍隊(duì)信息化程度的不斷提高,軍用數(shù)字地球的應(yīng)用日益廣泛。指揮員可以快速、完整、形象地了解戰(zhàn)場(chǎng)上敵我雙方各種宏觀的和微觀的情況,并能借助和充分發(fā)揮這些數(shù)據(jù)的作用,進(jìn)行正確、有效的決策[10]。大規(guī)模場(chǎng)景地理數(shù)據(jù)可視化方法將地理數(shù)據(jù)形象、直觀展現(xiàn)為戰(zhàn)場(chǎng)信息,既體現(xiàn)出這些數(shù)據(jù)的內(nèi)在聯(lián)系,又便于檢索利用,指揮員可以根據(jù)戰(zhàn)場(chǎng)信息情況及時(shí)調(diào)整作戰(zhàn)計(jì)劃并為模擬訓(xùn)練與戰(zhàn)況評(píng)估提供可視化的支持。
[1]康來,瞿師,楊冰,等.大規(guī)模GIS數(shù)據(jù)三維可視化系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].系統(tǒng)仿真學(xué)報(bào),2009,21(10):166-170.
[2]黎華.地形與地質(zhì)體三維可視化的研究與應(yīng)用[D].廣州:中國(guó)科研院,2006.
[3]鐘登華,宋洋.基于GIS的水利水電工程三維可視化圖形仿真方法與應(yīng)用[J].工程圖學(xué)學(xué)報(bào),2004(1):52-58.
[4]李新放.基于DSG的海洋環(huán)境三維可視化系統(tǒng)研究[D].青島:國(guó)家海洋局第一海洋研究所,2012.
[5]鄧晶,張明智,李志強(qiáng),等.基于STK的信息作戰(zhàn)態(tài)勢(shì)三維可視化方法研究[J].系統(tǒng)仿真學(xué)報(bào),2010,22(11):2654-2659.
[6]左維,劉陽(yáng),任鑫,等.基于嫦娥一號(hào)CCD相機(jī)和激光測(cè)距數(shù)據(jù)的月球三維可視化系統(tǒng)[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)報(bào),2012,24(1):37-43.
[7]楊武年,廖崇高,等.數(shù)字區(qū)調(diào)新技術(shù)新方法-遙感圖像地質(zhì)解譯三維可視化及影像動(dòng)態(tài)分析[J].地質(zhì)通報(bào),22(1):60-64.
[8]李勃.虛擬海洋與三維可視化仿真引擎的研究與開發(fā)[D].青島:中國(guó)海洋大學(xué),2013.
[9]連明.三維數(shù)字地形動(dòng)態(tài)調(diào)度及修改技術(shù)[D].西北:工業(yè)大學(xué),2005.
[10]束搏,毛天露,等.一種基于采樣點(diǎn)的大規(guī)模群體實(shí)時(shí)三維可視化方法[J].計(jì)算機(jī)研究與發(fā)展,2008,45(10):1731-1738.