印桂生,王海玲,張菁,陳懷友
(哈爾濱工程大學 計算機科學與技術學院,黑龍江 哈爾濱 1 50001)
隨著虛擬現實和計算機圖形學技術的發展,動態海面作為三維游戲系統、虛擬現實系統、軍事仿真系統的重要組成部分得到了多方的重視.眾所周知,海面是一個形態復雜,變化不規則的,這給高真實感的波浪建模帶來了一定難度,因此,如何在滿足實時性要求的基礎上進行高真實感的海浪建模成為了研究重點.目前,水面建模方法主要分為基于物理[1]、基于幾何構造[2]和面向視覺效果[3]3 類方法.基于物理的方法遵行水體的運動原理,通過求解流體力學方程——Navier Stokes方程(NSF)來得到水面的速度場、壓力場景,從而生成波浪運動形態,其方法公式求解復雜,計算量巨大,實時性較差,多用于數值分析和工程應用.為了避開大量的物理方程計算,學者們開始從波浪的幾何形狀入手,利用數學方法構造波浪形態,這種方法的構造函數相對簡單,計算速度快,得到了游戲、影視特效等領域的青睞,但仍存在著波浪模型單一,波動規則的弊端.面向視覺效果的方法是采用紋理貼圖或者圖像疊加的方法來合成水面效果,這類方法是迎合實時性要求很高的產物,它形成的波形局限性較大,近視點觀察時,視差效果消失,真實感降低.
虛擬現實系統對水面繪制的實時性和真實性要求較高,為了解決這一問題,提出一種分形算法調和的海面模擬方法.該算法將海浪模型分解為大尺度基波、小尺度細節和視覺效果三部分,通過余弦波疊加對基波建模,有效地降低了計算量;算法的核心是引入MPRD算法,充分利用分形算法自相似性和fBm特性來擬合海面的分形細節.文中不是簡單地應用分形算法,而是通過對海浪的分析,提取具有海面特征的分形隨機變量,用于優化分形參數,控制細節的變化;同時在多分辨率網格模型基礎上,結合視點距離、人眼特性及視點變化速度等因素生成不同遞歸深度的細節層次,并根據設定的標準將基波與分形細節進行調和,合成的波形不僅具有各向同性的波浪特征,還具有各向異性的細節特性,實現了視相關的海面建模.算法力求完成實時的高真實感海面建模,在建模的過程中,利用GPU硬件特性進行海面視覺效果模擬,有效地保證了算法的繪制速度.
根據線性波浪理論[4-5],采用如下大尺度基波模型:

式中:H(x,z,t)表示多個余弦波組成的多向隨機波;Ai是波幅;ki是波數,Ki=2π/Li,Li是波長;θi為波浪傳播的方向角,θi∈[-π,π];φi隨機初始相位,φi∈[0,2π];ωi為第 i項角頻率,ω2=gKtanh(Kh),對于深水波,=gK,h是水深,g 重力常數.Ls是平均波長,決定了高頻波和低頻波的比例;?為波形測度系數,決定海面形態.


式中:φ為風向角度,λ是波浪擴散程度的調整系統.為了提高波浪的動力學特性,在求解各種參數后,將在約束中隨機產生某些參數,隨著時間參數t的變化,生成大尺度波浪形態.
分形理論(FT)是由Mandelbrot首先引入自然科學領域[6].FT的自相似性具有膨脹/收縮對稱性,適合描述各向同性的現象;而其自仿射性的膨脹/收縮的對稱性不同,適合描述各向異性的現象,這些性質與海面波動特征相同,因此引入分形算法來添加波形細節具有很好的理論支撐.
MPRD是一種快速細分方法,假如海面網格的大小為(2n+1)×(2n+1),網格間距為l00,對任一網格元,假設 Hij、Hij+1、Hi+1j、Hi+1j+1是其 4 個頂點的高度值,網格的MPRD分形過程為:首先進行網格元中心點的插值,網格元的中心點高度值Hic為


式中:Hit、Hir、Hib、Hil是與 Hic相鄰的網格元中心點高度值,Ric、Rit、Rir、Rib、Ril是自定義的隨機值位移,此時,網格間距為

