付 帥,艾 波,柳 誠
(1.嘉興市規(guī)劃管理局嘉興市314050;2.山東科技大學測繪科學與工程學院青島市266590)
海洋地理信息系統(tǒng)中動態(tài)海面仿真方法研究
付 帥1,艾 波2,柳 誠2
(1.嘉興市規(guī)劃管理局嘉興市314050;2.山東科技大學測繪科學與工程學院青島市266590)
海洋地理信息系統(tǒng)(MGIS)中加入動態(tài)水面效果,可以有效地提升海洋環(huán)境仿真的真實感。本文從水波模型的構建出發(fā),介紹了利用正弦波動方程模擬海面的方法;針對動態(tài)構建水面網格時高計算性能的需求,設計了基于GPU并行計算的架構;最后利用程序開發(fā)實現(xiàn)本文的設計思路,經過實驗分析表明,該方法能夠有效地模擬三維地理環(huán)境中動態(tài)海面的效果。
海洋地理信息系統(tǒng);動態(tài)海面;水面網格;GPU并行計算
動態(tài)海面效果仿真是借助幾何模型或光照模型等,用可視化的方法展現(xiàn)水面實時的波動效果。海洋地理信息系統(tǒng)中動態(tài)海面效果的模擬,實現(xiàn)與真實三維地理數(shù)據相融合,以其逼真的視覺體驗和友好的動態(tài)交互特性,為觀察者提供了一個具有沉浸感的客觀世界。
隨著計算機圖形學的發(fā)展,動態(tài)海面效果的模擬逐漸被應用到虛擬環(huán)境的表達,國內外學者做了深入的探索。Finch[1]基于幾何模型的思路,提出了利用正余弦函數(shù)模擬水面波形的方法,構造了具有真實感的動態(tài)水面效果;莊甘霖[2]等針對常見三維場景中水面特效真實感與實時性較難平衡的現(xiàn)狀,提出了一種基于Gerstner波模型的水面特效模擬方法,優(yōu)化了仿真系統(tǒng)的渲染效率。余偉[3]等利用實測河道水位線數(shù)據和DEM數(shù)據進行河流邊界線搜索及河面自動建模,構建多層水面疊加模型,并引入GPU并行計算技術。楊暢[4]等利用Perlin噪聲方法生成曲面,疊加生成分形曲面來模擬隨機無方向性動態(tài)水面,并基于WebGL技術實現(xiàn)了網絡環(huán)境中的動態(tài)水面可視化。
本文采用物理模型的方法構建水面網格[5],結合真實的DEM數(shù)據,設計了GPU并行計算的框架,解決了正弦波動方程計算效率的問題。最后采用Directx圖形庫及高級shader語言HLSL底層開發(fā)實現(xiàn)了本文的設計思路[6-7],較好地模擬了海面的動態(tài)效果。
幾何模型通常采用網格來顯示連續(xù)的水面,動態(tài)海面效果可以看作實時構建水面網格的過程,這就需要計算網格上每個頂點隨著時間的位置變化。通常是借助正弦波動方程來描述平面位置為(x,y)的頂點在t時刻的垂直距離h,其公式為
其中,w是頻率,A是波的振幅,D(x,y)為垂直于波振面的水平向量,φ為常數(shù)。圖1為正弦波動方程的波形圖及采用該正弦波動方程的連續(xù)水面網格。
圖1 正弦波動方程的波形圖及采用該方程的連續(xù)水面網格
由圖1所示,直接疊加正弦波動方程產生的波浪非常平滑,每個連續(xù)的波峰與波谷間的過渡都是一致的,而真實波浪的波峰比較尖,波谷比較寬。這就需要對原來的正弦波動方程予以改造,加快波峰到水平段的下降速度,減緩水平段到波谷段的下降速度。根據指數(shù)函數(shù)y=xk(k>1)在(0,1)在(0,1)區(qū)間內導數(shù)的變化特征,對公式(1)進行修改,修改后的波函數(shù)為:
圖2為公式(2)常數(shù)取特征值后的波形圖及常數(shù)k設置為2.5時正弦波動方程的連續(xù)水面網格。與圖1相比,圖2中水面網格更加真實,這也證明了公式(2)的可行性。
圖2 修改后正弦波動方程的波形圖及采用該方程的連續(xù)水面網格
為了讓水面動態(tài)的變化,這就需要實時的更新水面網格,然而水面網格數(shù)量多且水波構建模型計算復雜等問題嚴重影響了更新效率。為了提高仿真系統(tǒng)的效率,本文設計了基于GPU并行計算的架構[8-9]。圖3為架構圖,分為數(shù)據準備階段和并行運算階段兩部分。
2.1數(shù)據準備
數(shù)據準備是構建初始水面網格的過程。首先根據區(qū)域的平面范圍,構建規(guī)則的區(qū)域網格Mesh,如圖4。然后利用相應區(qū)域的數(shù)字高程數(shù)據(DEM)對區(qū)域網格Mesh進行裁剪。裁剪的原則如下:若點的高程大于等于0,則判定為陸地中的點,于是去除區(qū)域網格Mesh上相應位置的頂點;若點的高程小于0,則判定為海水區(qū)域中的點,保留區(qū)域網格Mesh上相應位置的頂點。依次遍歷區(qū)域內所有的頂點,最終獲得水面網格Mesh,如圖5。
圖3 基于GPU的粒子系統(tǒng)架構
圖4 區(qū)域網格Mesh
圖5 裁剪后的網格Mesh
2.2并行計算
由于本文采用的水波構建模型是針對每一個水面網格頂點的,并不需要考慮與臨近頂點之間的關系,非常適合GPU并行運算的要求,且最終的計算結果是用于圖形的可視化,于是本文采用Directx圖形庫的API實現(xiàn)GPU并行計算。
數(shù)據準備階段完成后,CPU調用繪制命令,將水面網格Mesh的頂點信息傳輸?shù)巾旤c著色器中。通過高級渲染語言HLSL對頂點著色器進行編程,將水波構建模型應用到每個頂點高程信息的計算中,最終由多個流處理器并行的執(zhí)行頂點著色器中的程序設計,實現(xiàn)水面網格Mesh的實時更新。
基于GPU并行計算架構設計,本文實現(xiàn)了海洋地理信息系統(tǒng)中動態(tài)海面效果的模擬,圖6為系統(tǒng)的動態(tài)海面效果截圖。實驗機器采用window7操作系統(tǒng),主要的硬件設備包括Pentium Dual-Core CPU T4300 2.10 GHz、AMD Radeon HD 4 570 m GPU和2 G RAM。
圖6 動態(tài)海面效果
為了驗證GPU并行計算架構的有效性,本文選取不同精細程度的水面網格,統(tǒng)計了仿真系統(tǒng)的幀率,形成渲染效率表1。由測試結果可知,即使水面網格精度較高時也可以達到73幀,遠超仿真系統(tǒng)流暢運行的要求。
表1 渲染效率
本文采用正弦波動方程動態(tài)的構建水面網格,相比于動態(tài)切換貼圖等水面模擬方法,可以真實地反映水面的波動效果,提升三維地理環(huán)境的真實感。為了解決水波構建模型計算量大的問題,設計了基于GPU并行計算的架構,并通過程序設計予以實現(xiàn)。
目前,動態(tài)海面效果的模擬還停留在增加海洋地理信息系統(tǒng)真實感的階段,如何與淹沒分析、潰壩分析等空間分析理論相結合,實現(xiàn)空間分析過程數(shù)據及結果數(shù)據的科學可視化,還需要進一步的探索。
[1]Randima Fernando.GPU Gems Programming Techniques,Tips,and Tricks for Real-Time Graphics[M].New Jersey:Addison-Wesley,2004.
[2]莊甘霖,陳秀宏.常見三維場景中水面特效的模擬[J].計算機工程與科學,2014,36(4):746-750.
[3]余偉,王偉,蒲慧龍,等.河道流動水體三維仿真方法研究[J].測繪通報,2015(9):39-43.
[4]楊暢,胡北.基于WebGL的動態(tài)水面仿真方法[J].地理空間信息,2015(5):53-55.
[5]皮學賢,楊旭東,李思昆,等.近岸水域的波浪與水面仿真[J].計算機學報,2007,30(2):324-329.
[6]彭國倫.3D繪圖程序設計使用DIRECT3D 10/9和OPENGL 2.0(附光盤)[M].科學出版社,2009.
[7]李健波,丁海燕.DIRECTX3DHLSL高級實例精講[M].清華大學出版社,2013.
[8]譚小輝,萬旺根,余小清,等.一種基于GPU的大規(guī)模水面實時模擬方法[J].計算機仿真,2009,26(9):211-214.
[9]Kruger J,Kipfer P,Kondratieva P,et al.A Particle System for Interactive Visualization of 3D Flows[J].IEEE Transactions on Visualization&Computer Graphics,2005,11(6):744-756.
2016-11-29
國家自然科學基金資助項目(41401529,41271394);測繪公益性行業(yè)科研專項經費資助項目(201512034)。