專利名稱:航海模擬器場景中的海浪構網算法的制作方法
技術領域:
本發明屬于航海場景仿真技術領域,涉及一種航海模擬器場景中的海浪構網算法。
背景技術:
航海模擬器是一種典型的人在回路中的仿真系統,航海模擬器的場景為模擬器操縱者提 供了海上訓練任務的虛擬景象,其中顯示的海浪一般約占整個場景的一半區域,因此海浪是 航海模擬器場景的重要組成部分,也是評價航海模擬器視景系統好壞的關鍵依據。
繪制海浪場景最關鍵的問題是海浪構網,即如何用多邊形網格實時構建出海浪表面的幾 何形狀。海浪構網需要解決兩個主要問題 一是海平面網格模型的建立,二是網格模型中網 格頂點高度的計算。海平面網格模型的網格間距和拓撲結構直接影響海浪繪制的實時性,而 網格頂點高度的計算直接關系海浪繪制的真實感,近年來,國內外學者對這兩個問題進行了 一些研究。
在海平面網格模型的研究中尹勇[1]將海面劃分為動態海面和靜態海面,動態海面由以
視點位置為中心的^x^個網格組成,動態海面的外圍區域為靜態海面;Hinsinger等W提出 一種自適應的網格模型,該模型將屏幕上顯示的海面區域細分成^x^個矩形網格單元,每 個單元按照逆向透視投影到靜止的海平面上,從而獲得海面上對應的不均勻分布的MxW個 網格位置;解翠[3對這種自適應的海平面網格模型進行了改進,提出了梯形網格模型; JohansonW提出了投影網格模型,在投影空間建立一個與視線垂直的均勻網格平面,再將該平 面投影到世界空間的海平面上。
在網格頂點高度的計算方面,隨著圖形處理器(Graphics Processing Unit, GPU)性能及可編 程能力的大幅度提高,基于GPU利用高度圖來計算網格頂點高度逐漸成為研究的熱點。高度 圖是保存高度的紋理圖,己提出的比較有代表性的高度圖生成方法有JohansonW采用Perlin 噪聲生成海面高度圖;Kryachko^利用頂點紋理獲取技術,將美工創建的多個灰度圖進行疊 加和重復來生成高度圖;Isidoro等[6]和Finch等[7]分別利用正弦波和Gerstner波疊加計算高度 圖。
現有海浪構網算法主要存在以下不足-
1)梯形網格、投影網格等模型的提出,加快了海浪繪制的速度,但這些網格模型的拓撲 結構不合理,不能實現完全合理的層次細節(Levd of Detail, LOD),且模擬的海面容易出現走 樣現象。
一2i利用現有的高度圖生成方法繪制的海浪不能準確體現風對海浪的影響。風所引起的波浪是海面上分布最廣的、對于船舶航行和海洋工程實際活動影響最大的波浪,在航海模擬器
的船舶模擬駕駛以及工程方案論證中,都要考慮風浪對船舶及碼頭等的影響,因此航海模擬
器的海浪繪制必須要考慮風的作用,也就是說海浪的大小應與風的大小相對應。
3)現有的海浪構網算法無法體現海浪與視點的相對運動。在船舶實際駕駛時,海浪與船
舶之間的相對運動是一個比較重要的航行參照,因此在航海模擬器中必須體現海浪與船舶(視
點"綁定"在船舶上)的相對運動。 參考文獻尹勇.分布式航海仿真系統中視景實時生成算法的研究[D].大連:大連海事大學,2001. Hinsinger D, Neyret F, Cani M P. Interactive animation of ocean waves [C]〃 Proceedings of the 2002 ACM
SIGGRAPH / Eurographics Symposium on Computer Animation, San Antonio, 2002: 16卜166.解翠.基于Web的航海訓練環境中關鍵技術的研究[D].大連:大連海事大學,2005. Johanson C. Real-time water rendering: introducing the projected grid concept [D]. Lund: Lund University, 2004. Kryachko Y. Using vertex texture displacement for realistic water rendering [M]. Pharr M. GPU Gems2. Boston: Addison Wesley, 2005: 283-294. Isidoro J, Vlachos A, Brennan C. Rendering ocean water [M]. Engel W F, ShaderX: Vertex and Pixel Shader Tips and Tricks, Minnesota: "Wordware Publishing, 2002: 347-356. Finch M. Effective water simulation from physical models [M], Fernando R. GPU Gems. Boston: Addison Wesley, 2004: 1-16,
發明內容
為了解決現有海浪構網算法的不足,針對航海模擬器的實際需求,本發明基于波浪譜理 論和GPU技術,設計了一種新的海浪構網算法,該算法在繪制的實時性及真實感上優于其他 算法,采用該算法可以科學、實時、逼真地繪制大規模海浪場景。
為了實現上述目的,本發明航海模擬器場景中的海浪構網算法如下
1) 設計同心圓網格模型模擬海平面
具體方法是過視點所在位置做海平面的垂線,得一交點,以該點為圓心,以遞增的距 離為半徑做多個同心圓,并對每個同心圓進行相同數量的等分,最后連接相鄰同心圓的各等 分點組成三角形網格。
2) 采用基于GPU的FFT方法生成符合Phillips譜的海浪高度圖
海浪具有不規則性和不重復性,但其統計特性是穩定的,利用波浪譜以隨機過程描述海 浪更為科學準確。比較常見的波浪譜有P-M譜、JONSWAP譜、Phillips譜等,其中Phillips 譜可較好體現風對海浪的影響。 '
由于波浪譜將實際波浪視為許許多多振幅不等、相位不同的正弦波動的疊加,而快速傅 里葉變換(Fast Fourier Transform, FFT)方法是計算正弦疊加值的有效方法,因此本發明在GPU 中采用FFT方法生成符合Phillips譜的海浪高度圖。
43) 采樣多次平鋪的高度圖獲得網格頂點的高度
生成高度圖時,FFT方法的采樣區域通常小于同心圓網格模型所模擬的海平面范圍,對 此可多次平鋪高度圖以覆蓋同心圓網格的全部區域,然后再利用頂點紋理獲取技術采樣多次 平鋪的高度圖,得到網格頂點的高度,從而用網格構建出海浪表面的幾何形狀。
4) 實時計算網格頂點紋理坐標以實現海浪與視點的相對運動
同心圓網格模型以視點為中心,并隨視點一起運動,為了體現海浪與視點的相對運動, 可以依據視點所在位置實吋計算網格頂點紋理坐標,并用得到的紋理坐標采樣高度圖,這樣 同心圓網格雖隨視點一起運動,但網格頂點的紋理坐標根據視點位置實時變化,實現了海浪 與視點的相對運動。
本發明的有益效果在于
1) 同心圓網格模型是一種按距離細分的網格模型,該模型對于從視點出發的任意方向, 所構網格的疏密變化程度一致,并隨與視點距離的增加,網格的間距不斷增大,保證了繪制 幀數的穩定和繪制的實時性,有效減輕了遠處海面的走樣。同心圓網格模型實現了完全合理 的LOD,體現了人眼的分辨率是有限的和均勻的這樣一種基本原則。
2) 生成的高度圖符合Phillips譜,能夠較好地體現風對海浪的影響,也就是說繪制的海 浪大小與風的大小相對應,保證了繪制的科學性和真實感。
3) 通過實時計算網格頂點紋理坐標實現海浪與視點之間的相對運動。
因此,本發明所設計的海浪構網算法在繪制的實時性及真實感上優于其他算法,采用該 算法可以科學、實時、逼真地繪制大規模海浪場景。
圖1是本發明的同心圓網格模型示意圖。 圖2是本發明的高度圖的生成流程。 圖3是本發明的高度圖的平鋪示意圖。 圖4是本發明的計算網格頂點紋理坐標的示意圖。
具體實施例方式
下面結合附圖對本發明做進一步詳細地描述-1)同心圓網格模型的建立
同心圓網格模型的建立如圖1所示,假定在三維世界坐標系X7Z中,y軸向上為正,模 擬的海平面平行于IZ平面,視點位置是(; A),海面可見距離為/ _。過視點位置作海平 面的垂線,得交點S;以S為圓心,以遞增的距離為半徑做W個同心圓,對第/(l&、A0個 同心圓從zVr/M弧度位置處開始進行A/等分,各等分點即為同心圓網格模型的網格頂點,頂點總數為MxiV個。各同心圓半徑的計算公式為
"2,3,L7V (1)
其中i mm等于《,為同心圓最小半徑;/(0為大于0的遞增函數,可令 /。 = (! (及_—i 卿) ' (2)
設第/個同心圓上第/個網格頂點的坐標為( ,^,z》,其計算公式為 xy = 、 +《cos(2々/Af + ;n'/M)
yy = 0 其中/ = 1,2,A W; _/ = 1,2,A M (3)
zy = sz + i , sin(2;^/M + ;ri/M)
2) 海浪高度圖的生成
(1) FFT方法生成高度圖的相關理論
假定模擬的海平面平行于"平面,在^Z平面^x^采樣區域內有MxW個采樣點,時
間r時,采樣點x-("^/iV,wA/M)的波高/KJC,0由位置及時間決定,其FFT表示式為
/z(x力=Z雖,O, (4)
其中* = (^,^)為二維矢量,其長度為A:, ^ =2朋/^,& =2;zm/Zz;"和w均為整數,
-AV2《"SW/2, -M/2^w^M/2; ^^力為波幅值,它決定了波浪的表面狀況,波幅值可 用波浪譜函數表示為
,=〈,,《〉 (5) 考慮風影響的Phillips波浪譜表示式為
^-(6)
其中丄=卩2/《;g為重力加速度;r為風速;A為風向;^是常數。 初始波幅值可用高斯隨機數來生成
《w=+("《WK^ (7)
其中《,《e
,是相互獨立的高斯隨機數。使用高斯分布的隨機數生成的波幅值符合 海面波動的實驗數據。
有了初始波幅值,再根據色散關系W(A)二V^,可以得到時間"寸的波幅值
辟/U)=+ %(_*)e-(8) 得到波幅值后,根據式4,通過FFT可得到采樣點的波高/7(x力。
(2) 基于GPU的高度圖生成
圖2顯示了基于GPU釆用FFT方法生成高度圖的流程。首先在CPU中計算出《義A)、 分別以紋理形式保存;將這兩個紋理與時間Z作為GPU的輸入,在GPU中計算出波 幅值浙A,/);然后在GPU中依據式4進行FFT,得到/ (jc力,并保存為紋理,/z(jc力紋理即 為高度圖。
3) 高度圖的平鋪和采樣
6生成高度圖時,FFT方法的采樣區域通常小于同心圓網格模型所模擬的海平面范圍,對 此可多次平鋪高度圖以覆蓋同心圓網格的全部區域。圖3是高度圖的平鋪示意圖,實線圓為 同心圓網格模型的最大圓,虛線小方格代表高度圖,對高度圖進行/次平鋪,/ = 2/ ,/^ , 這樣就覆蓋了面積為2i ^ x2i ,的方形區域。
平鋪高度圖覆蓋同心圓網格的全部區域后,可利用頂點紋理獲取技術采樣多次平鋪的高 度圖,得到網格頂點的高度,從而用網格構建出了海浪表面的幾何形狀。
4)網格頂點紋理坐標的計算
同心圓網格模型以視點為中心,并隨視點一起運動。在航海模擬器中,視點是"綁定" 在船舶駕駛臺上的,這就意味著同心圓網格是隨船舶一起運動的,因此繪制的海浪也是隨船 舶一起運動的,海浪與船舶之間沒有相對運動。在船舶實際駕駛時,海浪與船舶之間的相對 運動是一個比較重要的航行參照,因此在航海模擬器中有必要體現這一相對運動,以滿足船 舶駕駛的實際需求,同時增強海浪場景的真實感。
計算同心圓網格頂點的高度需要根據頂點紋理坐標來采樣高度圖,因此可以考慮依據船 舶位置實時計算頂點紋理坐標,從而實現海浪與船舶的相對運動。如圖4所示,設船舶的初 始位置為p。(;c。,y。^。); /為高度圖的平鋪次數。此時A點的紋理坐標為(//2,//2),假定船舶 航行一段時間后,到達了p,點,則A的紋理坐標(年O用下式計算 A = ; + (x]—、)
2 "A
Z z 、 z + (zi-zo):
2 " 2i 隨
有了同心圓網格中圓心的紋理坐標,根據模型的拓撲結構,可以計算出網格其他頂點的 紋理坐標。這樣,雖然同心圓網格隨船舶一起運動,但網格頂點的紋理坐標根據船舶位置實 時變化,實現了海浪與船舶的相對運動。
權利要求
1、航海模擬器場景中的海浪構網算法,其特征在于,該算法包括如下步驟1)設計同心圓網格模型模擬海平面;2)采用基于GPU的FFT方法生成符合Phillips譜的海浪高度圖;3)采樣多次平鋪的高度圖獲得網格頂點的高度;4)依據視點位置實時計算網格頂點紋理坐標,實現海浪與視點的相對運動。
2、 如權利要求l所述的航海模擬器場景中的海浪構網算法,其特征在于,所述步驟l) 的具體實現方法是過視點所在位置做海平面的垂線,得一交點,以該點為圓心,以遞增的 距離為半徑做多個同心圓,并對每個同心圓進行相同數量的等分,最后連接相鄰同心圓的各 等分點組成三角形網格。
3、 如權利要求1所述的航海模擬器場景中的海浪構網算法,其特征在于,所述步驟3)的具體實現方法是多次平鋪高度圖以覆蓋同心圓網格的全部區域,然后利用頂點紋理獲取 技術采樣多次平鋪的高度圖,得到網格頂點的高度,從而用網格構建出海浪表面的幾何形狀。
4、 如權利要求l所述的航海模擬器場景中的海浪構網算法,其特征在于,所述步驟4) 的具體實現方法是依據視點所在位置實時計算網格頂點的紋理坐標,并用得到的紋理坐標 采樣高度圖,這樣同心圓網格雖隨視點一起運動,但網格頂點的紋理坐標根據視點位置實時 變化,實現了海浪與視點的相對運動。
全文摘要
本發明屬于航海場景仿真技術領域,涉及航海模擬器場景中的海浪構網算法。該方法是設計同心圓網格模型構建海平面,保證了海浪繪制的實時性;采用基于GPU的FFT方法生成符合Phillips譜的海浪高度圖;利用頂點紋理獲取技術采樣多次平鋪的高度圖,得到網格頂點的高度,從而用網格構建出了海浪表面的幾何形狀;依據視點位置實時計算網格頂點紋理坐標,實現了海浪與視點的相對運動。本發明的算法解決了現有海浪構網算法中不能實現完全合理的LOD、無法體現風對海浪的影響、無法實現海浪與視點的相對運動等問題,并在繪制的實時性及真實感上優于其他算法;采用本發明的海浪構網算法可以科學、實時、逼真地繪制大規模海浪場景。
文檔編號G06T15/70GK101587594SQ200910012149
公開日2009年11月25日 申請日期2009年6月19日 優先權日2009年6月19日
發明者任俊生, 任鴻翔, 劉秀文, 孫霄峰, 勇 尹, 張新宇, 張秀鳳, 翠 解, 金一丞 申請人:大連海事大學