式(5)是式(2)的特殊形式,說明MPRD可用于海面形態模擬過程.MPRD完成細分后,網格數量變為原來的22i倍,i=1,2,…,n 為遞歸深度,隨著遞歸深度增加,分形細節越來越粗糙.從上面的公式可以看出,參與細分的數據有已知的頂點高度值和隨機位移量,并者體現了點與點的相關性,而后者體現了點與點的差異性.
隨機變量決定分形波浪的形態特征和多樣性,以往的隨機變量形式難以保證分形的局部穩態,因此,設計一個好的隨機變量至關重要.由 FT知,MPRD滿足fBm的冪指數規律:

那么,細分的點與任一相鄰網格點滿足上式關系,式(4)可表述為如下方式:

將式(7)展開,得

式中:H,σ是分形特征參數.由式(8)可求出隨機變量的形式為

構建MPRD的最大難點在于消除分形曲面的折痕,保證變量取值的合理性十分關鍵,由式(9)及分形變量特征,定義MPRD的隨機變量如下:

式中:l是調節函數,控制變量的隨機性,Gauss為服從N(0,1)的高斯函數.
余弦疊加的波浪具有各向同性和各向異性,若估計出頻域和方向域的變化程度,則可修正分形參數,控制分形結果.文中引入水面波向、視向及水面熵特征參數來改進分形特征,對于分形特征取值窗口W為M×N的海面網格,特征提取的公式如下.
1)波向特征值Hh.

式中:Δh 為采樣步長,P(x,y)為海面坐標(x,y)處的高度值,mh(Δh)為分形窗口的相對高度值,保證了分形參數與領域頂點信息的相關性.不同的采樣步長,可以得到對應的mh(Δh)值,根據隨機過程屬性有:

將式(12)取對數:

通過最小二乘法的逼近原理,對不同Δh和mh(Δh)擬合(lg‖Δh‖,lgmh),使用擬合直線的斜率求出參數Hh的估計.
2)視向特征值Hv.

如上述方法,可求出參數Hv的估計.
3)水面熵特征值Hs.
為了體現分形區域內所有頂點的相關性,確保分形穩態性,對網格窗口 作整體度量,定義水面熵Hw:

hij是相對高度分布,?是調節值,Pl=min{Pi;i,j=1,2,…,m},同理可求出 Hs,σs.
FT指出,參數H可以反映曲面變形程度,其值越小,曲面越粗糙.為了計算簡單,改進的分形特征表示如下:

人眼在觀察場景時存在視覺敏感區,且由于視點的運動性,海面細節無需過高.因此,方法在文獻[7]的基礎上改進,為不同區域的海面添加不同分形細節.

圖1 視域劃分Fig.1 View field division
首先根據視截體判定視場,如圖1所示,V是視點位置,V'是視點垂足,V0是其在場景中的投影,he是視點高度,Pn是最近可視點,dn是最近可視點距離,Pf是最遠可視點,df為可見的最遠點距離,α視向角,視場角為fO.計算出可視區域后,假設Vs將進一步劃分層次級別,而對Vs以外的區域直接剪裁.在可視區域內,頂點與視點的距離不同,視覺敏感度也不同,距離越近,敏感性越強,海面細節也應相對增加.則視域的敏感分層可表達如下:

式中:Δθ是不同敏感度間的遞增角度,η為敏感層次數,Δθ=f0/2η,V0=Pn+(Pf-Pn)cos α,稱為敏感點,rO是最高級的敏感區域半徑,ri是不同LOD層的半徑.
由Nyquist定理,設定網格與波長關系是1/4min(L/Li,i=1,2,…,n)≤L00< 1/2min(L|Li,i=1,2,…,n),此外,視點的運行速度也是影響分形的重要因素,視點運動很快,對海面區域認知性較少,不需要對海面增加分形細節.因此,分形遞歸的影響函數可定義為

