国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于XNA的海洋環(huán)境三維動(dòng)態(tài)可視化

2014-12-14 08:51:06史長(zhǎng)安史紹雨
關(guān)鍵詞:貝塞爾洋流漫游

史長(zhǎng)安,艾 波,付 帥,史紹雨

(1.山東科技大學(xué) 海島(礁)測(cè)繪技術(shù)國(guó)家測(cè)繪局重點(diǎn)實(shí)驗(yàn)室 青島市 266590;2.國(guó)家測(cè)繪局衛(wèi)星測(cè)繪應(yīng)用中心 北京市 100039)

海洋環(huán)境的三維動(dòng)態(tài)可視化一直是海洋學(xué)和計(jì)算機(jī)圖形學(xué)領(lǐng)域的研究熱點(diǎn),其中的關(guān)鍵技術(shù)問(wèn)題是仿真動(dòng)態(tài)海面的生成,重點(diǎn)需要考慮光照和大氣環(huán)境對(duì)海表面的影響,包括光線在海表面的反射與折射等[1]。Fournier 和Reeves[2]基于深海小振幅建立了一個(gè)簡(jiǎn)單的海浪模型,Mastern 等[3]提出了一種利用傅里葉變換來(lái)合成一塊水波區(qū)域的方法。徐利明等[4]對(duì)開闊海面深水域由風(fēng)引起的海浪進(jìn)行定量分析,利用海浪頻譜與方向譜進(jìn)行海浪模擬,基于OpenGL 實(shí)現(xiàn)了對(duì)海洋場(chǎng)景的實(shí)時(shí)顯示。這些研究方法雖然可以達(dá)到較好的可視化效果,但采用的模擬方法比較復(fù)雜,算法運(yùn)算量較大,在實(shí)際應(yīng)用中對(duì)系統(tǒng)圖形硬件要求較高。此外,這些研究在海洋可視化中缺少對(duì)流場(chǎng)等海洋要素的動(dòng)態(tài)表達(dá)。

針對(duì)上述問(wèn)題,基于微軟的新型游戲開發(fā)平臺(tái)XNA Studio,進(jìn)行三維海洋環(huán)境動(dòng)態(tài)可視化方法研究。XNA Studio 是一個(gè)高層次的三維視景開發(fā)軟件環(huán)境,它提供了便捷的工具和圖形API 以實(shí)現(xiàn)復(fù)雜的底層圖形操作,從而大幅減少了源代碼的開發(fā)量,顯著提高了開發(fā)效率。這里的可視化方法中主要包括動(dòng)態(tài)海面和洋流矢量場(chǎng)動(dòng)態(tài)可視化,實(shí)現(xiàn)方法相對(duì)簡(jiǎn)單,但可以達(dá)到良好的可視化效果,對(duì)系統(tǒng)硬件要求不高。其中,動(dòng)態(tài)海面可以反映出海面的高低起伏以及海面的反射、折射情況;洋流矢量場(chǎng)動(dòng)態(tài)可視化可以表現(xiàn)出洋流的流速、流向。此外,為了更全面地觀察海洋環(huán)境,論文提出了AUV 場(chǎng)景漫游方法,解決了場(chǎng)景漫游中的關(guān)鍵問(wèn)題。

1 動(dòng)態(tài)海面可視化

要表現(xiàn)具有真實(shí)感的海面,不僅要有海面高低起伏的形態(tài),還需要與實(shí)際相符的海面顏色。海面類似一面鏡子,可以反射周圍的景象,另外,海水是部分透明的,透過(guò)海面,可以看到海底下面的景色。因此,海面最終的顏色是由折射顏色和反射顏色疊加產(chǎn)生的。

1.1 折射貼圖

海面的折射顏色從一張紋理圖片中取得,這張紋理圖片的顏色由海面之下的景物決定,需要去除海面之上景物顏色的影響,論文中通過(guò)設(shè)置裁剪平面來(lái)實(shí)現(xiàn)。具體實(shí)現(xiàn)步驟如下:

1)將平面系數(shù)轉(zhuǎn)換為逆相機(jī)矩陣空間。所有裁剪操作都是在硬件中進(jìn)行,相對(duì)于平面的頂點(diǎn)已經(jīng)在相機(jī)空間坐標(biāo)中。在根據(jù)系數(shù)創(chuàng)建平面前,需要將平面系數(shù)轉(zhuǎn)換為逆相機(jī)矩陣空間,這個(gè)相機(jī)矩陣是世界矩陣、視距矩陣和投影矩陣的組合。

