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

?

大規(guī)模海浪交互模擬*

2011-06-07 00:43丁劍飛
艦船電子工程 2011年12期
關(guān)鍵詞:剛體波浪引擎

劉 磊 丁劍飛 李 飛 楊 波 張 學(xué)

(石家莊機(jī)械化步兵學(xué)院 石家莊 050083)

1 引言

海浪的建模與繪制在電影、游戲、數(shù)字海洋、虛擬現(xiàn)實和虛擬戰(zhàn)場環(huán)境等領(lǐng)域得到了廣泛的應(yīng)用。海浪本身具有實時性、高動態(tài)性、多變性、多維性和模糊邊界環(huán)境性等方面因素,這都使得基于真實海洋環(huán)境仿真的研究還比較不成熟。隨著圖形處理硬件(GPU)的迅猛發(fā)展,增加海浪的真實感和實現(xiàn)海浪的快速繪制是一個急需并且可以解決的問題。同時,小范圍的海浪模擬研究相對來說比較成熟,但考慮海面與船舶等水面運(yùn)動物體雙向交互作用的大規(guī)模海洋場景的仿真還有很廣闊的研究價值。

關(guān)于海洋場景的仿真,有基于物理的方法,如比較經(jīng)典的SPH 模型[1~3],它能較好地模擬物體和水體的交互作用,但只適合范圍較小、非實時的海洋場景仿真;基于高度場的仿真算法[4~5],能較好地仿真海洋的表面,但是很少有作者對物體與水體的交互作用進(jìn)行考慮;有基于粒子系統(tǒng)的仿真算法,能取得一定的表面效果,但是生成的海洋場景具有人工因素,缺乏相應(yīng)的物理基礎(chǔ),從而缺乏真實性。

本文提出了一種海浪交互模擬的有效方法。首先采用復(fù)合動態(tài)網(wǎng)格來仿真海面網(wǎng)格;其次,采用基于頻譜統(tǒng)計的FFT算法對非交互波浪進(jìn)行仿真,求得非交互波浪的高度場;接著,從剛體力學(xué)角度分析了交互波產(chǎn)生的位置和時機(jī),通過引入仿真引擎和求解二維波動方程來實現(xiàn)對交互波的仿真,求得交互波的高度場。最后對兩種波的高度場進(jìn)行疊加,從而實現(xiàn)對海洋場景的整體仿真。

2 海面波浪仿真

2.1 波浪分類

我們把海洋上的波浪分為兩類,一類是交互波浪,就是因為和物體交互產(chǎn)生的波浪;另一類是非交互波浪,就是不存在和物體的交互。

2.2 波浪模擬

2.2.1 非交互波浪模擬

便可以計算梯度向量,微分得到:

用這種FFT方法生成的水面的高度圖如圖1所示。

圖1 高度場

圖2 RGB相關(guān)梯度圖

圖3 實際海面效果圖

圖4 加入光照效果圖

為了在GPU中實現(xiàn)更高效的計算,我們在上述結(jié)果的基礎(chǔ)上,直接由高度圖生成與其相對應(yīng)的R、G、B三個通道梯度圖。這樣不僅可以減少法向的計算量,還可以減少紋理所占用的內(nèi)存和顯存空間。其效果如圖2所示。最終渲染結(jié)果如圖3所示。對于高光部分的海面效果,我們利用了色調(diào)映射的方法增強(qiáng)了光照的效果,使得能在非常亮的地方看到高對比度的圖像如圖4。

2.2.2 交互波浪模擬

交互波浪是由海面上的物體和海面交互而產(chǎn)生的波浪。它是由運(yùn)動對象壓迫水體產(chǎn)生的。對于這種波浪的模擬,我們一般采用求解基于流體的Navier-Stokes方程組來進(jìn)行模擬。由于Navier-Stokes方程組是包含連續(xù)性方程、動量守恒方程和能量守恒方程的方程組,求解起來比較復(fù)雜。我們對其進(jìn)行簡化,采用求解二維的Navier-Stokes方程來模擬交互波浪。該二維波動方程只考慮水平方向速度分布,而忽略垂直方向速度來求解水面高度場,這是應(yīng)用比較廣泛的一種形式。

恒定張力作用下的二維表面質(zhì)點的運(yùn)動一般用二維波動偏微分方程表示,假設(shè)三維空間坐標(biāo)中XZ平面為水平面,水面高度場為Y軸正向方向,則含粘性阻尼力的二維波動方程如下:

上式中,高度場y(x,z,t)為水平面坐標(biāo)(x,z)和時間t的偏微分方程,c、μ分別是水波速度和阻尼系數(shù)。求解二維波動方程的方法有很多,我們采用有限差分方法(FMD)來對其進(jìn)行求解。因為有限差分方法過程直觀且容易采取GPU進(jìn)行求解。我們把二維水平面進(jìn)行離散,劃分為規(guī)格均勻網(wǎng)格,每一個網(wǎng)格的坐標(biāo)為(i,j),對于第k幀其中包含的值為y=(xi,zj,tk)。應(yīng)用有限差分方法,我們可以近似求得上式中的各個組成部分:

3 船行波的模擬

3.1 剛體力學(xué)

我們知道,視覺的真實性不單單依賴于液體仿真,而且更加依賴于液體和物體交互的可信度。我們把交互分為:1)物體對液體的交互;2)液體對物體的交互。前者描述了漂浮物體的受力和它對液體運(yùn)動的影響。后者描述了液體對運(yùn)動的船只產(chǎn)生的作用或?qū)ξ矬w的影響。由于液體對船的影響相對來說較小,并且研究起來涉及比較復(fù)雜的力學(xué)分析,所以我們不予分析。

其中h(x,y):?2→?描述了液體在位置(x,z)的高度,并且x=(xx,xy,xz)T。Mtrot根據(jù)角加速度隨時間步長Δt做如下變化:

其中ΔMrot是Δt·‖M‖關(guān)于矢量M/‖M‖的轉(zhuǎn)動矩陣(M是角動量)。一個粒子集合的角動量等于每個粒子角動量的和。

因此,ΔMrot可以由每個粒子角動量的總和所決定。因此,我們可以仿真具有不同物理參數(shù)的任意形狀的物體。

下面我們來研究一下其穩(wěn)定性。由于為求得高性能,我們對剛體物體只使用了一個相對較小的離散化,所以當(dāng)一個粒子通過水面時,在水面,浮力的不連續(xù)會導(dǎo)致力的瞬間變化(突變)。為了避免這樣的邊緣效果,浮力隨水下距離dt線性變化,這樣浮力就會在水面變化為0。這樣剛體的運(yùn)動就會變得平滑,即使對于稀疏的樣品物體,亦是如此。

3.2 船的仿真

因為我們的方法使用粒子來模擬剛體物體,所以在仿真中我們可以控制物體為任意的形狀。明顯的,我們的性能會隨著粒子數(shù)目的增多而降低。為了減少粒子的數(shù)目,我們僅僅模擬船身。因為物理計算建立在每一個粒子的基礎(chǔ)上,所以這種方法會在非交互波的的基礎(chǔ)上產(chǎn)生真實的運(yùn)動。

3.3 交互波產(chǎn)生的時機(jī)和位置

因為我們不仿真液體流,所以來自剛體的波浪產(chǎn)生僅僅當(dāng)物體下沉或運(yùn)動時才會發(fā)生。對于下沉物體的情形,當(dāng)物體正在橫穿水面時,一種擁有物體和水面交互形狀的波會產(chǎn)生。為了決定波的開始時間,每一個物體需要知道它的狀態(tài)s:(s=0)在水面之上,(s=1)在水面之下。這個狀態(tài)在每一時間步刷新,并且當(dāng)物體開始橫穿表面時,波會產(chǎn)生。

如果對于一個給定的剛體物體,式(12)等于1,那么物體已經(jīng)橫穿了水表面,并且產(chǎn)生了波。因此,物體與表面平面的交互投影到仿真網(wǎng)格上,根據(jù)影響的強(qiáng)度來確定幅度。