式中:ν是視點單位時間內的變化速度,θh是視點左右的變化角度,θv是前后移動時引起的視角變化.ν值越小,說明視點變化比較快,視覺效果分辨率較低,不用進行分形變化.μ(p,ε)分形的測度函數,A為波浪振幅,ε=κ×Δτ尺度的測度,Δτ采樣間隔,f(ri,di)是與視點相關的調整因子,νf、vn分別是視域的調整系數,di是視線與場景的距離.
海面細分時,通過設置閾值來控制分形變化.正弦波和與分形算法細節加權求和的海面形態方程可寫為 ζ=H+ γHf,ζ是組成波在時間 t時點(x,z)處的波形;H代表海浪譜波形;Hf表示分形細節結果;γ =cos(α +idθ)(i=0,1,2,…,η -1)是波浪調和系數,取值為[0,1]間的任意實數.可以證明,函數ζ是周期為2π的周期函數,當γ由0連續變化到1時,海浪也由細節豐富的波浪逐漸過渡到基于譜的波形.
光照是提高海面的視覺效果的重要因素,基于物理方法的實時計算海面光照屬性計算量大.為了進一步提高計算效率,算法利用GPU技術特性實現海面的紋理貼圖和光照效果.文中海面的視覺效果主要由3部分組成,近似表示為

式中:Ws海面基色,Wrfl是水面的反射效果,Wrfr是水面的折射效果,ψ是菲涅爾系數,表示了光在表面發生反射和折射現象的概率,決定兩者對海面作用的相對比重,ψ∈[0.1,1.0],其中,ζ= ηa/ηw-sin2α,ζ'=(cos α(ζ+cos α)-1)2,ζ″=(cos α(ζ-cos α)+1)2,ηa和ηw分別是空氣和水的折射率,α是入射光與海面法向的夾角.
海面是連續變化的,若實時計算菲涅爾系數會比較費時,如果將ψ值的求解在預處理階段完成,則節省了大量實時運算時間.通過頂點shader獲得海面頂點信息,將其轉換到切空間坐標中,記錄不同視向時的所有入射角,然后將這些信息保存在紋理中,然后制作成菲涅爾系數的紋理圖,圖像中的信息作為像素shader的輸入,像素shader程度過程中針對海面頂點進行視覺效果融合.
基色是海面的自身顏色,沒有任何外界環境的影響,文中采用Wang tile貼圖方法[8]進行映射海面的基色紋理.根據頂點shader記錄的波浪高度值及視點向量,對紋理進行尋址,然后在像素shader中計算對應視點的海面頂點顏色.
海面的反射效果采用平面反射貼圖實現,以海面為裁減平面,將海面以上的場景渲染為反射貼圖.然后由法線圖得到法向量,根據視線方向計算入射光,并以此為依據計算投影紋理坐標,采樣顏色信息,動態調整紋理.
文中在反射貼圖的基礎上,計算折射網格,把海平面作為折射掩碼記錄到幀緩存的Alpha通道中,用以界定折射區域,使用法線圖,施加一個很小的擾動值對紋理坐標進行位移,最后使用擾動后的紋理坐標查找對應的反射貼圖中的值來實現折射效果.
本文方法的硬件實驗平臺是奔騰4、3.00 GHz CPU、1GB內存和nVIDIA GeForce 6800顯卡;海面模擬程序運行于Window XP系統下,軟件環境是Visual studio2005、DirectX圖形庫和CG語言.
圖2為引入分形算法的海浪模擬實驗,圖2(a)與圖2(b)是固定參數σ,τ后,分形特征參數H對海面形態的影響,可以看出,H控制著海面波浪的起伏程度,H越小,波浪起伏幅度越小.圖2(c)和圖2(d)是固定參數H,τ后的海面形態的變化情況,可以看出,σ控制著分形值的分布,σ越小,波浪形態分布越均勻,說明只要合理的控制H,σ,就可生成更真實的波浪模型.圖2(e)~(h)是根據波浪特性對分形參數進行特征約束后的實驗效果,實驗表明,窗口取值和分形影響函數的閾值都直接影響著分形效果,閾值越大,分形遞歸深度越大,波浪形態越多樣.
圖3是在小波浪級別情況下加入光照視覺效果的海面場景,圖3(a)遠視點的海面光照效果,圖3(b)是近視點海面光照效果,在遠點時,視角較大,反射光較多,折射光比例較少,海面顏色呈現偏藍效果;而近視點時,視角較小,此時折射光相比反射光比較要大,海面顏色出現青色效果.

