摘 要: 提出一種簡單有效的、節(jié)約計(jì)算開銷的方法,用于制作實(shí)現(xiàn)三維場景中水域動畫效果。該方法的實(shí)現(xiàn)過程為利用二維模擬水流或波浪數(shù)據(jù)延拓到三維空間中,實(shí)現(xiàn)水沿其主導(dǎo)傳播方向產(chǎn)生波動動畫,其中利用了基于物理方程和粒子系統(tǒng)的方法。在動畫過程中,這些二維水流幀畫面被隨機(jī)地沿橫向方向取樣,在動畫時(shí)間和由用戶自定義噪聲的參數(shù)設(shè)置下取得的切片(稱為時(shí)間片)結(jié)構(gòu)中進(jìn)行。在重構(gòu)三維水流畫面中,使用了帶平滑濾波器的幾何技術(shù),以彌補(bǔ)因取樣所造成的切片損傷。使用隨機(jī)布朗運(yùn)動噪聲數(shù)據(jù)補(bǔ)償三維畫面數(shù)據(jù),逼真地顯示了漣漪波和怒濤波的動畫。
關(guān)鍵詞: 漣漪波;怒濤波;隨機(jī)延拓;仿真
0 引言
近些年來,計(jì)算機(jī)動畫技術(shù)表現(xiàn)得極為突出,取得了豐碩的成果。借助計(jì)算機(jī)圖形技術(shù)對各種自然現(xiàn)象的二維、三維動畫自動生成的研究方法不斷涌現(xiàn),例如計(jì)算機(jī)模擬生成的爆炸、水流、波浪等動畫效果。這些自然現(xiàn)象的計(jì)算機(jī)生成方法給動畫制作帶來了極大的方便,為二維和三維動畫場景的制作縮短了周期、降低了成本。
對于創(chuàng)作大面積水域動畫,如海面的波浪飛濺及波浪洶涌澎湃的動畫時(shí),因其過于復(fù)雜,計(jì)算量大,這在計(jì)算機(jī)動畫領(lǐng)域是一個(gè)極具挑戰(zhàn)的課題。本文提出一種簡單高效、節(jié)約計(jì)算量的方法來實(shí)現(xiàn)大面積海浪、波濤的動畫生成。其原理為利用水波動的二維仿真數(shù)據(jù)隨機(jī)延拓成三維水流波動效果。其實(shí)現(xiàn)過程如圖1所示。
1 相關(guān)研究文獻(xiàn)分析
計(jì)算機(jī)模擬水流動畫技術(shù)已經(jīng)取得了長足發(fā)展。參考文獻(xiàn)[1]利用小振幅波理論和細(xì)胞自動機(jī)方法構(gòu)建水波動畫的算法;參考文獻(xiàn)[2]使用參數(shù)方法描述水流動畫;參考文獻(xiàn)[3]基于水面的正弦關(guān)系建模描述大型海浪動畫及畫面渲染技術(shù),在處理更復(fù)雜的水動力學(xué)有局限性;為獲得更為真實(shí)的水波動畫效果與飛濺效果,參考文獻(xiàn)[4]使用粒子系統(tǒng)結(jié)合高維場模型技術(shù)模擬水流動畫;而參考文獻(xiàn)[5]描述通過添加粒子產(chǎn)生噴霧和泡沫的水動畫的視覺效果;在參考文獻(xiàn)[6]中,表現(xiàn)一個(gè)全三維波浪粉碎效果的動畫是通過控制用戶定義的二維切片庫進(jìn)行的;參考文獻(xiàn)[7]提出了基于粒子系統(tǒng)模擬的自適應(yīng)采樣算法,著眼于幾何形狀復(fù)雜區(qū)域的計(jì)算,同時(shí)減少了流體深處的粒子數(shù)。
本文的方法由參考文獻(xiàn)[8]的思想改良而成,有關(guān)要點(diǎn)如下:
?。?)引入新的隨機(jī)內(nèi)容,提供了更好的可控性;
?。?)隨機(jī)布朗運(yùn)動(FBM)噪聲的使用,低/高通濾波器(LPF/HPF)和參數(shù)β(相對于波前的形狀/復(fù)雜性)的效果;
(3)多邊形生成渲染,包括表面粒子檢測、低通濾波器的切片取樣。
2 二維數(shù)據(jù)仿真方法
2.1 模擬仿真方法
一般來說,水動力學(xué)可以由如下微分方程描述:
其中,u是速度,t是時(shí)間,ρ為密度,p是壓力,ν是粘度,f是外力。
MPS方法[9]是通過粒子相互作用來解決式(1)和(2)的。對式(2)應(yīng)用壓力映射后,MPS方法離散化并轉(zhuǎn)化成粒子相互作用的方程。粒子間的所有作用僅限于給定的截止半徑re內(nèi)。兩粒子間相互作用的重量被定義為:
其中,r分別是兩粒子i和j在位置ri和rj間的距離。
在MPS方法中,流體的局部密度是用粒子數(shù)密度(PND)來表示的。粒子i的PND被定義為:
在自由表面的外側(cè)區(qū)域中不存在粒子時(shí),自由表面上方的PND值減小。這樣,水粒子i滿足的條件為:
ni<δn0(6)
其中,n0是PND的標(biāo)準(zhǔn)值,δ是閾值,它們被認(rèn)為是在自由表面上。
2.2 水粒子分類
在三維中重建流水表面,把水粒子根據(jù)它們的PND分類。這一簡單的分類的優(yōu)勢在于,可以無需特殊處理或計(jì)算,就能得到水表面和飛濺水花粒子數(shù)的合理近似值。由以下條件根據(jù)式(6)進(jìn)行分類:
?。?)飛濺的水花粒子ni<δ1n0;
(2)水表面粒子δ1n0≤ni≤δ2n0;
?。?)水中粒子ni>δ2n0。
δ1和δ2為用戶自定的閾值。
2.3 二維水波仿真
利用二維MPS方法對漣漪波和怒濤波兩類不同的水波進(jìn)行模擬,其算法如下[10-11]:
(1)初始化模擬環(huán)境;
?。?)for each時(shí)間步長;
?。?)添加粒子;
?。?)計(jì)算并賦予粒子作用力;
?。?)平流粒子數(shù);
?。?)設(shè)置相鄰粒子和計(jì)算粒子數(shù)(PND);
?。?)提取水表面或飛濺水花粒子數(shù);
?。?)刪除粒子;
?。?)end for。
程序?qū)嶒?yàn)中使用了一些重要的仿真參數(shù),各參數(shù)的值如表1所示。
3 三維動畫仿真
對上述的二維水波動畫方法,以隨機(jī)方式延拓成三維空間中的水波。對于三維表面重建,使用二維高斯濾波器。
3.1 隨機(jī)延拓方法
很容易想象,如果一個(gè)單一的二維波面在三維中被復(fù)制,所產(chǎn)生的表面在橫向方向上看起來絕對是均勻的,如圖2所示。
切片采樣過程以下列隨機(jī)公式取得:
其中,S為仿真動畫的幀;i為自然數(shù),是動畫時(shí)間;k取值0,1,…,K-1,是動畫切片;N是噪聲函數(shù);F為噪聲波動范圍參數(shù);A為控制動畫速度的參數(shù);中括號“[]”表示為運(yùn)算后取最接近的整數(shù)。對于更換噪聲函數(shù)N,采用隨機(jī)布朗運(yùn)動(fBm或也稱為1/fβ)的噪聲。fBm噪音完全由它的功率頻譜控制,與頻率f成反比,參數(shù)β為加權(quán)系數(shù)。
根據(jù)式(7)和式(8),幀S為在某個(gè)動畫時(shí)刻i的第k個(gè)切片,是根據(jù)隨機(jī)式(7)和在約束條件下式(8)下所取得的。如圖1所示。一旦所有的切片都填滿了由隨機(jī)取樣的幀,這些切片被線性采樣以構(gòu)造三維水流波形。
3.2 曲面近似
為了處理三維表面重建,使用帶高斯濾波器的高度場技術(shù)。這能夠重建近似的三維水面,而補(bǔ)救線狀偽影所造成的二維切片的采樣。
在XZ平面上創(chuàng)建大小為N×M基礎(chǔ)網(wǎng)格如下:
為了取得更好的結(jié)果,在兩個(gè)相鄰的切片和截面積(3Δx,2Δz)高斯濾波參數(shù)σ=2.0之間插入一個(gè)額外的切片。
3.3 三維漣漪波
對于模擬漣漪波時(shí),通過在不同方向合成幾類波的方式略有不同。用這種方法,消除了沿橫向方向的波形外觀,它產(chǎn)生在單一方向上的運(yùn)動。為了最終的h(P)值在每個(gè)小區(qū)中心P上的基礎(chǔ)網(wǎng)格IXZ逼近,由式(10)合成臨近點(diǎn)在每個(gè)方向上的高度。
其中,ω是用戶自定義重量值,hd是相鄰點(diǎn)Q在d方向上的高度值。
4 實(shí)驗(yàn)效果
根據(jù)前述的方法和相應(yīng)程序算法,在Intel(R)Core(TM)主頻為2.83 GHz,內(nèi)存為4 GB的環(huán)境下,利用Delphi結(jié)合OpenGL三維引擎庫進(jìn)行編程實(shí)現(xiàn)。漣漪波和怒濤波在不同的布朗隨機(jī)運(yùn)動噪聲參數(shù)下取得了不同動畫效果,如圖3、圖4所示。
5 結(jié)論
本文提出了利用二維水面波動曲線延拓形成三維的水波動畫效果,利用各類技術(shù)補(bǔ)償二維切片損傷重構(gòu)三維曲面,形成逼真的海水波濤及漣漪動畫效果,在實(shí)驗(yàn)過程中較同類方法實(shí)現(xiàn)的三維海浪波濤動畫有相當(dāng)?shù)男?。?jié)約使用大量的粒子數(shù),為后期動畫效果的渲染節(jié)約了系統(tǒng)資源。此研究為動畫制作中的大型水域動畫場景的計(jì)算機(jī)生成提供了技術(shù)支持,節(jié)約了大量類似開發(fā)的成本并縮短制作周期。此項(xiàng)技術(shù)方法將繼續(xù)向GPU領(lǐng)域邁進(jìn),以期在今后的研究中能更好地以快速渲染自動生成大型水域中的波濤洶涌、水浪渦旋等動畫效果。
參考文獻(xiàn)
[1] 楊懷平,胡事民,孫家廣.一種實(shí)現(xiàn)水波動畫的新算法[J].計(jì)算機(jī)學(xué)報(bào),2002,25(6):612-617.
[2] FOURNIER A, REEVES T. A simple model of ocean waves[J]. Proceedings of SIGGRAPH, 1986(20):75-84.
[3] DARLES E, CRESPIN B, GAZANFARPOUR D. A survey of ocean simulation and rendering techniques in computer graphics[J]. Computer Graphics Forum,2011,30(1):43-60.
[4] MAES M M, FUJIMOTO T, CHIBA N. Efficient animation of water flow on irregular terrains[C]. Proceedings of International Conference on Computer Graphics and Interactive Techniques, GRAPHITE′06, 2006:107-115.
[5] TAKAHASHI T, FUJII H, KUNIMATSU A, et al. Realistic animation of fluid with splash and foam[J]. Computer Graphics Forum, 2003,22(3):391-400.
[6] ADAMS B, PAULY M, KEISER R, et al. Adaptively sampled particle fluids[J]. ACM Transactions on Graphics,2007,26(3):48.
[7] HONG W, HOUSE D, KEYSER J. Adaptive partcles for incompressible fluid simulation[J]. The Visual Computer,2008,24(7):535-543.
[8] FUJIMOTO T, MIYAUCHI S, SUZUKI T, et al. Noise-based animation of waving phenomena[C]. Proceedings of IWAIT2005, IEICE Technical Report. Image Engineering, 2005,104(545):93-98.
[9] KOSHIZUKA S, NOBE A, OKA Y. Numerical analysis of breaking waves using the MPS method[J]. International Journal for Numerical Methods in Fluids, 1998(26):751-769.
[10] 李海,汪繼文.基于粒子系統(tǒng)的位置可控有聲煙花模擬[J].微型機(jī)與應(yīng)用,2013,32(9):32-34.
[11] 袁雪霞,王繼州.導(dǎo)彈煙霧的快速模擬[J].微型機(jī)與應(yīng)用,2013,32(10):32-34.