2)確定平面的法線方向和距離。創(chuàng)建一個(gè)平面,需要知道法線方向和距離。法線表示平面的朝向,距離表示到(0,0,0)點(diǎn)的距離。由法線和距離可以唯一確定一個(gè)平面。

3)創(chuàng)建裁剪面。首先將法線歸一化,然后創(chuàng)建一個(gè)平面系數(shù),XNA 就可以根據(jù)這個(gè)系數(shù)創(chuàng)建一個(gè)裁剪平面。

4)激活平面。激活平面后,將自定義渲染目標(biāo)作為當(dāng)前渲染目標(biāo)并清除它。然后,將地形添加到渲染目標(biāo)中(只有海面之下的部分需要繪制)。

5)關(guān)閉裁剪平面,將渲染目標(biāo)內(nèi)容繪制到折射紋理圖片。

1.2 反射貼圖

在將水面反射景物繪制到紋理的過(guò)程中,需要重新定位相機(jī),相機(jī)的位置是這樣確定的,X和Z 坐標(biāo)相同,而Y 坐標(biāo)關(guān)于水面對(duì)稱,如圖1所示:

圖1 水面鏡像

從圖中可以看出,A 點(diǎn)代表真實(shí)的視點(diǎn)位置,B 點(diǎn)是A 點(diǎn)關(guān)于水面的對(duì)稱點(diǎn)。這表示從相機(jī)A 看到的顏色與從相機(jī)B 看到的顏色應(yīng)該是相同的[5]。實(shí)驗(yàn)中需要將相機(jī)B 看到的場(chǎng)景繪制到一張紋理中。另外,如上圖所示,海面之下的地形遮擋了部分相機(jī)視線,可以用折射貼圖裁剪平面的方法解決這個(gè)問(wèn)題。繪制反射貼圖的步驟如下:

1)計(jì)算相機(jī)矩陣和視點(diǎn)目標(biāo)的位置。相機(jī)B 的x 和z 坐標(biāo)與相機(jī)A 的x 和z 坐標(biāo)相同,相機(jī)A 和水面間的y 坐標(biāo)和相機(jī)B 與水面間的y 坐標(biāo)相同。據(jù)此,可以求得反射相機(jī)B 的位置。同樣方法,可以求得相機(jī)B 的觀察目標(biāo)位置。

2)定義相機(jī)的向上向量。叉乘相機(jī)B 的向前向量和向右向量,獲取相機(jī)B 的向上向量。

3)利用相機(jī)B 的位置、觀察目標(biāo)和向上向量定義視圖矩陣,繪制反射貼圖。

1.3 波浪效果

在得到了折射貼圖和反射貼圖后,要使海面看起來(lái)真實(shí),還需要高低起伏的海面??梢杂谜也▉?lái)產(chǎn)生高低起伏的海面,但單純的一個(gè)正弦波會(huì)讓海面看起來(lái)太過(guò)于理想化,缺乏真實(shí)感,因?yàn)槊總€(gè)波形都是一樣的[6-7]。在考慮了GPU 的并行能力后,決定用4 個(gè)正弦波疊加來(lái)產(chǎn)生波浪。對(duì)每個(gè)正弦波設(shè)置不同的波長(zhǎng)、波速和振幅,疊加后會(huì)產(chǎn)生比較真實(shí)的海面。

論文中實(shí)現(xiàn)波浪效果的步驟如下:

1)使用頂點(diǎn)位置作為正弦函數(shù)的一個(gè)參數(shù),這個(gè)參數(shù)與波的傳播方向相關(guān)。當(dāng)這個(gè)參數(shù)增加時(shí),會(huì)形成在-1 到1 之間的波形。

2)在參數(shù)中添加時(shí)間,使水波移動(dòng)。將波速變量乘以當(dāng)前時(shí)間,定義每列波的波速,讓某些波比其它波運(yùn)動(dòng)的更快或是更慢。

3)為了使海面更真實(shí),需要在水面上添加凹凸映射,在大的海浪上再增加一些小的逐像素的漣漪。然后使用菲涅耳項(xiàng)調(diào)整最后結(jié)果,使像素著色器在深藍(lán)色和反射顏色之間進(jìn)行插值。

本文實(shí)現(xiàn)的海面仿真可視化最終效果如圖2所示:

2 流場(chǎng)動(dòng)態(tài)可視化

為了表現(xiàn)洋流矢量場(chǎng)動(dòng)態(tài)變化,通過(guò)運(yùn)動(dòng)箭頭表現(xiàn)洋流的方向和速度。在加載了洋流速度、

圖2 動(dòng)態(tài)海面可視化

方向數(shù)據(jù)后,還需要進(jìn)行一系列的轉(zhuǎn)化與計(jì)算,才能正確的顯示洋流矢量場(chǎng)。

2.1 流場(chǎng)方向表達(dá)

在三維坐標(biāo)系下,流場(chǎng)箭頭模型在XZ 平面運(yùn)動(dòng),要表達(dá)流場(chǎng)方向需要對(duì)箭頭模型進(jìn)行三維圖形變換,設(shè)流場(chǎng)角度為α,箭頭模型坐標(biāo)為P(x,y),模型縮放比例為Scale,則圖形變換矩陣可由如下公式計(jì)算得到:

2.2 流場(chǎng)速度表達(dá)

洋流是按一定速度運(yùn)動(dòng)的,要真實(shí)的表現(xiàn)流場(chǎng),需要真實(shí)的表現(xiàn)出洋流速度的變化。通過(guò)箭頭模型顏色和移動(dòng)步長(zhǎng)表現(xiàn)洋流速度。在加載了洋流速度數(shù)據(jù)和方向數(shù)據(jù)之后,將速度分成10個(gè)等級(jí),每個(gè)等級(jí)用不同顏色的箭頭模型表示。箭頭的移動(dòng)位置由速度和方向共同決定。要確定模型下一時(shí)刻的位置,需計(jì)算模型在X 方向和Z方向的改變量,如圖3 所示。

圖3 運(yùn)動(dòng)箭頭可視化

實(shí)現(xiàn)過(guò)程分為以下3 步:

1)通過(guò)洋流方向求出單位向量在X 軸、Z軸的改變量,即:X′=sin α;Z′=cos α。

2)通過(guò)洋流的運(yùn)動(dòng)速度得到洋流在X 軸、Z軸的改變量,即:dX=X′v;dZ=Y′v。

3)通過(guò)X、Z 軸的改變量,求得洋流新位置的x、z 坐標(biāo):x=x1+dX=x1+X′v;z=z1+dZ=y1+Z′v,其中x1、z1 是洋流上一時(shí)刻的位置。流場(chǎng)動(dòng)態(tài)可視化的效果如圖4 所示:

圖4 流場(chǎng)動(dòng)態(tài)可視化

3 AUV 水下漫游

在三維海洋環(huán)境可視化中,為了更好地查看場(chǎng)景中的要素,觀察要素的變化,需要根據(jù)用戶設(shè)定的路線,對(duì)場(chǎng)景進(jìn)行漫游。AUV 場(chǎng)景漫游首先需要設(shè)定漫游路線,設(shè)定路線時(shí)通過(guò)在場(chǎng)景中點(diǎn)擊添加關(guān)鍵節(jié)點(diǎn),設(shè)定路線完成后,通過(guò)貝塞爾曲線平緩漫游路徑,然后開始漫游,漫游分為艇內(nèi)漫游和艇外漫游,在漫游過(guò)程中需實(shí)時(shí)進(jìn)行碰撞檢測(cè),調(diào)整AUV 的姿態(tài),直至整個(gè)漫游路徑的完成,工作流程如圖5 所示:

要順利完成場(chǎng)景漫游,需要解決的關(guān)鍵問(wèn)題是曲線平滑。在設(shè)定漫游路徑完成后,如果AUV按設(shè)定的路線行駛,在曲線拐彎處,會(huì)出現(xiàn)急速轉(zhuǎn)彎的現(xiàn)象,影響觀察效果。為了解決這個(gè)問(wèn)題,用貝塞爾曲線對(duì)路徑進(jìn)行平滑,達(dá)到了理想的漫游效果。

圖5 AUV 場(chǎng)景漫游流程圖

貝塞爾曲線最初由Paul de Casteljau 于1959年運(yùn)用de Casteljau 算法開發(fā),以穩(wěn)定數(shù)值的方法求出貝塞爾曲線。論文采用二次貝塞爾曲線對(duì)路徑進(jìn)行平滑。二次方貝塞爾曲線的路徑由給定點(diǎn)P0、P1、P2的函數(shù)B(t)追蹤:

為構(gòu)建二次貝塞爾曲線,可以中介點(diǎn)Q0和Q1作為由0 至1 的t:

1)由P0至P1的連續(xù)點(diǎn)Q0,描述一條線性貝塞爾曲線。

2)由P1至P2的連續(xù)點(diǎn)Q1,描述一條線性貝塞爾曲線。

3)由Q0至Q1的連續(xù)點(diǎn)B(t),描述一條二次貝塞爾曲線。

二次貝塞爾曲線的結(jié)構(gòu)如圖6 所示:

圖6 二次貝塞爾曲線結(jié)構(gòu)圖

論文對(duì)路徑進(jìn)行平滑的效果如圖7 所示:

4 結(jié) 語(yǔ)

基于微軟的三維圖形開發(fā)平臺(tái)XNA Studio,進(jìn)行海洋環(huán)境動(dòng)態(tài)可視化方法研究,實(shí)現(xiàn)了動(dòng)態(tài)海面仿真和流場(chǎng)動(dòng)態(tài)可視化,并提出了基于貝塞爾曲線的AUV 水下漫游路線平滑方法,解決了場(chǎng)景漫游中的關(guān)鍵問(wèn)題。其中,動(dòng)態(tài)海面可以反映出海面的高低起伏以及海面的反射、折射情況;洋流矢量場(chǎng)動(dòng)態(tài)可視化可以表現(xiàn)出洋流的流速、流向。本方法實(shí)現(xiàn)相對(duì)簡(jiǎn)單,但可以達(dá)到良好的可視化效果,對(duì)系統(tǒng)圖形硬件要求不高,適用性較好。

圖7 貝塞爾曲線平滑

[1] 明德烈,徐秋程,李向春.面向全球應(yīng)用的海洋仿真系統(tǒng)的實(shí)現(xiàn)研究[J].系統(tǒng)仿真學(xué)報(bào),2012,24(8):1741-1745.

[2] Alain Fournier,William T.Reeves.A Simple Model of Ocean Waves[J].Computer Graphics,1986,20(4):75-84.

[3] Gary A Mastin,Peter A Watterger,John F Mareda.Fourier Synthesis of Ocean Scenes [R].IEEE CG&A.USA:IEEE,1987:16-23.

[4] 徐利明,王瑞臣,馬暄.基于海浪譜的實(shí)時(shí)海洋場(chǎng)景仿真[J].計(jì)算機(jī)仿真,2013,30(6):409-413.

[5] 印桂生,王海玲,張菁,等.分形算法調(diào)和的海浪模擬方法[J].哈爾濱工程大學(xué)學(xué)報(bào),2011,32(17):1496-1500.

[6] 俞聿修.隨機(jī)波浪及其工程應(yīng)用[M].第3 版.大連:大連理工大學(xué)出版社,2003:131-137.

[7] Henry D.On Gerstners water wave[J].Journal of Non-linear Mathematical Physics,2008,15(2):87-95.

[8] 陳小龍.AUV 水下地形匹配輔助導(dǎo)航技術(shù)研究[D].哈爾濱:哈爾濱工程大學(xué)(博士學(xué)位論文),2013:25-27.

猜你喜歡
貝塞爾洋流漫游
“生生不息”的海洋循環(huán)運(yùn)動(dòng)——洋流
看星星的人:貝塞爾
少兒科技(2021年3期)2021-01-20 13:18:34
你認(rèn)識(shí)洋流嗎
跟蹤導(dǎo)練(五)6
基于虛宗量貝塞爾函數(shù)的螺旋帶色散模型
霹靂漫游堂
一類洋流運(yùn)動(dòng)方程的顯示行波解
NASA漫游記
一種脈沖貝塞爾波的構(gòu)造及其非線性聲場(chǎng)的仿真
高階貝塞爾光束的Z掃描理論
金山区| 弋阳县| 北川| 南城县| 牡丹江市| 连云港市| 军事| 大渡口区| 当阳市| 临汾市| 黄梅县| 佛教| 寿阳县| 滕州市| 禄丰县| 嘉荫县| 云南省| 平顺县| 垣曲县| 甘德县| 华亭县| 岳普湖县| 西城区| 高阳县| 博客| 长顺县| 顺昌县| 洪洞县| 边坝县| 金门县| 玉门市| 闵行区| 四川省| 鸡西市| 新郑市| 杂多县| 扎赉特旗| 光山县| 平远县| 资阳市| 榆中县|