圖3 海面的光照效果Fig.3 Wave surface with optic
在海面繪制效率方面,圖4給出了3種海面模擬方法的繪制速度對比,實驗數據是對100 s內的速率進行采樣而得,可以看出,海面繪制的初始階段,由于加載數據,初始化等,繪制幀率較低,隨后繪制速度逐漸平穩.其中,Tessendorf方法和文中方法達到了較好的繪制速度,但文中方法比Tessendorf方法的繪制效率更高,在普通運行環境中,平均幀率可達60 f/s以上.

圖4 波浪模擬方法的幀率對比Fig.4 Frame ratio of algorithms
在海面模擬的性能方法,圖5給出了不同規模海面模擬,GPU加速與否的性能對比.圖5(a)海面網格數據為64×64,大尺度波的疊加數為4,分形影響函數的閾值為0.3,實線表示利用GPU加速的模擬效率,虛線表示僅采用CPU的效率,由圖可知,GPU加速的繪制速率更高,速率高于后者將近1.15倍.圖5(b)是不同網格數量下的繪制速率,當波面網格數量小于256×256時,文中方法仍然能達到較好實時性,說明本文方法可以滿足中等區域的海浪模擬.當網格規模大于256×256,CPU的繪制速率下降較快,這說明模擬規模對繪制效率影響較大,因此,采用GPU技術可有效提高繪制速度.

圖5 算法的性能對比Fig.5 Comparison of algorithm efficiency
表1列出了不同LOD層數在不同分形閾值控制下的模擬效率.增加波數或增加LOD層數都會增加系統計算量,且分形函數也影響繪制速度.由表中數據看出,在網格規模小于256×256,波數為4時,方法可以得到高真實感的海面效果,且具有很好的繪制速度.

海面網格數LOD×4 LOD×5 0.3 0.5 0.3 0.5 64 ×64 67.42 60.27 63.19 60.23 128 ×128 60.26 57.31 56.24 51.27 256 ×256 52.64 47.39 49.82 46.61 512 ×512 40.83 37.68 37.93 34.37
提出一種高效的海浪模擬方法,將波浪分為大尺度基波和小尺度細節,通過分形算法增加海面細節,同時利用GPU實現海面的視覺效果.該算法有以下優點:
1)將海浪譜建模方法與分形算法相結合,實時了真實的波浪變形,并可實時控制變形程度.
2)對分形算法進行優化,利用海浪譜的頻率特性、方向特性和海面曲度控制分形參數,并結合視相關、人眼敏感特性及視點變化等因素控制細節級別.
3)面向GPU實現光照效果,充分利用GPU的加速特性提高算法效率.文中將菲涅爾系數的計算結果存儲為紋理圖,減少了系統計算量.實驗表明,文中算法可以實現實時繪制的高真實感波浪場景.
[1]CHEN J X,LOBO N V.Toward interactive-rate simulation of fluids with moving obstacles using Navier-Stokes equations[J].Graphics Models Image Processing,1995,57(2):107-116.
[2]TESSENDORF J.Simulating ocean water[J].Radiosity of the Ocean Environment,2004:2-25.
[3]PHARR M,FERNANDO R.GPU Gems 2:programming techniques for high-performance graphics and general-purpose computation[M].[s.l.]:Addison-Wesley Professional,2005:283-294.
[4]俞聿修.隨機波浪及其工程應用[M].3版.大連:大連理工大學出版社,2003:131-137.YU Yuxiu.Random wave and its applications to engineering[M].3rd.ed.Dalian:Dalian University of Technology Press,2003:131-137.
[5]HENRY D.On Gerstner's water wave[J].Journal of Nonlinear Mathematical Physics,2008,15(2):87-95.
[6]MARTYN T.Realistic rendering 3D IFS fractals in realtime with graphics accelerators[J].Computers& Graphics,2010,34:167-175.
[7]JOHANSON C.Real-time water rendering[D].Lund:Lund University,2004:14-25.
[8]韓建偉,王青,周昆,等.基于Wang Tiles的幾何紋理合成[J].軟件學報,2009,20(12):3254-3264.HAN Jianwei,WANG Qing,ZHOU Kun,et al.Wang Tiles based geometric texture synthesis[J].Journal of Software,2009,20(12):3254-3264.