• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      史長安,艾 波,付 帥,史紹雨

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

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

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

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

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

      1.1 折射貼圖

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

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

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

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

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

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

      1.2 反射貼圖

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

      圖1 水面鏡像

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

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

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

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

      1.3 波浪效果

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

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

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

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

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

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

      2 流場動態(tài)可視化

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

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

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

      2.1 流場方向表達

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

      2.2 流場速度表達

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

      圖3 運動箭頭可視化

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

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

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

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

      圖4 流場動態(tài)可視化

      3 AUV 水下漫游

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

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

      圖5 AUV 場景漫游流程圖

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

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

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

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

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

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

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

      論文對路徑進行平滑的效果如圖7 所示:

      4 結(jié) 語

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

      圖7 貝塞爾曲線平滑

      [1] 明德烈,徐秋程,李向春.面向全球應(yīng)用的海洋仿真系統(tǒng)的實現(xiàn)研究[J].系統(tǒng)仿真學報,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] 徐利明,王瑞臣,馬暄.基于海浪譜的實時海洋場景仿真[J].計算機仿真,2013,30(6):409-413.

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

      [6] 俞聿修.隨機波浪及其工程應(yīng)用[M].第3 版.大連:大連理工大學出版社,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].哈爾濱:哈爾濱工程大學(博士學位論文),2013:25-27.

      猜你喜歡
      貝塞爾洋流漫游
      “生生不息”的海洋循環(huán)運動——洋流
      看星星的人:貝塞爾
      少兒科技(2021年3期)2021-01-20 13:18:34
      你認識洋流嗎
      跟蹤導(dǎo)練(五)6
      基于虛宗量貝塞爾函數(shù)的螺旋帶色散模型
      霹靂漫游堂
      一類洋流運動方程的顯示行波解
      NASA漫游記
      一種脈沖貝塞爾波的構(gòu)造及其非線性聲場的仿真
      高階貝塞爾光束的Z掃描理論
      文成县| 桐梓县| 响水县| 喜德县| 亚东县| 华池县| 靖远县| 湘潭县| 马尔康县| 廉江市| 阳信县| 海口市| 皋兰县| 荆州市| 夏河县| 盖州市| 哈密市| 临猗县| 庄河市| 拉孜县| 唐山市| 全椒县| 临沧市| 江门市| 武穴市| 渝中区| 天气| 儋州市| 九台市| 宜兴市| 深水埗区| 九龙城区| 邵阳县| 万宁市| 吉安县| 元氏县| 临江市| 衡水市| 新平| 临洮县| 类乌齐县|