search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

專輯論文| 黃吳蒙:一種面向虛擬地球的海面動態可視化優化方法

《測繪學報》

構建與學術的橋樑 拉近與權威的距離

黃吳蒙1,2

, 陳靜1,2

1. 武漢大學測繪遙感信息工程國家重點實驗室, 湖北 武漢 430079;

2. 地球空間信息技術協同創新中心, 湖北 武漢 430079

收稿日期:2016-08-20; 修回日期:2016-10-20

基金項目:測繪遙感信息工程國家重點實驗室專項科研經費資助

第一作者簡介:黃吳蒙 (1991—),男, 博士生, 主要從事VR-GIS理論、方法和應用研究。

摘要:現有的虛擬地球中的海面可視化方法主要採用投影網格的方式組織海面格網,這種特殊的網格組織方式,導致其在反映不同海域差異性特徵時存在缺陷。基於全球離散格網的海面可視化方法由於能夠與虛擬地球離散的空間剖分相匹配,有效彌補了投影網格法的缺陷,因此更符合虛擬地球海面模擬應用的需要。然而現有的離散格網法存在繪製效率差、場景載入慢、需要修補格網縫隙等問題,限制了其應用發展。對此,本文在現有離散格網法基礎上進行優化:首先,在數據結構上對傳統等經緯度離散格網進行擴展,設計了一種面向GPU繪製的多尺度海面網格模型來組織管理海面格網;其次,為了實現風場驅動下的海浪動態繪製,在多尺度海面網格模型的基礎上提出了一種支持實時風場更新的海浪動態繪製方法;同時,考慮到格網縫隙修補對系統效率的影響,本文針對海面格網特點並結合GPU技術提出了一種高效的海面格網縫隙修補方法。最後通過對比試驗驗證了本文方法的可行性和有效性。試驗結果表明,本文方法繪製效率穩定,載入速度快,且能彌補現有方法在功能上的缺失,因此應用範圍更加廣泛。

關鍵詞:虛擬地球 海面動態可視化 GPU著色器 全球離散格網

An Optimization Method for Virtual Globe Ocean Surface Dynamic Visualization

HUANG Wumeng1,2

, CHEN Jing1,2

Abstract: The existing visualization method in the virtual globe mainly uses the projection grid to organize the ocean grid. This special grid organization has the defects in reflecting the difference characteristics of different ocean areas. The method of global ocean visualization based on global discrete grid can make up the defect of the projection grid method by matching with the discrete space of the virtual globe, so it is more suitable for the virtual ocean surface simulation application.But the available global discrete grids method has many problems which limiting its application such as the low efficiency of rendering and loading, the need of repairing grid crevices. To this point, we propose an optimization for the global discrete grids method. At first, a GPU-oriented multi-scale grid model of ocean surface which develops on the foundation of global discrete grids was designed to organize and manage the ocean surface grids. Then, in order to achieve the wind-drive wave dynamic rendering, this paper proposes a dynamic wave rendering method based on the multi-scale ocean surface grid model to support real-time wind field updating. At the same time, considering the effect of repairing grid crevices on the system efficiency, this paper presents an efficient method for repairing ocean surface grid crevices based on the characteristics of ocean grid and GPU technology. At last, the feasibility and validity of the method are verified by the comparison experiment. The experimental results show that the proposed method is efficient, stable and fast, and can compensate for the lack of function of the existing methods, so the application range is more extensive.

Key words: virtual earth ocean visualization GPU shader discrete global grids

海洋覆蓋了全球近70%的表面,是虛擬地球表達的重要內容之一。海面可視化即通過對海面進行網格化處理,並使網格變成高低起伏的海浪高度場,同時在每一幀繪製時按一定規律對網格點位置進行更新,進而實現海浪的動態效果。與傳統海面可視化相比,虛擬地球中海洋表面可視化,能夠突破傳統海面可視化在空間尺度上的限制,實現全球多尺度海面的無縫瀏覽,因此是目前海面可視化系統中最為流行的一種模式,廣泛應用於艦船導航、航線規劃、漁船監控、虛擬戰場等領域。