對于由運(yùn)動的物體引起而產(chǎn)生的波,我們充分利用下面的物理特性。對于一個運(yùn)動船體,船頭的壓力比船尾大。這樣,在船的前面會產(chǎn)生正向的波,在船的后面會產(chǎn)生負(fù)向的波。產(chǎn)生波的振幅依賴于船的速度。為了確定船在一個時間步長內(nèi)通過的區(qū)域,我們把當(dāng)前和先前時間步長內(nèi)的位置和方向結(jié)合起來。對每一時間步長我們產(chǎn)生一個包括船體和水面交互的圖。因為計算精確的交互區(qū)域花銷太大,因此我們做兩個假設(shè):1)我們近似表面為平面。因為非交互波和海洋表面的面積比起來通常很小,因此這是一個合理的假設(shè)。然而在具有大量非交互波的場景中,這個假設(shè)可能會成為一個瓶頸并且導(dǎo)致加工的痕跡。在最終的繪制中,這個差異幾乎是不可見的,因為船在水中,并且隨船體產(chǎn)生的波浪疊加到非交互波上面。2)我們假設(shè)每一個船的切面在y=常數(shù)內(nèi)。y<0是y=0切面的子集。切面定義為多邊形船和平面y=常數(shù)的橫切面。對于大多數(shù)水面的小船,甚至雙體船來說,這個假設(shè)都是有效的。對于被拉出水面的比較復(fù)雜的漂浮物體來說,需要采用一種更加高級的方法。例如,通過使用兩個平面y=±ε進(jìn)行剔除,橫切面可以被精確地提取出來。因此,即使對擁有復(fù)雜形狀的正在劇烈運(yùn)動的物體來說,它們也將在邊界層橫斷面產(chǎn)生波。在橫斷面st的紋理產(chǎn)生以后,把它和來自先前時間步的對應(yīng)的紋理相結(jié)合??紤]紋理作為一個集合,三個不同的波產(chǎn)生狀態(tài)可以如下建立:

圖5 船行波的疊加

1)頭波:st\st-1

2)船體:Bt=st∩st-1

3)尾波:st-1\st

為了產(chǎn)生波,波浪強(qiáng)度可能從實際仿真網(wǎng)格值中添加或剔除。因此,當(dāng)仿真的船和存在的波相互影響時,產(chǎn)生的波和存在的波便會相互干涉,考慮這是必要的。如果這種效果不需要,那么仿真網(wǎng)格中的值可以很簡單地被替換。如果被替換,那么它們將輕微地變化,并且和前面的變化相一致。這樣,在船外形上的人為加工感會降低并且會產(chǎn)生頭波。如果船速比波的傳播速度快,那么頭波會始終保持在前面。為了更加逼真,這個區(qū)域可以通過如今電腦游戲熟知的飛濺效果加以改善。

3.4 交互波仿真

對于頭波和尾波,我們使用干擾引擎來對其進(jìn)行仿真。為了能大體模擬上述船行波效果,我們設(shè)計一個較大的船頭波干擾引擎和m個較小的船尾波引擎,并且設(shè)定第i個船尾波干擾引擎的位置ez為:

其中,w為船的寬度。在具體的實驗中,干擾引擎的幅度和廣度是由船舶的重量大小決定的,因此需要根據(jù)船體的形狀來構(gòu)造船頭和船尾波干擾引擎,在船行駛過程中對水面高度場進(jìn)行干擾。下面我們分別對船頭波和船尾波設(shè)計不同的平滑擾動模板來實現(xiàn)船行波的平滑?,F(xiàn)實中,船在行駛過程中,從船頭向后左右兩側(cè)形成兩股大波,類似于人字形波。所以我們應(yīng)用一個幅度和范圍較大的擾動模板算子D(x,z)。并且通過在網(wǎng)格的不同位置設(shè)置不同的擾動系數(shù)來實現(xiàn)人形波的平滑。我們?nèi)缦略O(shè)定D(x,z)。

相應(yīng)的,在船尾處,我們設(shè)計m個范圍和幅度相對較小的擾動引擎。對于其擾動平滑模板,我們把網(wǎng)格中心點擾動系數(shù)設(shè)計為0.3,與中心點相鄰的四個點系數(shù)設(shè)計為0.15。則船尾波引擎模板矩陣算子F(x,z)為:

圖6 船只左轉(zhuǎn)彎時海洋場景仿真

圖7 船只右轉(zhuǎn)彎時的海洋場景仿真

在完成了上述的仿真后,我們采用標(biāo)準(zhǔn)的光照模型和立方體映射以及文獻(xiàn)[6~7]中的反射和折射繪制技術(shù)來實現(xiàn)對水體中物體的折射和反射現(xiàn)象的仿真。最終的仿真結(jié)果如圖6和圖7。

4 實驗

