楊晨曦 王平 溫玉波馬華棟
(1.國家海洋局南海信息中心 廣州 510000;2.自然資源部海洋環(huán)境探測技術與應用重點實驗室 廣州 510000)
海島數(shù)據(jù)三維可視化是指利用相關虛擬現(xiàn)實、3S(GPS、RS、GIS)和WebGIS等地理信息技術以及OpenGL和WebGL等計算機圖形技術,對海島數(shù)據(jù)進行三維展示,主要應用于海島周邊風場、流場、浪場和溫度場等環(huán)境場的三維實時動態(tài)可視化。
目前國內外對海洋環(huán)境場三維可視化平臺的研究主要分為2 個類型:①基于單機或C/S架構的三維可視化平臺(如EV-Globe、OSG 和Google Ocean),其存在環(huán)境部署復雜、更新維護較難且定制平臺開發(fā)周期較長等弊端;②基于B/S架構的三維可視化平臺(如Super Map、Three.js和Cesium),其避免單機或C/S架構存在的問題,但存在渲染速度慢、人-機交互不流暢和可視化效果較差等弊端。
海洋環(huán)境場的可視化方法主要包括對標量場和矢量場的可視化,由于矢量場能較好地展示環(huán)境場的變化情況,矢量場可視化方法逐漸成為熱門研究方向。矢量場可視化方法主要包括3 個類型。①基于幾何形狀的可視化方法,如點圖標法[1]、矢量線和矢量面法[2-3]以及粒子流法[4-5]。李志煒等[6]構建海洋時空過程對象并進行紋理填充,以點、線、面、體的形式實現(xiàn)對海洋環(huán)境場的矢量化表達;樊宇等[7]基于OSG 三維可視化平臺,利用點圖標映射法實現(xiàn)海洋風場的動態(tài)可視化;廖明[8]基于矢量場和WebGL 技術構建多尺度動態(tài)風矢量場,并以粒子流的方式實現(xiàn)鄱陽湖風場的三維動態(tài)可視化。點圖標法以及矢量線和矢量面法等方法在表達環(huán)境場時欠缺連續(xù)性和特征性,粒子流法在表達大范圍和高精度環(huán)境場時存在計算量大和渲染速度慢等問題。②基于紋理的可視化方法,如點噪聲法[9]、線積分卷積法(LIC)[10]和基于圖像的流場可視化[11]。其中,LIC 的應用最為廣泛,并衍生Fast LIC[12]、Volume LIC[13]、UFLIC[14]和OLIC[15]等眾多優(yōu)化算法。馬穎異等[16]基于LIC 和OLIC 算法,同時引入人類視覺感知理論,對模擬旋風數(shù)據(jù)進行可視化。該方法存在計算量巨大和計算效率較低等問題,難以滿足實時渲染的需求。③基于特征的可視化方法,即主要基于矢量場中的現(xiàn)象和變化等有意義的特征形狀進行可視化。沈恩亞等[17]提出交互式模糊特征提取算法,實現(xiàn)對流程特征的三維可視化。該方法過于依賴環(huán)境場特征信息,在環(huán)境場特征信息不明顯時,可視化效果較差。標量場可視化方法主要包括顏色映射法、等值線法、等值面法和體繪制法:徐勝華等[18]構建點和面的三維動態(tài)模型,實現(xiàn)海洋環(huán)境標量場的三維可視化;董文等[19]采用體繪制法構建變高長方體模型,并采用等值線和顏色映射等方法,實現(xiàn)海洋環(huán)境標量場的三維可視化。
近年來,隨著硬件設施和計算機圖形學的快速發(fā)展,B/S架構下基于WebGL的可視化技術快速發(fā)展,基于WebGL對海洋環(huán)境場進行三維可視化逐漸成為海洋數(shù)據(jù)可視化的研究熱點。本研究通過對海島環(huán)境場數(shù)據(jù)的處理分析,針對B/S架構平臺存在的弊端,構建顧及視角感知的多尺度變換模型和海島環(huán)境場可視化模型,同時利用GPU 快速計算和渲染技術,實現(xiàn)B/S架構下海島環(huán)境場的實時渲染展示。
本研究針對海島環(huán)境場中的矢量場和標量場提出高效的計算渲染模型。在矢量場表達中,構建顧及視角感知的多尺度變換模型,并采用二階歐拉積分算法計算粒子運動對象,以粒子流的形式存儲矢量場的運動特征;在標量場表達中,采用雙線性插值算法生成標量場網格數(shù)據(jù);最終基于GPU 的三維渲染技術,實現(xiàn)海島環(huán)境場的三維可視化(圖1)。
圖1 海島環(huán)境場三維可視化的流程
粒子追蹤屬于流體動力學范疇,通過當前粒子的位置和速度函數(shù),采用積分方法計算粒子軌跡,計算公式為:
式中:y(t+Δt)為粒子在t+Δt時刻的位置;v[p(t),t]為速度函數(shù)。
為使流線追蹤更加平滑,通過二階歐拉數(shù)值積分法對粒子進行追蹤,從而得到粒子的運動模型,計算公式為:
在獲取粒子的運動模型后,須對粒子的生命周期進行控制。本研究通過網格控制粒子的出生和消亡,在可視化時控制粒子的數(shù)量和密度(圖2)。
圖2 粒子運動控制的流程
采用面繪制法對標量場進行可視化時,因分辨率較低,會出現(xiàn)顆粒感和像素感。為解決該問題,使可視化效果更加平滑,本研究采用雙線性插值算法處理標量場數(shù)據(jù),基本原理為根據(jù)當前網格周圍的4 個值進行插值分析,進而得到當前網格的值(圖3)。
圖3 雙線性插值
式中:f(N)函數(shù)為第N個網格點的值;x和y為當前網格周圍網格的坐標值。
基于以上模型進行面繪制時須分級設色,在分級設色中為避免異常值導致分級不均勻,采用正態(tài)分布中距平均值3個標準差的值作為最大值和最小值參與分級計算,最終實現(xiàn)渲染顏色的平滑過渡。
對于網頁端的渲染而言,屏幕空間是固定的,不會隨視角的改變而改變。然而視角的改變會改變地理空間,可視化的細節(jié)層次在不同地理空間下有所不同?;谠撛?本研究構建顧及視角感知的多尺度變換模型,通過用戶視角的改變獲取當前視角特征值,并基于視角特征值生成表達對象的細節(jié)層次。對于矢量場而言,粒子數(shù)量即細節(jié)層次。
當視角足夠高或足夠低時,人眼感知都將弱化。因此,本研究設定視角高度空間,當超過視角高度空間時,粒子數(shù)量將不再改變?;谝陨蠘颖緮?shù)據(jù),采用多項式擬合算法確定視角高度(h)與粒子數(shù)量(Particlesnums)之間的關系,計算公式為:
視角高度與粒子數(shù)量的關系如表1 和圖4所示。
表1 視角高度與粒子數(shù)量的關系
圖4 視角高度與粒子數(shù)量的關系
傳統(tǒng)的基于CPU 進行環(huán)境場渲染的計算速度過慢。本研究基于GPU 技術,實現(xiàn)對矢量場的快速計算和實時渲染;對于標量場的渲染,主要利用著色器原理,實現(xiàn)瀏覽器端標量場的大范圍、多時相和海量數(shù)據(jù)的實時高效動態(tài)可視化(圖5)。
圖5 標量場渲染的流程
對于矢量場而言,首先重新組織矢量場數(shù)據(jù),并利用紋理的RGBA 顏色通道存儲原始數(shù)據(jù)和粒子位置信息;然后利用GPU 并行計算,將粒子追蹤和粒子渲染的過程由CPU 轉到GPU 執(zhí)行,極大地提升數(shù)據(jù)計算速度(圖6)。
圖6 矢量場渲染的流程
應用上述方法,以海島和全球海洋2種尺度為研究區(qū)域,基于Java Script、WebGL、Open GL ES和.Net等技術研發(fā)三維可視化系統(tǒng)平臺。海洋環(huán)境場數(shù)據(jù)來自歐洲中期天氣預報中心,底層三維平臺為Cesium。選取某時刻的海洋環(huán)境場數(shù)據(jù)并對數(shù)據(jù)加密處理,生成基本紋理圖。
采用矢量場可視化方法對海島環(huán)境場和全球海洋環(huán)境場進行三維動態(tài)可視化,在海島小范圍和全球海洋大范圍2種尺度下進行縮放、旋轉和傾斜時,粒子數(shù)量和表達層次有明顯差異。在大尺度下能明顯表現(xiàn)矢量場的具體特征,而在小尺度下則能表現(xiàn)更多的細節(jié)信息。
為驗證方法的性能,分別驗證基于CPU 和基于GPU 三維渲染2種模式的渲染效率。根據(jù)對比結果,GPU 三維渲染模式的幀率最高可達60 FPS,60萬粒子數(shù)以下的幀率最低也可達31 FPS,與CPU 模式相比性能提升1.6~5.0倍,基本滿足實時渲染的需求。
與采用傳統(tǒng)方式的標量場可視化效果相比,基于本方法的標量場可視化能很好地克服顆粒感和像素感的問題,能對標量場進行平滑展示,同時能很好地突出海洋環(huán)境場與陸地的邊界,也能明顯展示海洋現(xiàn)象。
本研究以海島環(huán)境場為研究對象,從標量場可視化、矢量場可視化、多尺度變換和GPU 快速渲染4個方面入手,提出B/S架構下海島環(huán)境場三維可視化的新方法,并將其延伸至全球海洋環(huán)境場的三維可視化。與傳統(tǒng)方法相比,本方法在計算速度、渲染效率和渲染效果等方面均有較大提升,在高密度粒子下也能實時高效渲染海洋環(huán)境場信息,可為網頁端海島環(huán)境場的仿真和三維動態(tài)可視化等研究領域提供新的思路,同時可為海洋災害預警和航線規(guī)劃等業(yè)務提供科學依據(jù)。
本研究主要關注海島環(huán)境場的三維可視化并取得較好效果,后續(xù)將繼續(xù)研究海島地形、海底地形以及水上/水下一體化等的三維可視化,并通過與海洋環(huán)境場的結合,更加真實和直觀地展示海島和海洋信息,為開展相關業(yè)務提供數(shù)據(jù)支持。