現有的虛擬地球中的海面動態可視化方法主要採用投影網格的方式實現全球海面動態效果,如商業公司Sundog開發的Triton海洋可視化中間件 (WGS-84模式) 即採用這類方法。該方法通過在投影空間構建海面格網,並根據地球形狀確定格網的覆蓋範圍,由於投影空間構建的格網能夠跟隨視點位置進行自動縮放平移,因此在不構建新的格網情況下實現了海域的無限延伸及尺度縮放。然而這種特殊的網格組織方式無法與虛擬地球離散的空間剖分框架相融合,且所有地區採用同一格網表示,在反映不同海域的差異化特徵時存在缺陷,尤其體現在基於投影網格法的精細海陸分界上。基於全球離散格網的海面可視化方法[

3

-

4

]彌補了以上缺陷,它主要基於瓦片四叉樹[

3

]的方式組織海面格網,因此能夠與虛擬地球中的多尺度空間數據相匹配,除了根據海底地形高度與海平面高度區分陸地海洋外,對於缺少海底地形數據的地區可以調用相應位置海域分佈數據 (如從電子海圖中提取的海岸線數據等) 進行更加精細海陸分界。然而與投影網格法相比,現有的離散格網法也存在較為明顯的缺陷:首先,全球離散格網法在場景瀏覽時需要頻繁進行海面格網的動態載入及卸載,儘管可以在後台線程中進行,但如果格網構建複雜或內存佔用量較大時,仍然會對整體效率造成影響;其次,全球離散格網存在因不同尺度格網拼接導致的格網縫隙問題,而現有的縫隙修補演算法[

4

-

6

]普遍計算複雜,嚴重影響場景繪製及載入效率。

綜上所述,基於全球離散格網的海面動態可視化方法能夠彌補主流方法—投影網格法在反映不同海域差異性特徵時存在的缺陷,實現更為精細海陸分界效果。同時,其格網組織方式與虛擬地球離散空間剖分框架相匹配,因此更符合虛擬地球的應用需要。然而現有的全球離散格網法存在繪製效率低、載入速度慢、需要進行格網縫隙修補等問題。這些都限制了全球離散格網法的應用。對此,本文在現有離散格網法基礎上進行優化:首先,在數據結構上,本文對傳統等經緯度離散格網進行擴展,設計一種面向GPU的多尺度海面網格模型來組織管理海面格網;其次,為了實現風場驅動下的海浪動態繪製,本文在多尺度海面網格模型的基礎上提出了一種支持實時風場更新的海浪動態繪製方法;同時,考慮到格網縫隙修補對繪製效率的影響,本文針對海面格網特點並結合GPU技術提出了一種高效的海面格網縫隙修補方法。

1 面向GPU的全球多尺度海面網格模型

為了對全球海面格網進行有效組織和管理,同時充分利用GPU并行計算的能力提高海面繪製效率,本文在全球等經緯度離散格網模型的基礎上進行擴展,設計了一種面向GPU繪製的全球多尺度海面網格模型,如

圖 1

所示。

圖 1 面向GPU的多尺度海面網格模型Fig. 1 GPU-oriented multi-scale grid model of ocean surface

海面網格是海面數據組織及繪製的基本單元,按照全球等經緯度網格剖分的規則進行組織與構建。由此,每個海面格網都有唯一的空間編碼[

8

]與全球離散格網相對應,它記錄了當前格網所在的級數、行列號。通過空間編碼可以檢索到當前海域的風速、風向和海水深度、海域分佈等信息以及確定網格之間的鄰接關係。

海面網格的幾何對象描述了海面的幾何結構信息,由頂點和頂點索引組成。頂點即格網點,用於表達海面高低起伏的最小單元,除基本的位置信息外,為了實現基於GPU的海面動態可視化,對頂點屬性進行擴展,添加了包括經緯度、頂點類型在內的擴展屬性。頂點索引記錄了離散頂點之間的組織關係,用於實現點向面圖元的轉換。

