在視景仿真研究中虛擬自然環(huán)境的生成一直就是最具挑戰(zhàn)性的研究方向之一[1]。由于自然環(huán)境的隨機(jī)性和復(fù)雜性,使對(duì)其進(jìn)行逼真地模擬十分困難,其中海洋環(huán)境的模擬更為復(fù)雜,因?yàn)樵诓煌那闆r下海洋的形態(tài)各不相同。海洋視景仿真的重點(diǎn)是逼真地模擬出海面的波浪起伏。對(duì)海浪的建模一般從三個(gè)角度出發(fā):一是從物理的角度出發(fā),通過(guò)求解流體動(dòng)力學(xué)方程,對(duì)海浪內(nèi)部各質(zhì)點(diǎn)的運(yùn)動(dòng)加以描述[2];二是從海浪的幾何形狀出發(fā),采用三角函數(shù)和參數(shù)方程表示海浪曲面[3];三是從海洋觀測(cè)的結(jié)果出發(fā),采用適當(dāng)?shù)暮@俗V反演方法模擬海浪[4-6]。
本文以當(dāng)前業(yè)界主流的高層軟件環(huán)境——Vega作為開(kāi)發(fā)平臺(tái), 系統(tǒng)研究了Vega環(huán)境中基于Longuet-Higgins海浪模型模擬三維動(dòng)態(tài)海浪。
海浪研究是基于軍事需要興起的一個(gè)研究領(lǐng)域。海浪的形狀時(shí)刻進(jìn)行著不規(guī)則的變化,所以對(duì)海浪的模擬十分困難。50年代中期,將觀測(cè)資料和液體波動(dòng)理論結(jié)合起來(lái)模擬海洋,這帶有很強(qiáng)的經(jīng)驗(yàn)性。50年代初,海洋動(dòng)力學(xué)家Pierson及Neummn等人用隨機(jī)過(guò)程理論分析海洋,這種方法稱為譜分析法。在此基礎(chǔ)上人們提出了多種海浪模型,如Longuet-Higgins模型和Pierson模型。
該模型把海上一固定點(diǎn)的波面用多個(gè)隨機(jī)的余弦波疊加來(lái)描述[7]:
(1)
式中,t為時(shí)間矢量;x為波點(diǎn)位置,通常x取0;εn為均勻分布的隨機(jī)數(shù),它在0~2π范圍內(nèi)出現(xiàn)在間隔α~α+dα的概率為:
(2)
式(1)中還規(guī)定:
(3)
我們考察量:
(4)
式中,ρw為水的密度;g為重力加速度。式(4)求和符號(hào)運(yùn)算結(jié)果表示頻率介于ω~ω+dω區(qū)域內(nèi)組成波的能量之和,除以得δω此間隔內(nèi)的平均能量。S(ω)代表海浪能量相對(duì)于組成波的頻率分布,如果取δω=1,式(4)代表單位頻率間隔內(nèi)的能量,給出了能量密度,故S(ω)稱為能譜;又因?yàn)樗o出了能量相對(duì)于頻率的分布,也稱為頻譜。
(5)
式中,Sηη為所需要模擬的海浪頻譜,稱為靶譜。
波數(shù)kn與圓頻率ωn滿足色散關(guān)系[9],即:
(6)
于是可得海面波浪方程:
(7)
式(7)的物理意義為:海洋上的不規(guī)則波浪,是由許多對(duì)應(yīng)于波譜中各分量的振幅和頻率的單元規(guī)則波組合而成,這些單元波的初始相位是隨機(jī)的。
Pierson參照Rice分析無(wú)線電通信中雜亂噪音的結(jié)果,將固定點(diǎn)的波面表示為部分和:
(8)
在頻率軸上依次選取點(diǎn)ω0<ω1<…<ω2r+2,確定函數(shù)A2(ω)。讀取A2(ω2n+1)的值,將此值乘以頻率間隔ω2n+2-ω2n后開(kāi)平方,得到的結(jié)果作為頻率為ω2n+1、相位為隨機(jī)量ε的余弦波的振幅,其中ε的分布仍為式(2)所示??梢钥吹剑?8)的含義為它代表多數(shù)隨機(jī)余弦波的疊加。
虛擬海洋環(huán)境中有一個(gè)專門的海洋模塊,它包括模擬海上運(yùn)動(dòng)所必須的一些特點(diǎn),例如:動(dòng)態(tài)和靜態(tài)海洋模型中的動(dòng)態(tài)學(xué)效果、域矢量特點(diǎn)以及海洋的特技效果等。海洋模塊中包含動(dòng)態(tài)和靜態(tài)兩個(gè)部分。宏觀的海洋是靜態(tài)的,靜態(tài)海洋是靜止不動(dòng)的一個(gè)平面,上面賦予海洋的紋理帖圖,也可以把觀察者和靜態(tài)海洋之間的海域定義為動(dòng)態(tài)的,動(dòng)態(tài)海洋由一些運(yùn)動(dòng)的面片構(gòu)成,面片的運(yùn)動(dòng)規(guī)律遵循海浪的變化,面片上同樣可以進(jìn)行紋理帖圖。圖1為動(dòng)態(tài)海洋和靜態(tài)海洋之間的關(guān)系。
圖1 動(dòng)態(tài)海洋和靜態(tài)海洋之間的關(guān)系
Vega海洋模塊所使用的算法是基于Longuet-Higgins模型,用一個(gè)傳播可變波浪模塊以1:6的比例生成一個(gè)動(dòng)態(tài)海景,觀察者觀察海洋狀態(tài),然后選擇一個(gè)二維紋理用于三維的光滑波浪表面。創(chuàng)建一個(gè)真實(shí)波浪要用10條余弦曲線和一些非諧波頻率,其中瞬間波浪高度可用下式計(jì)算[10]:
+Ωiωst+φi]
(9)
在淺水區(qū)摩擦力會(huì)影響波浪的傳播速度;在深水區(qū)波浪的傳播速度取決于它的重復(fù)周期。
(10)
海洋模塊需要為Marine、Oceans、Field Vectors、Marine Effect以及Special Effects類安裝Vega類擴(kuò)展名,調(diào)用函數(shù)vgInitMarine和vgInitFx對(duì)Vega海洋模塊和特技效果模塊進(jìn)行初始化。以下代碼表示為海洋模塊進(jìn)行必要的初始化。
main()
{ /* Initialize the Vega system */
初始化Vega系統(tǒng)
vgInitSys();
/* Initialize the Vega Marine module */ 初始化海洋模塊
vgInitMarine();
/* Initialize the Vega Special Effects module*/ 初始化海洋特殊效果
vgInitFx();
/* scan the special .df file*/ 讀取應(yīng)用程序定義文件
vgDefineSys("mymarine.adf");
/* Configure the system and user define classes */ 實(shí)現(xiàn)系統(tǒng)配置
vgConfigSys();
/* real-time loop */
While 進(jìn)入Vega主循環(huán)
{ vgSyncFrame();幀同步處理
vgFrame(); 當(dāng)前幀處理
/* place application specific code here */ }
}
海洋類為海洋模塊的其他各類提供一個(gè)容器,對(duì)于一個(gè)應(yīng)用程序只創(chuàng)建一個(gè)海洋類事件。與海洋類關(guān)聯(lián)的是API函數(shù)是vgInitMarin和vgGetMarine,vgInitMarine函數(shù)初始化海洋模塊,函數(shù)vgGetMarine返回海洋類事件。
在海洋模塊中,一個(gè)海洋事件定義波浪運(yùn)動(dòng)和觀察者周圍景物的外觀,以及在一定距離內(nèi)的海洋外觀。每個(gè)海洋事件都有一個(gè)以觀察者為中心向外擴(kuò)散的動(dòng)態(tài)效果,在較遠(yuǎn)距離處采用靜態(tài)效果。由一個(gè)海洋事件可以參考多個(gè)海洋效果類型的Vega的類事件。圖2表示Oceans的連通性。
圖2 Ocean的連通性
由計(jì)算機(jī)生成的不同海況下的海浪效果圖,圖3為海浪周期4 s,海浪高度4 ft的海浪效果圖;圖4為海浪周期13 s,海浪高度19 ft的海浪效果圖。
圖3 浪高4 ft的海浪
圖4 浪高19 ft的海浪
本文從對(duì)Longuet-Higgins模型和Pierson模型的討論,重點(diǎn)研究Vega環(huán)境中海浪生成原理,并由計(jì)算機(jī)生成海浪效果圖。海面波浪的計(jì)算機(jī)模擬比較復(fù)雜,Vega軟件對(duì)海浪的模擬模塊化,這使得模擬難度得到降低。同時(shí),采用譜分析法反演生成的海浪能夠真實(shí)地反映海浪的特性,并且生成的海浪效果比較真實(shí),這為以后利用虛擬系統(tǒng)進(jìn)行訓(xùn)練打下了良好的基礎(chǔ)。
參考文獻(xiàn):
[1] 褚彥軍,康鳳舉,聶衛(wèi)東,等.海面場(chǎng)景虛擬仿真方法[J].計(jì)算機(jī)應(yīng)用,2004,24(B12):114-117.
[2] 徐迎慶,蘇成,李華,等.基于物理模型的流水及波浪模擬[J].計(jì)算機(jī)學(xué)報(bào),1996,19(增刊):153-160.
[3] PEACHEY D R.Modeling waves and surfaces[J].Computer Graphics,1986,20(4) :65-74.
[4] 費(fèi)華東,李偉青.基于網(wǎng)格計(jì)算的近海岸波浪仿真[J].系統(tǒng)仿真學(xué)報(bào),2005,17(9):2142-2145.
[5] 黃興忠,熊惠芳,李彥佐.一種改進(jìn)的隨機(jī)起伏海面的仿真方法[J].海洋學(xué)報(bào),2006,28(6):151-157.
[6] 元建勝,賈俊濤,孟嬋媛.海浪的動(dòng)態(tài)視覺(jué)仿真[J].海洋科學(xué)進(jìn)展,2005,23(4): 498-503.
[7] 文圣常.海浪理論與計(jì)算原理[M].北京:科學(xué)出版社,1984.
[8] 陶?qǐng)蛏?船舶耐波性[M].上海:上海交通大學(xué)出版社,1985.
[9] TESSENDORF J.Simulating Ocean Water[J].Proceeding of ACM SIGGRAPH,NewYork:ACM Press,1999:348-367.
[10] 龔卓榮.可選模塊的使用與開(kāi)發(fā)[M].北京:國(guó)防工業(yè)出版社,2003.