在基于上述模型的理論基礎(chǔ)上,我們進(jìn)行了仿真實驗工作。本文所采用的實驗平臺為Intel Xeon CPU 16核2.27GHz,主存為12G,顯卡采用的是GeForce GTX295,顯卡內(nèi)存為1800M,操作系統(tǒng)為 Windows XP,整個實現(xiàn)基于 OpenGL/Cg。在繪制時,我們還加入了色調(diào)映射(Tone Map)[8]和高動態(tài)范圍(HDR)[9]圖像處理技術(shù)等特效來加強(qiáng)海面場景繪制時的光照效果的真實感。我們得到了有關(guān)的實驗數(shù)據(jù)如表1和表2。

表1 不同網(wǎng)格步長下的幀速率

表2 相同網(wǎng)格尺寸下各部分仿真時間消耗所占百分比

對于表1來說,我們可以看出幀速率隨網(wǎng)格步長的增大而增大。也就是說幀速率隨著分辨率的增加而降低,但總體來看,幀速率相對來說還是比較高的,能滿足實時性要求。對于表2來說,表面提取和渲染所花費(fèi)的時間較多,盡管它能在GPU上有效地執(zhí)行。我們的方法需要不斷地從GPU中讀回。因為剛體仿真是在CPU上執(zhí)行的,所以包圍剛體的局部區(qū)域需要不斷地從GPU讀回來實現(xiàn)剛體物體的仿真。

5 結(jié)論與展望

本文給出了一種仿真擁有交互物體的大規(guī)模海洋場景的方法,采用復(fù)合動態(tài)網(wǎng)格來仿真海面網(wǎng)格;采用基于頻譜統(tǒng)計的FFT算法求得非交互波浪的高度場;從剛體力學(xué)角度分析了交互波產(chǎn)生的位置和時機(jī),通過引入仿真引擎和求解二維波動方程來求得交互波的高度場。最后對兩種波的高度場進(jìn)行疊加,從而實現(xiàn)對海洋場景的整體仿真。將來可能改進(jìn)的工作:在需要的區(qū)域,利用基于3D Navier Stoke方程[10]來實現(xiàn)對流的仿真;仿真水對船的交互;添加3D液體效果,如液體飛濺等;進(jìn)一步利用GPU提高仿真的效率。

[1]He Yan,Zhang ye Wang,Jian He,et al.Real-time fluid simulation with adaptive SPH[J].Computer Animation and Virtual Worlds,2009,20(5):417~426

[2]W.T.Reeves.Particle systems:a technique for modeling a class of fuzzy objects[C]//Proc.of ACM SIGGRAPH,1983:359~376

[3]M.Muller,B.Solenthaler,R.Keiser,et al.Particlebased fluid interaction[C]//Proc.of the ACM SIGGRAPH/Eurographics Symposium on Computer Animation,2005:237~244

[4]M.Kass,G.Miller,Rapid.Stable Fluid Dynamics for Computer Graphics.Computer Graphics(Proc.of SIGGRAPH'90),1990:49~57

[5]Gary A.Mastin,Peter A.Watterger,John F.Mareda.Fourier Synthesis of Ocean Scenes.IEEE Computer Graphics & Application,1987:16~23

[6]SOUSA T.Generic refraction simulation.In GPU Gems 2,2005:295~305

[7]JOHANSON C.Real-time water rendering-introducing the projected grid concept[C]//Master of Science Thesis(Lund University),2004:96~104

[8]Frank Losasso,Hugues Hoppe,Geometry Clipmaps.Terrain Rendering Using Nested Regular Grids[C]//Proceedings of ACM SIGGRAPH,2004,23(3):769~776

[9]Jeff McGee.Real-Time Water Rendering[C]//proceedings of CSCE5933Topics in Game Development,April 3,2007

[10]Kass M,Miller G.Rapid,stable fluid dynamics for computer graphics[J].Computer Graphics,1990,24(4):49~57

猜你喜歡
剛體波浪引擎
波浪谷和波浪巖
重力式襯砌閘室墻的剛體極限平衡法分析
新海珠,新引擎,新活力!
車壇往事4:引擎進(jìn)化之屢次失敗的蒸汽機(jī)車
波浪谷隨想
車載冷發(fā)射系統(tǒng)多剛體動力學(xué)快速仿真研究
藍(lán)谷: “涉藍(lán)”新引擎
波浪中并靠兩船相對運(yùn)動的短時預(yù)報
地震作用下承臺剛體假定的適用性分析
One Engine?。蹋澹妫糁皇O乱粋€引擎