為了實現海浪的GPU動態繪製,將海面網格的紋理對象分為位移紋理和表面紋理,位移紋理記錄了海面波浪的動態起伏過程,以當前海域的風向、風速為參數再基於海浪建模演算法實時生成,最後以三維紋理的方式載入到GPU中。表面紋理則記錄了當前海面格網的顏色及透明度信息,可通過海水深度或記錄海域分佈的掩模數據生成,其中顏色的深淺可以反映因為海水的深度導致的水體明暗效果。而透明度除了反映水體的質感外,還可用於隱去陸表水體,以達到海陸分界效果。

這種模型結構的優點在於將海面格網的幾何結構與其具體的形態特徵 (記錄在位移紋理中) 相互分離,僅在繪製時通過GPU進行關聯。海面格網初次載入時只需構建最基本的幾何結構,而較為複雜形態特徵可通過資源共享的方式被多個海面格網重複利用,因此有效提高了格網的構建速度。

圖 2為基於多尺度海面網格模型實現的海面多尺度繪製流程。首先對虛擬地球中的海域進行等經緯度劃分,隨著視點的變換,動態調度可視海域內相應尺度的空間數據,根據空間數據構建海面網格的幾何與紋理。對於同一海域不同尺度的海面格網則以自頂向下四叉樹金字塔的方式進行組織,隨著視點的遞進格網的解析度逐倍增加,海面波浪的起伏效果也逐漸明顯。

圖 2 全球海面多尺度繪製流程Fig. 2 Drawing Process of Multiscale Global Ocean Surface圖選項2 風場驅動下的海浪動態繪製方法

海面可視化的真實感絕大程度上取決於海面浪花的動態起伏效果,尤其是風場條件驅動下的海面浪花動態繪製,不僅在視覺上滿足用戶的需要,同時能夠與真實地理環境相匹配,更符合地理信息模擬應用的要求。對此,本文在多尺度海面網格模型基礎上,提出了一種風場驅動下的海浪動態繪製方法。

為了實現海面波浪的動態繪製,首先需要對海面波浪的運動規律進行歸納建模,本文採用了文獻[9]提出的一種基於海浪譜的海浪建模方法。該方法認為海面波浪高度h(x, t) 是由一系列正弦、餘弦波疊加而成,因而可通過二維快速傅里葉逆變換的方式求解, 其公式如下

(1)

式中,

m

=(

x

,

y

) 表示海面點的水平位置;,frame表示當前幀數,totalframe表示一次海浪循環的總幀數,

k

=(

kx

,

ky

) 為二維矢量。為了使生成的海面高度場具有上下左右循環重複的特點,令,,,

S

為數值常量表示高度場解析度,

R

為一個維度上的傅里葉採樣個數。傅里葉振幅受風場條件的影響並隨著時間發生變化,是求取海浪高度的關鍵。

圖 3 水平方向的海浪剖面Fig. 3 Horizontal Profile of Ocean Wave

本文對文獻[9]的方法進行了改進,根據海浪當前的起伏狀態及當前海面風場狀況計算每個海浪點在水平方向可能發生的偏移值,從而實現更為逼真的海浪模擬。

主要步驟如下:

首先對式 (1) 求梯度

式中,

Gxm

,

t

Gym

,

t

分別表示高度場橫縱方向的梯度值,同樣基於二維快速傅里葉逆變化求解,由於梯度指向高度場增長最快的方向,對於海面高度場來說,其梯度矢量的單位向量 (

gx

,

gy

) 可看作海浪發生傾斜程度最大的方向。則海浪在水平方向的偏移值為

式中,

f

為梯度方向 (

gx

,

gy

) 與當前風場矢量 (

wx

,

wy

) 點積,反映了風場對海浪的影響程度。

