李新放, 劉海行, 周 林, 賈 貞, 宋轉(zhuǎn)玲
(國(guó)家海洋局 第一海洋研究所, 山東 青島266061)
基于OpenSceneGraph的海洋環(huán)境三維可視化系統(tǒng)研究
李新放, 劉海行, 周 林, 賈 貞, 宋轉(zhuǎn)玲
(國(guó)家海洋局 第一海洋研究所, 山東 青島266061)
為了研究虛擬現(xiàn)實(shí)技術(shù)在海洋環(huán)境三維可視化中的應(yīng)用, 對(duì)大氣、海底地形、風(fēng)浪流等數(shù)據(jù)產(chǎn)品進(jìn)行了分析整理, 運(yùn)用場(chǎng)景裁剪、level of details(LOD)細(xì)節(jié)層次、場(chǎng)景動(dòng)態(tài)調(diào)度等關(guān)鍵技術(shù)方法, 結(jié)合VisualPlanetBuilder (VPB)、ARCGIS多種數(shù)據(jù)處理工具, 在VC++和OSG2.8.7的可視化開(kāi)發(fā)環(huán)境上,構(gòu)建了一個(gè)三維、動(dòng)態(tài)、實(shí)時(shí)、可交互的海洋環(huán)境可視化模擬仿真系統(tǒng)。這個(gè)系統(tǒng)可以為海洋科學(xué)研究和工程建設(shè)提供一個(gè)更加便捷、直觀(guān)的可視化平臺(tái)。
虛擬現(xiàn)實(shí); 海洋環(huán)境; 可視化
在全球陸地資源日益緊張和環(huán)境不斷惡化的今天, 世界各國(guó)紛紛將目光轉(zhuǎn)向海洋, 開(kāi)發(fā)海洋資源,發(fā)展海洋經(jīng)濟(jì)成為沿海國(guó)家國(guó)民經(jīng)濟(jì)的重要支柱,伴隨著在海洋開(kāi)發(fā)過(guò)程中人們?nèi)找娑鄻踊暮A啃畔⑿枨? 原有的二維紙質(zhì)海圖、電子海圖提供的海洋環(huán)境信息已經(jīng)日漸不能滿(mǎn)足實(shí)際生產(chǎn)研究的需要??焖佟⒏咝У臄?shù)據(jù)模型, 流暢、逼真的三維場(chǎng)景渲染方式, 日益成為海洋環(huán)境信息表達(dá)的一種趨勢(shì)。在海洋環(huán)境的三維可視化研究中, 海洋因其環(huán)境的復(fù)雜性和數(shù)據(jù)的難以獲取, 較之陸地更加難以模擬。目前,國(guó)外在海洋環(huán)境三維可視化的研究和應(yīng)用方面較為成熟, Flavio等[1]對(duì)實(shí)時(shí)三維地形可視化中數(shù)據(jù)分析應(yīng)用進(jìn)行了研究, Wynne等[2]對(duì)分等級(jí)不規(guī)則三角網(wǎng)的三維高程表示進(jìn)行了研究, Kofler等[3]對(duì)地形模型的大場(chǎng)景貼圖進(jìn)行了研究。經(jīng)過(guò)長(zhǎng)期應(yīng)用和推廣, 形成了一系列可視化商業(yè)軟件, 如 Google Earth、Skyline、Cadsoft的 Envisioneer和 MaK Technologies的Army Command 2010等軟件。我國(guó)在海洋三維可視化方面的研究主要從20世紀(jì)末開(kāi)始逐漸發(fā)展起來(lái),任建武[4]等對(duì)海底地形及變化模型進(jìn)行了研究; 肖如林等[5]對(duì)三維虛擬地球下的海洋信息原型適應(yīng)性進(jìn)行了分析與研究; 劉海行等[6]基于 IDL對(duì)海洋觀(guān)測(cè)航線(xiàn)斷面進(jìn)行了分析研究; 徐敏等[7]對(duì)海洋大氣環(huán)境的多維動(dòng)態(tài)可視化系統(tǒng)進(jìn)行了研究; 蘇天赟等[8]對(duì)海底多源綜合數(shù)據(jù)的集成與管理進(jìn)行了研究等。但是, 這些研究大多是針對(duì)小范圍、局部區(qū)域的海洋環(huán)境仿真分析建模, 缺少對(duì)全球海洋環(huán)境可視化進(jìn)行宏觀(guān)的系統(tǒng)研究。
OpenSceneGraph(OSG)是一個(gè)基于工業(yè)圖形標(biāo)準(zhǔn)OpenGL的高層次API接口, 即三維可視化渲染引擎。它具有跨平臺(tái)的特性和較高的渲染性能, 程序員能夠通過(guò)它更加快速、便捷地創(chuàng)建高性能、跨平臺(tái)的交互式圖形程序。隨著虛擬仿真技術(shù)的發(fā)展, OSG已在三維地理信息系統(tǒng)、計(jì)算機(jī)輔助設(shè)計(jì)、科學(xué)與工程數(shù)據(jù)可視化、游戲與娛樂(lè)等多個(gè)行業(yè)得到廣泛應(yīng)用。
本文通過(guò)研究OSG三維渲染引擎內(nèi)部結(jié)構(gòu), 利用 VC++開(kāi)發(fā)平臺(tái)結(jié)合 OSG2.8.7開(kāi)發(fā)包, 建立三維球體模型, 在地球模型上對(duì)現(xiàn)有海洋環(huán)境可視化產(chǎn)品進(jìn)行宏觀(guān)展示, 并對(duì)現(xiàn)有高程數(shù)據(jù)、衛(wèi)星云圖進(jìn)行處理, 增強(qiáng)顯示效果, 最終構(gòu)建一個(gè)實(shí)時(shí)、高效、流暢、逼真的海洋環(huán)境三維仿真可視化系統(tǒng)。
海洋環(huán)境三維可視化系統(tǒng)主要分以下層次: 基礎(chǔ)數(shù)據(jù)層、可視化驅(qū)動(dòng)層、應(yīng)用實(shí)現(xiàn)層?;A(chǔ)數(shù)據(jù)層主要對(duì)海底地形數(shù)據(jù)、DEM 數(shù)據(jù)、衛(wèi)星云圖、ARCGIS數(shù)據(jù)、獨(dú)立應(yīng)用3DMax建立的模型等多類(lèi)數(shù)據(jù)進(jìn)行預(yù)處理, 構(gòu)建可視化系統(tǒng)的基礎(chǔ)背景場(chǎng)模型, 通過(guò)建立金字塔瓦片分級(jí)索引, 達(dá)到根據(jù)用戶(hù)不同的交互請(qǐng)求進(jìn)行及時(shí)、快速的數(shù)據(jù)響應(yīng); 可視化驅(qū)動(dòng)層主要通過(guò) OSG三維渲染引擎對(duì)數(shù)據(jù)進(jìn)行渲染、顯示, 為使用者提供一個(gè)實(shí)時(shí)、動(dòng)態(tài)、三維可交互的立體環(huán)境; 應(yīng)用實(shí)現(xiàn)層根據(jù)用戶(hù)的具體應(yīng)用需求, 基于可視化驅(qū)動(dòng)引擎, 提供專(zhuān)業(yè)可視化仿真模塊, 實(shí)現(xiàn)海洋環(huán)境要素在三維數(shù)字球體模型下的交互式漫游、動(dòng)態(tài)加載、多視角動(dòng)態(tài)瀏覽、交互拾取查詢(xún)等。層次結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)體系結(jié)構(gòu)Fig. 1 System Architecture
裁減(Cull)就是“從大量事物中進(jìn)行挑選、刪除”。對(duì)于一個(gè)龐大的三維系統(tǒng)而言, 往往存在大量無(wú)助于最終渲染結(jié)果的對(duì)象, 把它們從場(chǎng)景結(jié)構(gòu)中暫時(shí)剔除, 將剩余場(chǎng)景對(duì)象發(fā)送到OpenGL渲染管線(xiàn), 即只把最終能夠被終端用戶(hù)看到的對(duì)象發(fā)送到渲染管線(xiàn)[10]。在系統(tǒng)設(shè)計(jì)中采用視錐體裁減方法, 包括近平面裁剪、遠(yuǎn)平面裁剪、視錐體側(cè)面裁剪, 超出這一裁剪范圍的對(duì)象將被剔除出渲染隊(duì)列。
根據(jù)細(xì)節(jié)層次的思想, 在不影響渲染外觀(guān)的前提下, 系統(tǒng)根據(jù)場(chǎng)景對(duì)象與觀(guān)察者的距離, 模型越靠近觀(guān)察者越精細(xì), 顯示范圍相對(duì)縮小, 以減輕系統(tǒng)繪制場(chǎng)景的負(fù)擔(dān), 實(shí)現(xiàn)全球大范圍海底地形的動(dòng)態(tài)、快速可視化仿真。LOD (level of details)節(jié)點(diǎn)調(diào)度流程如圖2所示。
采用視錐體裁減保證每幀中只有一部分?jǐn)?shù)據(jù)被傳送到渲染管道, 而LOD的場(chǎng)景結(jié)構(gòu)犧牲一部分渲染質(zhì)量換取了效率的提升, 但這些都不能解決“在內(nèi)存中可能要存儲(chǔ)海量數(shù)據(jù)”這一問(wèn)題——數(shù)百GB甚至TB級(jí)別的數(shù)據(jù)(如海底地形地貌)很難在現(xiàn)有的計(jì)算機(jī)硬件條件下全部載入內(nèi)存中。因此, 數(shù)據(jù)分頁(yè)(動(dòng)態(tài)調(diào)度)尤為重要, 在顯示當(dāng)前視域的同時(shí), 判斷下一步可能要載入的數(shù)據(jù), 做出正確的加載和卸載處理, 確保內(nèi)存中始終維持有限的數(shù)據(jù)額度。在平臺(tái)驅(qū)動(dòng)層中, 我們用osgDB::DatabasePager來(lái)完成這一工作, 主要功能實(shí)現(xiàn)流程如圖3(“頁(yè)面”指用戶(hù)視野范圍)所示。
實(shí)現(xiàn)三維場(chǎng)景的交互漫游, 主要就是通過(guò)矩陣運(yùn)算, 在三維空間中實(shí)現(xiàn)視點(diǎn)變換、投影變換、視口轉(zhuǎn)換等一系列操作, 調(diào)整模型的位置姿態(tài), 最終轉(zhuǎn)換為屏幕像素輸出。場(chǎng)景的更新包括人機(jī)交互事件的整理與傳遞、動(dòng)態(tài)數(shù)據(jù)的加載與管理、用戶(hù)自定義更新操作的執(zhí)行等。這些工作通過(guò) osgViewer::ViewBase類(lèi)來(lái)統(tǒng)一調(diào)配實(shí)現(xiàn), 根據(jù)用戶(hù)自定義操作的內(nèi)容不同, 場(chǎng)景更新的復(fù)雜程度亦不同。更新顯示階段的主要流程如下: (1)收集來(lái)自用戶(hù)事件隊(duì)列EventQueue的交互事件, 并進(jìn)行整理。(2) 將事件傳遞給節(jié)點(diǎn)的時(shí)間回調(diào)(EventCallback)和視景器的事件處理器隊(duì)列(EventHandles)。(3)更新動(dòng)態(tài)調(diào)度的數(shù)據(jù)。(4)根據(jù)漫游器(MatrixManipulator)位置, 調(diào)整場(chǎng)景中的相機(jī)。無(wú)論是用戶(hù)視角的變化、基于路徑的漫游或者其他用戶(hù)自定義的操作, 場(chǎng)景的顯示漫游過(guò)程主要是通過(guò)以上四個(gè)步驟來(lái)實(shí)現(xiàn)的。
圖2 LOD節(jié)點(diǎn)調(diào)度流程Fig. 2 The dynamic scheduling of level of details ( LOD) node
圖3 數(shù)據(jù)動(dòng)態(tài)調(diào)度實(shí)現(xiàn)流程Fig. 3 The dynamic scheduling realization of data
基礎(chǔ)地球模型的建立是實(shí)現(xiàn)宏觀(guān)海洋環(huán)境三維可視化的基礎(chǔ), 而海量海底地形背景場(chǎng)的三維建模是地球模型的重要組成部分?;A(chǔ)地球模型的建立主要是通過(guò)VPB來(lái)實(shí)現(xiàn)的, VisualPlanetBuilder(簡(jiǎn)稱(chēng)VPB)是一個(gè)強(qiáng)大的地形數(shù)據(jù)生成工具, 可以讀入多種類(lèi)型的地理影像和高程數(shù)據(jù), 并構(gòu)建不同規(guī)模的分塊分頁(yè)地形數(shù)據(jù)庫(kù)。VPB與OpenSceneGraph緊密結(jié)合, 依賴(lài)于 Geospatial Data Abstraction Library(GDAL)庫(kù)和 LibSquish庫(kù), 分別實(shí)現(xiàn)了地理信息數(shù)據(jù)的識(shí)別和多種圖像壓縮格式, 它具備TB級(jí)別數(shù)據(jù)的處理能力, 并可以使用分布式文件系統(tǒng)來(lái)執(zhí)行并發(fā)的數(shù)據(jù)處理。
利用 VPB基于柵格高程數(shù)據(jù)構(gòu)建三維球體模型,對(duì)柵格高程數(shù)據(jù)和影像數(shù)據(jù)進(jìn)行格式化處理, 并自動(dòng)生成一個(gè)球模型。同時(shí), 利用 VPB也可以批量處理多個(gè)高程數(shù)據(jù)或影像數(shù)據(jù), 疊加高程模型。模型內(nèi)部依據(jù)不同的分辨率層次進(jìn)行了金字塔分級(jí), 能夠?qū)崿F(xiàn)不同精度、不同細(xì)節(jié)層次下模型的快速、分層調(diào)度。利用 VPB基于高程數(shù)據(jù)生成模型, 根據(jù)鼠標(biāo)當(dāng)前的位置垂直于屏幕發(fā)送一條射線(xiàn)與模型進(jìn)行求交檢測(cè), 得到與模型的交點(diǎn), 讀取該點(diǎn)的高程信息,并換算出相應(yīng)的經(jīng)緯度, 實(shí)現(xiàn)經(jīng)緯度與高程的實(shí)時(shí)查詢(xún)?nèi)鐖D4所示。
圖4 基于30 m分辨率柵格數(shù)據(jù)建立球體模型Fig. 4 The globe model based on raster data with a resolution of 30 m
在建立的基礎(chǔ)場(chǎng)景三維球體模型的基礎(chǔ)上, 對(duì)大范圍的海洋環(huán)境數(shù)據(jù)產(chǎn)品進(jìn)行顯示, 通過(guò)研究OSG開(kāi)源軟件OSG Earth中的數(shù)據(jù)格式, 編輯.earth文件, 實(shí)現(xiàn)在三維球體上宏觀(guān)展示海洋環(huán)境信息。以海洋環(huán)境溫度場(chǎng)信息產(chǎn)品顯示為例: 一般情況下,當(dāng)需要把PNG, JPG等自身不具備坐標(biāo)信息的產(chǎn)品投影到三維球體上顯示, 需要先應(yīng)用 ARCGIS等專(zhuān)業(yè)軟件進(jìn)行坐標(biāo)轉(zhuǎn)換, 轉(zhuǎn)換成具有相應(yīng)坐標(biāo)的GEOTIFF格式后, 再加載到三維球體上進(jìn)行展示。由于現(xiàn)有的海洋環(huán)境信息數(shù)據(jù)量比較大, 而且具有定時(shí)的更新, 如果用專(zhuān)業(yè)軟件進(jìn)行轉(zhuǎn)換具有很大的工作量, 考慮到這方面的原因, 我們采用XML語(yǔ)言編輯.earth文件, 對(duì) PNG 數(shù)據(jù)(已知坐標(biāo)范圍)通過(guò)GDAL庫(kù)在系統(tǒng)后臺(tái)直接進(jìn)行轉(zhuǎn)換, 實(shí)現(xiàn)對(duì)海洋環(huán)境產(chǎn)品實(shí)時(shí)處理, 完成坐標(biāo)投影轉(zhuǎn)換, 動(dòng)態(tài)在三維球體上進(jìn)行展示。應(yīng)用 IDL生成全球的海水溫度場(chǎng)數(shù)據(jù)圖, 并通過(guò) GDAL庫(kù)與 osgearth結(jié)合在球體上進(jìn)行全球海水溫度場(chǎng)數(shù)據(jù)三維展示如圖5所示; 對(duì)基本earth格式文件的編輯如下:
圖5 全球海洋溫度場(chǎng)數(shù)據(jù)圖Fig. 5 The temperature chart of the whole globe ocean
為在系統(tǒng)中更加全面地展示海洋環(huán)境信息, 系統(tǒng)引入了 GIS數(shù)據(jù)層的概念, 實(shí)現(xiàn)在系統(tǒng)中動(dòng)態(tài)連接多種類(lèi)型的矢量數(shù)據(jù), 豐富海洋環(huán)境信息的表達(dá),如可根據(jù)需要加入海岸線(xiàn)層、海島名海域注記層等。應(yīng)用OSG提供的插件osgdb_shp直接讀取全球主要鐵路干線(xiàn)矢量數(shù)據(jù), 并把其作為一個(gè)單獨(dú)的圖層加載到三維球體上, 如圖6所示。在具體的操作中可以根據(jù)需要利用函數(shù) dynamic_cast
圖6 加載鐵路干網(wǎng)SHP數(shù)據(jù)Fig. 6 Load with the data of the globe SHP rail track
本系統(tǒng)主要研究了利用OSG及相關(guān)開(kāi)發(fā)包構(gòu)建三維球體模型, 并在模型上對(duì)海洋環(huán)境數(shù)據(jù)產(chǎn)品進(jìn)行宏觀(guān)展示, 對(duì)現(xiàn)有的高程、水深、衛(wèi)星云圖等數(shù)據(jù)進(jìn)行初步處理, 實(shí)現(xiàn)高程模型、云層等效果, 為以后的研究提供大的背景場(chǎng)環(huán)境, 為用戶(hù)提供一個(gè)直觀(guān)、動(dòng)態(tài)、可交互的可視化瀏覽系統(tǒng)。目前系統(tǒng)還存在一些不足, 有待進(jìn)一步完善。如海洋環(huán)境數(shù)據(jù)主要是依據(jù)觀(guān)測(cè)數(shù)據(jù)生成的海洋環(huán)境產(chǎn)品, 可考慮在以后直接讀取觀(guān)測(cè)數(shù)據(jù)進(jìn)行處理并在三維球體上動(dòng)態(tài)顯示; 在現(xiàn)有系統(tǒng)基礎(chǔ)上應(yīng)用Activex等插件技術(shù), 實(shí)現(xiàn)海洋環(huán)境可視化系統(tǒng)的網(wǎng)絡(luò)發(fā)布; 針對(duì)目前衛(wèi)星云圖只是做了簡(jiǎn)單的處理, 可以把體積云的概念引入系統(tǒng)提供逼真的效果等。
[1]Flavio L M, Luiz F C, Ferreira S. Cartographical data treatment analysis for real time three-dimensional terrain visualization[J]. VIII Brazilian Symposium on Geo Informatics, 2006, 11: 3-17.
[2]Abdelguerfi M, Wynne C, Cooper E, et al . Representation of 3-D elevation in terrain databases using hierarchical triangulated irrefular networks: a comparative analysis[J]. International Journal of Geographical Information Science, 1998 , 12(8): 853-873.
[3]Kofler M, Gervautz M, Gruber M. The Styria Flyover –LOD management for huge textured terrain models[J].Computer Graphics International Proceedings, 1998, 1:444-454.
[4]劉志軍, 金繼業(yè), 劉振民, 等. 海洋底質(zhì)三維可視化模擬初步研究[J]. 測(cè)繪科學(xué), 2008, 33(3): 113-115.
[5]肖如林, 蘇奮振, 杜云燕, 等. 三維虛擬地球的海洋信息適應(yīng)性分析及原型研究[J]. 地球信息科學(xué)學(xué)報(bào),2010, 12(4): 555-560.
[6]劉海行, 于衛(wèi)東, 周玉斌, 等. 海洋觀(guān)測(cè)航線(xiàn)斷面數(shù)據(jù)的三維可視化實(shí)現(xiàn)[J]. 海洋科學(xué)進(jìn)展, 2004, 22(4):493-500.
[7]徐敏, 方朝陽(yáng), 朱慶, 等. 海洋大氣環(huán)境的多維動(dòng)態(tài)可視化系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 武漢大學(xué)學(xué)報(bào)信息科學(xué)版, 2009, 1: 57-59.
[8]蘇天赟, 劉保華, 翟世奎, 等. “數(shù)字海底”數(shù)據(jù)庫(kù): 海底多源綜合數(shù)據(jù)的集成與管理方法研究[J]. 海洋科學(xué)進(jìn)展, 2005, 4: 504-511.
[9]萬(wàn)定生, 徐亮. 基于 OSG的水利工程三維可視化系統(tǒng)研究與應(yīng)用[J]. 計(jì)算機(jī)與數(shù)字工程, 2009, 4:135-137.
[10]王銳, 錢(qián)學(xué)雷. OSG三維渲染引擎設(shè)計(jì)與實(shí)現(xiàn)[M].北京: 清華大學(xué)出版社, 2009: 300-301.
A three-dimension visualization system of marine environment based on OpenSceneGraph
LI Xin-fang, LIU Hai-xing, ZHOU Lin, JIA Zhen, SONG Zhuan-ling
(First Institute of Oceanography, State Oceanic Administration, Qingdao 266061, China)
Jun., 23, 2011
virtual reality; marine environment; visualization
A study on the use of the virtual reality technology in three-dimension (3D) visualization of marine environment was carried on by analyzing and integrating the data of atmosphere, sea-floor relief, wind, wave and current. Methods, such as scene culling, level of details (LOD) and dispatch of dynamic scene, were used, and the data was processed and analyzed with tools including VisualPlanetBuilder (VPB) and ARCGIS. With Visual C++and OSG 2.8.7 graphics toolkit, a dynamic,interactive and real-time 3D visualized marine environment was constructed, which can be used as a convenient and direct 3D graphic tool for marine science research and engineering.
P76 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1000-3096(2012)01-0054-05
2011-06-23;
2011-11-15
南海海洋環(huán)境數(shù)據(jù)信息服務(wù)平臺(tái)(2008AA09A401-05)
李新放(1983-), 男, 山東五蓮人, 碩士, 研究方向?yàn)楹Q蟓h(huán)境的三維模擬與可視化; 劉海行, 通信作者, 電話(huà): 0532-88967412,E-mail: liuhx@fio.org.cn
劉珊珊)