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