由此,建立了以垂直、橫、縱3個方向的偏移值描述當前時刻海浪運動的海浪模型,通過將3個方向偏移值作用於海面格網點的初始位置之上即可實現海面的動態繪製。在動態繪製方式上,常規基於CPU實時修改格網點位置的方式,計算量較大,影響繪製效率。而預先構建多時態格網的方式會增加內存的佔用量及影響網格的載入效率,不適合大規模的海面動態可視化,且格網構建后修改困難,無法與實時風場進行匹配。對此,本文在多尺度海面網格模型的基礎上提出了一種基於GPU的海面動態繪製方法,通過GPU可以并行地對海面格網點位置進行更新,減少CPU計算量,同時將海浪運動的偏移值以位移紋理的方式載入到GPU中供著色器採樣,當風場條件發生變化,只需重新載入位移紋理,不需要對構建好的海面格網進行任何修改。其詳細演算法流程如圖 4所示。

圖 4 海面動態繪製流程Fig. 4 Dynamic drawing process of ocean surface

(1) 首先遍歷虛擬地球瓦片四叉樹,確定當前可視海域範圍,並構建當前海域的海面格網。

(2) 根據格網的空間編碼獲取視點最近的海面格網的風向、風速。取其平均值為參數,根據海浪建模演算法計算出海浪在橫、縱、垂直3個方向的偏移值,其值分別存儲在位移紋理的rgb 3個通道內。最後將不同時刻的位移紋理進行合併,得到立體紋理后載入頂點著色器中,如果當前場景的風速、風向與上一幀變化不大則不需要進行位移紋理的更新,以減少計算量。

(3) 在頂點著色器中,根據網格頂點的經緯度坐標 (lat,lon) 及當前幀數 (frame) 確定紋理坐標

式中,hres為海浪高度場的經緯度跨度,值為m表示海面高度場對應m°×m°的地球表面區域;totalframe表示一次海浪運動循環的總幀數;%表示取余。

(2)

式中,

Dx

=

D

.

r

·

Nx

Dy

=

D

.

g

·

Ny

Dz

=

D

.

b

·gl_normal;

Nx

Ny

為頂點所在位置切地球表面時的橫縱向量;gl_position為最終輸出的頂點坐標;gl_Model View Projection Matrix為頂點變換矩陣gl_vertex為原始頂點坐標;gl_normal為頂點法向量。

3 基於GPU的海面格網縫隙修補方法

海浪動態繪製中相鄰的不同尺度的海面格網因為解析度不同,在拼接時,邊緣線無法重合而產生縫隙,影響整體視覺效果,如圖 5(a)所示。對此,文獻[4]預先構建適應不同鄰接關係的邊緣格網,在繪製時根據需要動態的進行替換,然而其方法需要對相鄰格網級差進行約束以減少預構的邊緣格網數量。文獻[5]在相鄰格網之間根據頂點位置實時生成一系列三角形條帶進而達到修補縫隙的目的,但其演算法複雜,計算量較大,實現較為困難。文獻[6]則利用最新幾何著色器技術動態的修改邊緣幾何體的分形方式,從而避免裂縫的產生,但隨著相鄰格網級差的增加,分形方式會變得十分複雜,進而影響繪製效率。

圖 5 海面裂縫修補Fig. 5 Repair the crack of ocean grid

綜上所述,現有的海面格網縫隙修補演算法,主要是在傳統地形格網縫隙修補演算法基礎上的改進,容錯性高,但計算也較為複雜,對格網的繪製效率及載入速度會造成較大的影響。考慮到海面格網相對於地形格網,其幾何形態靈活可變,限制條件較少 (全球海平面高度可視為定值,波浪起伏高度不受具體值限制)。因此本文針對海面格網這一特點提出了一種以GPU技術為核心的高效海面格網縫隙修補演算法。

