韓 哲,楊方廷,劉玉明
(經濟領域系統仿真技術應用國家工程研究中心,北京100854)
電子沙盤采用地理信息、視景仿真、大屏幕投影、立體顯示等技術,通過對地形地貌、大型工程、城市街區(qū)等目標對象的計算機三維視景仿真,融合文字、圖表、音視頻和矢量數據等二維信息,為用戶提供實用便捷、震撼逼真、信息豐富的可視化展示與管理平臺,創(chuàng)造出身臨其境的空間三維視覺體驗。該技術廣泛應用于江河流域[1-2]、大型工程[3]、 城市規(guī)劃[4-5]、 通訊網絡、水油氣電管網[6-7]等工程信息的可視化展示與管理。本文結合 “山西省水利工程規(guī)劃電子沙盤”實例,提出了一套利用三維場景渲染引擎 OpenSceneGraph (OSG)[8-9]和大地形建模工具 Virtual-PlanetBuilder(VPB)[10],結合 MFC平臺的電子沙盤系統開發(fā)方案。該方案主要針對于以實際的地理地形為背景、強調宏觀場景展示和場景信息顯示的電子沙盤系統,與同類其它系統[11-13]相比,該系統功能強大、內容豐富且對硬件要求較低。該方案還集成了立體顯示解決方案并且支持多通道輸出顯示,視覺效果震撼。該系統可以在全局概貌和細節(jié)信息顯示方面完全替代普通沙盤并且充分發(fā)揮電子沙盤表現力生動、信息豐富、可編輯性和適應性強的特點。
電子沙盤系統是一個三維視景仿真交互系統,按照應用領域的不同對其功能實現的要求也不盡相同。針對該類系統共性的內容,結合本系統的技術特點,可以概括出類系統的功能要求,如圖1所示。
由上述功能框圖可以總結出該系統3大特點如下:
(1)內容豐富、信息翔實:系統支持各種類型海量數據的加載與顯示,包括場景模型、二維圖片、矢量數據、多媒體音視頻等,這些數據用于對系統中地形地貌、城市建筑、工程設施等對象的直觀展示。除此之外,系統還支持結合圖片和文字對場景的經緯度、海報高度、工程簡介、設施概況等場景信息以及系統運行時間、幀速率、視點位置、操作提示等系統信息的顯示。
圖1 電子沙盤系統的功能架構
(2)人機交互性強:系統支持多種方式的人機交互,用戶可以體驗不同類型的場景漫游方式,并且用戶可以自定義興趣點以便于場景切換。系統支持信息的查詢和自動定位功能,根據用戶的操作對相關場景和系統信息進行實時顯示。此外,系統還支持與實物電子沙盤的交互操作。
(3)表現力生動、效果震撼:系統采用高分辨率的衛(wèi)星圖片作為紋理進行地形建模,畫面清晰,色彩亮麗,立體顯示方案結合第一人稱的漫游方式以及模擬真實情況的碰撞檢測大大提高了系統的沉浸感。系統還支持多通道顯示的開發(fā)與實現,顯示效果震撼,為場景信息展示和科學決策提供有力的工具手段。
本系統致力于表現宏觀和細節(jié)兩個方面的三維場景內容,主要包括模型庫的建立以及場景模型管理兩大核心部分。系統是在WinXP+VC2005的環(huán)境中完成開發(fā)的。
場景模型根據建模方法的不同又可以分為作為背景的大規(guī)模地理地形模型和重點建筑、工程、設施等具體模型,該過程中用到多層紋理、細節(jié)層次節(jié)點、實例化及外部引用等建模及其優(yōu)化的關鍵技術。
為了方便快速讀取和統一管理,最終的模型文件都采用OSG自定義的二進制存儲格式:ive格式。ive支持全部的OSG節(jié)點結構信息讀寫,是OSG系統之間數據交互的主要方式,經過優(yōu)化之后它更適合于迅速讀取。安裝OSGExp插件之后可以直接在3ds Max中輸出.ive文件,也可以直接通過osgconv命令將其它格式文件轉換為.ive文件,并且同時把紋理封裝進去,大大增加了場景模型的加載效率。經過驗證,ive文件對于場景加載的優(yōu)化效果十分明顯,尤其是本系統中涉及三維大地形模型文件 (大小可達幾十GB),采用分層的ive文件可以在幾秒鐘之內加載通常需耗費幾分鐘時間顯示的模型文件。
場景模型管理主要包括在VC平臺上利用OSG的場景組織能力完成包括場景加載、視點切換和立體顯示等在內的系統相關功能的開發(fā)。整個系統的開發(fā)框架如圖2所示。
圖2 系統開發(fā)框架
1.3.1 OSG三維渲染引擎
OSG是一個基于工業(yè)圖形標準OpenGL[14]的高層次圖像開發(fā)API接口,即三維渲染引擎。OSG在圖形開發(fā)流水線中處于場景圖形中間件的位置,用于連接上層圖像應用程序和底層OpenGL代碼。
作為一款功能強大、具備工業(yè)應用水準的場景圖形管理開發(fā)庫,OSG的優(yōu)點顯而易見:首先是開發(fā)的高效性,它將OpenGL的底層代碼封裝成為更易操作的開發(fā)接口,使原來成百上千的OpenGL命令變成了幾個簡單的API調用,大大提高了開發(fā)效率;其次是開源和平臺無關性,OSG是公開源代碼的,用戶可以在Internet上下載源代碼,而且它是用可移植的ANSI C++編寫,因此OSG具有跨平臺性,可以運行在Windows、Mac OS X、UNIX、Linux等操作系統上;還有OSG強大的擴展性,它封裝并提供了針對幾乎所有主流數據格式的可擴展的讀寫接口,它還支持數量眾多功能各異的可擴展插件的開發(fā),全世界的開發(fā)者都在不斷的推動OSG向前發(fā)展。
OSG的源代碼包括一系列動態(tài)鏈接庫 (.dll/.so)、插件 (.dll/.so)、供開發(fā)者使用的靜態(tài)鏈接庫 (.lib/.a),以及可執(zhí)行的工具程序和示例。按照其功能劃分,OSG的API庫大致可以分為以下4種類型:OSG核心庫、插件庫、內省庫和插件庫[6]。
1.3.2 大地形建模工具VitualPlanetBuilder
VitualPlanetBuilder是基于OSG開發(fā)的專門針對海量地形模型生成的第三方工程工具,可以讀入多種類型的地理影像和高程數據,并構建各種規(guī)模的分塊分頁地形數據庫。VPB與OSG緊密結合,它所生成的瓦片數據可以方便的通過網絡進行傳輸,或者保存在本地進行快速、精確的瀏覽。VPB依賴于GDAL庫和LibSquish庫,分別實現了地理信息數據的識別和多種DDS圖像壓縮格式,目前已經具備TB級別的數據處理能力,并可以使用分布式文件系統來執(zhí)行并發(fā)的數據處理。
VPB的功能非常強大,它支持目前大部分的地形數據格式并包含了眾多功能參數??梢灾付ńT紨祿碓绰窂讲⑶覍_^程中LOD層數及可見范圍、垂直幅度放大率、輸出ive模型名稱等參數進行設置。VPB尤其適宜于整個地球范圍內的大地形建模,用戶可以對東、西半球紋理數據、南北極半徑和赤道半徑進行直接設置。另外,VPB支持多線程作業(yè),可以根據CPU個數和性能合理分配系統資源,提高模型生成效率。
基于場景圖 (scene graph)的強大功能,系統采用自上而下的樹狀圖結構來完成各種功能節(jié)點的定義和管理。場景樹狀圖的頂端是一個根節(jié)點,從根節(jié)點向下延伸確定場景各個功能子節(jié)點的層次關系。
OSG中定義了不同種類、功能各異的子節(jié)點類型,組節(jié)點 (Group)可以指定其父節(jié)點和子節(jié)點,用于確定層次結構,一般場景根節(jié)點也是Group類型;文件讀取節(jié)點(ReadNodeFile)用于讀取外部模型文件;開關節(jié)點(Switch)可以實現場景模型切換;觀察器節(jié)點 (Viewer)用于完成場景的繪制和輸出?;诒倦娮由潮P系統的功能需求,整體組織結構如圖3所示。
圖3 系統場景組織結構
這種樹狀場景圖結構的優(yōu)點是結構層次清晰便于管理和設置,然而,當應用程序不再使用場景圖形時,每個節(jié)點所使用的內存需要釋放以避免內存泄漏,如果要編寫代碼遍歷整個場景圖形并依次刪除節(jié)點及數據,那么這項工作將是巨大且容易出錯的。為了提高場景內存管理效率,我們利用OSG特有的內存引用計數器 (reference counted memory)工作方式。場景中所有節(jié)點均繼承自通用的基類osg::Referenced且用智能指針模板類ref_prt<>加以聲明,這樣每個節(jié)點均采用引用計數 (reference count)的方式,當引用計數值減為0時,此對象被自動釋放。這樣刪除場景圖形時,只需簡單的釋放指向根節(jié)點的指針,所有子節(jié)點和數據將逐一被釋放,并且這一機制可有效防止內存泄漏。
三維地形是虛擬自然環(huán)境中不可缺少的因素,也是視景系統的重要組成部分,但地形高程數據和紋理數據異常龐大,超出了一般圖形系統的實時渲染和內存管理能力,為了達到一個較好的可視化效果,就對建模和實時顯示方案提出較高的要求。
本系統利用OSG海量地形處理工具VPB完成了高效海量地形建模,利用地形數據 (通常是數字高程模型DEM)建立三維數字地形,貼上帶有位置坐標信息的紋理數據 (通常是數字正攝影像圖DOM),最后生成了包含分頁細節(jié)層次節(jié)點 (PagedLOD)的ive地形模型。圖4展示了構建三維地形模型的一般過程[15-16]。
圖4 三維地形建模一般過程
為了提高實時繪制的效率,大地形模型文件一般都采用細節(jié)層次節(jié)點 (LOD)技術進行優(yōu)化,模型的精細度隨著視點到場景距離的遠近而發(fā)生變化,這樣更符合實際的觀察規(guī)律,更重要的是這樣會使場景繪制流程的觀察體裁剪工作的復雜度大大降低,從而加速場景繪制。
與普通的LOD節(jié)點不同,VPB生成的地形模型采用OSG特有的分頁細節(jié)層次節(jié)點 (OSG::PagedLOD),LOD節(jié)點只能存在于一個文件之中,而PagedLOD的每一個節(jié)點都是可以是單獨的模型文件。因此,VPB生成的模型并不是一個文件而是一組按特定規(guī)律命名的不同分辨率的許多個細節(jié)模型文件,每一個細節(jié)模型文件都可以單獨加載和顯示,有一個總的PagedLOD節(jié)點模型文件只提供索引作用,每個子節(jié)點單獨存放于磁盤中。分頁細節(jié)層次節(jié)點實現了動態(tài)分頁加載,加載工程中有單獨的線程負責實時調度,使場景渲染更加高效。圖5展示了VPB生成模型的分頁細節(jié)節(jié)點層次結構。
圖5 PagedLOD結構
本系統開發(fā)了兩種場景切換模式,其中第一種是直接切換,實現方法也比較簡單,只要將事先定義好的或者用戶實時操作命令生成的觀察參數 (包括視點位置、參考點位置、視角方向等)加載到視景器上并在下一幀輸出之前刷新顯示即可。為了提高視覺效果的生動性,結合電子沙盤系統大場景的特點,本系統開發(fā)了另外一種模擬飛行的場景切換方式。場景攝像機由當前視點經過中間一系列關鍵點連續(xù)地轉移到最終的場景觀察視點,這一過程中相機采取俯視圖的角度以模擬航拍的效果,這一切換方式可以使用戶對場景的整體布局和位置關系有更加直觀的了解。
為了實現這一切換方式,可以利用OSG的Animation Path類設置動畫路徑,利用insert命令向該路徑插入4個關鍵點的觀察參數,這4個點分別是當前和最終的觀察點及其斜上方45度距離底面500m視角沿地球半徑方向向下的另外兩個點,這兩個點的位置和角度我們可以根據場景大小適當調整。AnimationPath根據定義的關鍵點插值生成包含全路徑每一幀系統時間、攝像機位置和觀察參數的列表 (稱為關鍵點列表),定義新的攝像機控制器 (Camera-Manipulator)執(zhí)行這一列表即可實現攝像機按照既定路徑和視角行進。具體程序開發(fā)流程如圖6所示。
下面以 “山西省水利工程規(guī)劃電子沙盤”的實例為具體對象來介紹本設計方案的實現效果。該系統是按照前面所述方案基于OSG結合MFC開發(fā)的,是一個以山西省實際的地理地形為背景包含眾多水利水文信息,功能強大、生動直觀的沙盤模型系統。
利用本方案實現的電子沙盤系統生成了山西全境及太行山沿線其它省市與實際地勢地形相對應的三維模型,對核心區(qū)域進行了精確建模,對關鍵的水利設施、工程、建筑、設備等具體物體進行了細節(jié)建模。所有模型都是按照真實場景1:1建造的,系統還包含了山西省所有大中型河流、水庫、泵站的詳細信息。原始數據文件大小超過了240GB,主要包括數字高程數據 (DEM),兩種分辨率 (1:250000彩色和1:10000黑白,用于不同精細度建模)衛(wèi)星圖片紋理數據以及各種圖片文字資料、音視頻文件、矢量數據等,系統模型庫大小達100GB。
圖6 飛行場景切換功能開發(fā)流程
系統功能強大,利用建模工具生成分層次的真實三維地理模型,模型精細度隨著視點遠近發(fā)生相應變化;相關信息通過矢量文字和圖片的方式顯示出來,并開發(fā)了手動編輯接口,用戶可以自行添加文字圖片并且編輯其若干屬性 (包括標牌位置,高度,顏色,顯示層次等);任意點經緯度及海拔高度都可以實時顯示;重點信息 (河流、水網分布,水庫、城鎮(zhèn)位置等)可以通過閃爍的方式突出顯示;系統中多種漫游方式并存,既有OSG自帶的便于瀏覽和操作的軌跡球、駕駛等漫游方式又有自定義的模擬第一人稱游戲中步行漫游的方式,而且用戶還可以自己錄制漫游路徑;利用被動式立體投影方案實現了三維立體顯示功能。系統實際效果如圖7所示。
圖7 山西省水利工程規(guī)劃電子沙盤
本系統利用OSG中的osgText工具庫開發(fā)了矢量文字顯示功能,矢量數據不同于普通的模型數據,它是基于TrueType技術用數學函數表述文字輪廓外形直接渲染在屏幕上的,因此矢量文字不受顯示分辨率的影響,文字大小不會隨著視點遠近而發(fā)生變化而且可以設置為始終面對屏幕,特別適合于標牌指示。另外,系統還利用OSG的DrawPixel工具庫增加了圖片顯示功能并為其添加了鼠標響應事件,由于DrawPixel也是基于像素直接在屏幕上繪制的,因此它也有 “矢量位圖”的效果,用戶觀察角度變化不會影響位圖的朝向。效果如圖8所示。
圖8 場景文字、圖片標注功能的實現
為了方便用戶使用,本系統添加了基于Excel表格的手動編輯功能。利用Visual Studio自定義的API接口我們開發(fā)了用于讀取Excel表格數據的功能類CExcelRead,利用此接口我們可以直接在系統指定的Excel表格中編輯文字標注的位置、內容、顏色、高度、大小、顯示層次以及彈出的圖片等屬性。
電子沙盤系統具有可編輯性強、生動直觀等傳統實物電子沙盤無法比擬的優(yōu)點,結合立體投影顯示、多通道顯示等顯示手段可以產生優(yōu)美震撼的視覺效果,具有光明的應用前景。經過實例驗證,上述基于OSG開發(fā)電子沙盤系統的方案切實可行且具有便捷、高效、功能強大等優(yōu)點,而且OSG的開源特性可以使我們開發(fā)出具有自主產權的系統。但是,由于OSG自身特點的限制,此方案對程序員的開發(fā)水平要求較高,需要在優(yōu)化場景渲染效率、開發(fā)平臺產品化等方面做更多、更深入的研究。
[1]YIN Xi-shuang,ZHOU Yi-h(huán)ong,HU Zhi-gen,et al.Re-search on dynamic simulation an d visualization for construction process of hydropower project based on virtual reality [J].Journal of System Simulation,2005,17 (7):1690-1693 (in Chinese).[尹習雙,周宜紅,胡志根,等.基于虛擬現實的水電工程施工動態(tài)可視化仿真研究 [J].系統仿真學報,2005,17 (7):1690-1693.]
[2]LIU Yu-ming,YANG Fang-ting,JI Liang-xiong,et al.The realization of 3dscene simulation system of Shanxi Wanjiazhai yellow river water diversion project [J].Journal of System Simulation,2009,21 (6):1591-1595 (in Chinese). [劉玉明,楊方廷,紀良雄,等.山西省萬家寨引黃工程三維視景仿真 系 統 實 現 [J]. 系 統 仿 真 學 報,2009,21 (6):1591-1595.]
[3]YAO Hong-wei,TU Ying.The research and development of electronic sand table in water transfer from south to north project[J].Journal of System Simulation,2002,14 (12):1598-1602(in Chinese).[姚宏偉,涂穎.南水北調電子沙盤系統的研究與開發(fā) [J].系統仿真學報,2002,14 (12):1598-1602.]
[4]DU Zhi-qiang,LI De-fen,ZHU Yi-xuan,et al.3DGIS based reconstruction and visualization of timber-frame building cluster[J].Journal of System Simulation,2006,18 (7):1886-1889(in Chinese).[杜志強,李德仁,朱宜萱,等.基于3DGIS的木構建筑群三維重建與可視化 [J].系統仿真學報,2006,18(7):1886-1889.]
[5]CAO Jing,SHAO Yuan-zheng,ZHANG-Yu,et al. Fast modeling and roaming of large terrain [J].Journal of Yangtze River Scientific Research Institute,2008,25 (4):40-43 (in Chinese).[曹晶,邵遠征,張煜,等.大范圍地形及城市三維快速建模與漫游 [J].長江科學院院報,2008,25 (4):40-43.]
[6]Michael Zeiler.Modeling our world [M].New York:ESRI,2000:89-92.
[7]Hong Liang,Raj Arangarasan,Larry Theller.Dynamic visualization of high resolution GIS dataset on multi-panel display using ArcGIS engine [J].Computers and Electronics in Agriculture,2007,58 (2):174-188.
[8]Paul Matrz.OpenSceneGraph quick start guide [EB/OL].http://www.osg-books.com/books/osg_qs.htm,2006.
[9]WANG Rui,QIAN Xue-lei.Design and APPLICATION OF OpenSceneGraph[M].BeiJing:TsingHua University Public House,2009 (in Chinese). [王銳,錢學雷.OpenScene-Graph三維渲染引擎設計與實踐 [M].北京:清華大學出版社.2009.]
[10]XIAO Peng,LIU Geng-dai,XU Ming-liang.Programming guide of OpenSceneGraph [M].Beijing:TsingHua University Public House,2009(in Chinese). [肖鵬,劉更代,徐明亮.Open-SceneGraph三維渲染引擎編程指南 [M].北京:清華大學出版社,2009.]
[11]TAN Shu-ren,ZHANG Mao-jun,CHENG Gang,et al.Study on augmented reality electronic sand table and key technique[J].Journal of System Simulation,2007,19 (20):4727-4730(in Chinese).[譚樹人,張茂軍,程鋼,等.增強現實電子沙盤及關鍵技術研究 [J].系統仿真學報,2007,19 (20):4727-4730].
[12]HOU Huan-h(huán)uan.Research on generation method of electronic sand table based on ArcGIS[D].Taiyuan:Taiyuan University of Technology,2010(in Chinese).[侯歡歡.基于ArcGIS的電子沙盤生成方法研究 [D].太原:太原理工大學學位論文,2010.]
[13]HUANG Bo.The design and implementation of large terrain 3Delectronic sand table system [D].Chengdu:University of Electronic Science and Technology of China,2009 (in Chinese).[黃波.大地形3D電子沙盤系統的設計與實現 [D].成都:電子科技大學學位論文,2009.]
[14]Dave Shreiner,Mason Woo,Jackie Neider,et al.OpenGL programming guide[M].6th ed.Sun Microsystem Press,2008.
[15]YANG Jing,LI Cheng,FEI Li-fan.The application research of large terrain simulation based on CTS [J].Science of Surveying and Maping,2008,33 (1):185-187 (in Chinese).[楊進,李程,費立凡.基于CTS的大地形仿真應用研究[J].測繪科學,2008,33 (1):185-187.]
[16]DENG Ye,FANG Wei-ning,TIAN Sheng-cai.The real time modeling method of 3Dterrain in scene simulation system [J].Journal of Beijing Jiaotong University,2007,31 (4):124-127(in Chinese).[鄧野,方衛(wèi)寧,田生彩.視景仿真系統中三維地形的實時生成方法 [J].北京交通大學學報,2007,31 (4):124-127.]