本文實現的海面縫隙修補基本思路如圖 5(a)(b)所示,首先確定相鄰格網邊緣上的重合頂點 (A點),對重合頂點之間的頂點 (B點,在高級別格網的邊緣線上) 通過頂點著色器重新計算其空間坐標。使其剛好落在重合頂點的連線上。其詳細演算法流程如下。

(1) 場景發生變換時,更新格網的鄰接關係,即記錄下每個格網的相鄰格網的空間編碼 (根據空間編碼可得到格網的空間範圍等信息)。

(2) 在頂點著色器中,首先根據頂點的類型判斷是否需要進行坐標修改。如圖 5(c)所示,海面格網中的每個頂點根據其位置的不同可分為上邊緣點 (a點)、下邊緣點 (b點)、左邊緣點 (c點)、右邊緣點 (d點)、角點 (e點)、內部點 (f點)6種。如果頂點屬於內部點則不需要進行修改。如果頂點屬於邊緣點,但與其相鄰的格網級別較高或相等,其頂點坐標同樣不需要修改。對於角點,將其當作與相鄰格網 (不考慮對角格網) 中級別最大的格網相鄰邊緣的邊緣點處理。

(3) 獲取離待修改邊緣點最近的左右重疊點的經緯度坐標 (lon112

式中,假定每個格網具有

m

×

m

個格網點,

m

為奇數。(lon,lat) 為待修改邊緣點的經緯度坐標,(lon00(4) 根據重疊點的經緯度坐標 (lon112212。根據線性比例計算邊緣點的偏移值

對於上下邊緣點,

a

=lon、

b

=lon1212

(5) 將位移值D導入式 (2) 中得到修改後的邊緣點坐標。

4 試驗

為了驗證本文提出方法的有效性和可行性,基於開源虛擬地球平台osgEarth進行試驗,軟體環境為Window 7,Visual Studio 2010和OpenGL。硬體配置為Intel (R) Core (TM) i3-2100雙核3.1 GHZ CPU,NVIDIA Quadro 600顯卡,1 GB顯存8 GB內存。

試驗數據中影像採用ESRI發布的ESRI_Imagery_World_2D地圖服務。地形採用ReadMap發布的地形瓦片服務,其陸地部分為全球90 m解析度 (3″×3″) 的STRM數據,海底部分則採用GEBCO (General Bathymetric Chart of the Oceans) 提供全球的深海測量數據 (30″×30″)。風場數據則根據艦船感測器實時獲取的風速、風向信息進行模擬插值生成。海域分佈數據 (海水與地表分別以不同顏色表示的圖像) 則通過電子海圖中的海岸線數據編輯生成。試驗前根據多尺度海面網格模型,對數據進行多尺度組織,構建四叉樹結構的瓦片金字塔。

圖 6 本文方法海面全球視圖Fig. 6 Global view of ocean (the suggested method)圖 7 本文方法海面局部視圖Fig. 7 Local view of ocean (the suggested method)圖 8 本文方法海面近景視圖Fig. 8 Near view of ocean (the suggested method)

對比3副圖片可以發現,隨著視角的遞進,海洋表面逐漸清晰,海水色調過渡平滑,宏觀海陸分界效果及微觀海面波浪效果都能得到有效體現,基本滿足全球多尺度海面無縫瀏覽的應用需要。

圖 9 投影網格法海面近景視圖Fig. 9 Near view of ocean (projected grid method)

圖 8圖 9中可以看出,本文方法在離散格網框架的支持下,能夠快速地調用當前區域的海域分佈數據,實現精細海陸分界。而投影網格法目前僅能通過RTT技術實時獲取的地表高程實現大致的海陸分界效果 (Trition提供的海陸分界方案),容易出現海水覆蓋真實地表等問題。

圖 10圖 11為縫隙修補前後海面效果比較。如圖 10所示,不同尺度海面格網拼接產生的「T型」縫隙,在海面波浪動態繪製時,變得十分明顯,嚴重影響視覺效果。而採用本文提出縫隙修補方法,可以在不佔用過多系統資源情況下,實現海面縫隙快速修補。

圖 10 縫隙修補前的海面Fig. 10 Ocean surface before repair crevices圖 11 縫隙修補后的海面Fig. 11 Ocean surface after repair crevices圖 12 風速為5 m/s海面波浪效果Fig. 12 Ocean wave drived by wind (5 m/s)圖 13 風速為24 m/s海面波浪效果Fig. 13 Ocean wave drived by wind (24 m/s)圖 14 3種方法幀率比較Fig. 14 Frame rate comparison圖 15 3種方法載入時間比較Fig. 15 Loading time comparison

圖 14可以看出商業軟體Triton實現的基於投影網格的海面可視化方法在繪製效率方面具有較為明顯的優勢,主要原因在於基於離散格網的海面可視化方法,在每一幀繪製時都需要進行海面縫隙修補,因此對幀率有一定影響。而本文實現的改進的離散格網法。由於採用GPU技術進行縫隙修補,在效率上較現有的離散格網法有很大提高,且與投影網格法相比幀率差距能夠保持在6幀/秒以內。

圖 15可以看出本文方法較其他兩種方法載入速度更快。而現有的離散格網法由於需要實時限制相鄰格網的級差以減少縫隙修補的複雜性,因此隨著格網數量的增加,載入時間呈指數上升的趨勢。而投影網格法儘管不需要重新構建新的格網,但其海陸分界方式存在效率問題,最終影響整體的載入速度。相比之下,本文方法採用瓦片四叉樹的方式組織管理格網,同級格網之間沒有約束、相互獨立,因此可以充分利用多線程進行快速地并行載入,90萬個網格頂點,開啟2個線程的情況下,基本能在5 s左右完成載入。

為了驗證本文海面可視化方法具有能夠快速反映實時風場的能力,對3種方法在風場條件發生變化時,海浪效果的更新時間進行了比較。如圖 16所示。

圖 16 3種方法更新時間比較Fig. 16 Update time comparison

圖 16可以看出,由於本文方法在風場條件發生變化時,只需修改位移紋理即可對整個海浪效果進行更新,因此更新時間能夠穩定在0.5 s左右,且該部分計算可在後台線程中進行,不會影響當前正在繪製的海浪。而其他兩種方法,海浪的更新相當於重新載入一次海面格網,從更新時間及視覺體驗上都無法滿足實時動態風場更新的需要。

5 結語

針對現有的基於全球離散格網的海面動態可視化方法存在繪製效率差,載入速度慢,需要進行格網縫隙修補等問題,本文提出了一種優化方法,主要包含3部分內容:首先,為了能夠對全球海面網格進行有效組織和管理,同時充分利用GPU并行計算能力,本文在傳統等經緯度離散格網基礎上進行擴展,設計了一種面向GPU繪製的全球多尺度海面網格模型;其次,考慮到風場驅動下的海浪起伏效果更符合地理信息模擬應用的需要,本文在多尺度海面網格模型的基礎上提出了一種支持風場條件實時更新的海浪動態繪製方法;同時,由於現有的海面格網縫隙修補演算法會嚴重影響海面的繪製及載入效率,本文針對海面格網特點,提出了一種基於GPU的高效海面縫隙修補演算法。最後通過試驗對本文方法進行驗證。試驗結果表明,本文方法繪製效率穩定、載入速度快,且具有反映不同海域的差異性特徵、實現精細的海陸分界及支持風場條件動態更新等功能,因此更符合虛擬地球的應用需要。下一步將討論全球海洋表面如何與艦船航行等進行實時交互動態繪製,為面向全球的海洋具體應用奠定基礎。

【引文格式】黃吳蒙,陳靜。 一種面向虛擬地球的海面動態可視化優化方法[J]. 測繪學報,2016,45(S1):135-143. DOI: 10.11947/j.AGCS.2016.F017

權威 | 專業 | 學術 | 前沿

微信投稿郵箱 | [email protected]

進群請備註:姓名+單位+稿件編號



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