唐 勇,張浩然,李 穎,張利輝,劉 丁,周升騰 ,王 賽
1(燕山大學(xué) 信息科學(xué)與工程學(xué)院,河北 秦皇島 066004)2(河北省計(jì)算機(jī)虛擬技術(shù)與系統(tǒng)集成重點(diǎn)實(shí)驗(yàn)室,河北 秦皇島 066004)
自然景觀中,如煙霧、火焰、水體等這些常見流體的模擬一直是計(jì)算機(jī)圖形學(xué)領(lǐng)域里一個(gè)非常重要的研究方向.其中,占地球表面積70.8%的海洋,因其規(guī)模巨大、運(yùn)動(dòng)復(fù)雜和環(huán)境多變的特性,渲染結(jié)果的實(shí)時(shí)性和真實(shí)感很難得到保證.
近年來,國內(nèi)外的學(xué)者對(duì)海洋場(chǎng)景的實(shí)時(shí)模擬做了很多工作,從波浪的運(yùn)動(dòng)學(xué)特征模擬到海面物體的交互性等方面都進(jìn)行了十分細(xì)致的研究.但在海洋的光學(xué)效果模擬上,由于缺乏物理規(guī)律的考量,所繪制的海面倒影呈現(xiàn)靜止不可控的景象,缺失了一定的真實(shí)性.
2001年,Tessendorf提出基于統(tǒng)計(jì)模型波浪譜的仿真理論,利用Phillips頻譜和快速傅里葉變換方法,成功模擬出受風(fēng)力影響的海面[1],但是在海面光學(xué)效果上,僅考慮了Fresnel反射影響因素,其它并未做更多的探索和嘗試.2006年,微軟研究院的胡耀華等人基于紋理貼圖的方法,實(shí)時(shí)地模擬了水體的反射和折射效果[2],但其局限于小規(guī)模相對(duì)靜止水面,并不適合大規(guī)模的海洋場(chǎng)景.2008年任鴻翔等人采用立方體紋理映射、平面反射及Phong鏡面反射技術(shù)模擬海面對(duì)天空、景物、太陽的反射效果,并在海面的折射效果中考慮了海水深度的影響[3],但Phong光照模型本身考慮因素較少,光照細(xì)節(jié)得不到滿足.2010年,法國自動(dòng)化研究所的Bruneton等人根據(jù)細(xì)節(jié)需求等級(jí),結(jié)合法線向量和BRDF(雙向反射函數(shù))模型,多角度實(shí)時(shí)獲得了很好的光照效果[4],但由于采用擺線進(jìn)行波浪的建模,波浪運(yùn)動(dòng)與海面反射光學(xué)的整體效果在一定程度上有所削弱.2014年Ament從物理光學(xué)角度入手,分析反射折射輻射公式[5],十分真實(shí)地渲染出夕陽下輪船的景象,但其計(jì)算過于復(fù)雜,無法滿足實(shí)時(shí)性的要求.2016年,唐勇等人對(duì)近島海洋場(chǎng)景中的海水色彩進(jìn)行實(shí)時(shí)繪制[6],模擬出海島倒影和水下沉船的光學(xué)效果,但由于近島位置水面較為平靜的特性,在光學(xué)效果上有所欠缺.同年Ma等[7]從海洋生物光學(xué)入手,考慮浮游生物對(duì)海水顏色的影響,同時(shí)結(jié)合BRDF模型,渲染出色彩十分豐富的海面,但其對(duì)海面的局部反射效果沒有進(jìn)行模擬.2017年Stomakhin通過采用良好邊界處理機(jī)制[8],真實(shí)地展現(xiàn)了多種海洋交互場(chǎng)景,完成了迪士尼影片《海洋奇緣》的制作,但其同樣缺少對(duì)局部反射效果的模擬.
綜上,據(jù)我們所知,目前對(duì)海洋場(chǎng)景的模擬,更多側(cè)重于海面建模時(shí)海浪譜的選擇,而在海洋光學(xué)方面尤其是反射光學(xué)效果上,尚未有研究反射倒影變化的渲染仿真.為解決上述問題,本文采用由風(fēng)力驅(qū)動(dòng)的長短波統(tǒng)一的方向譜[9]來構(gòu)建海面;在海面光學(xué)方面,引入BRDF模型,消除傳統(tǒng)光學(xué)模擬方法中,光照不自然的問題.同時(shí),針對(duì)目前海面反射投影渲染工作中倒影不可控的現(xiàn)象,修改投影反射矩陣,較為真實(shí)地模擬倒影隨時(shí)間變化的效果,具有較強(qiáng)的真實(shí)感,展現(xiàn)了更加豐富的海面光學(xué)效果細(xì)節(jié).
在海洋場(chǎng)景中,海浪運(yùn)動(dòng)狀態(tài)的模擬,是真實(shí)展現(xiàn)海面細(xì)節(jié)的基礎(chǔ)環(huán)節(jié).出于繪制質(zhì)量和速度的要求,本文采用投影網(wǎng)格技術(shù)和基于Tessendorf的FFT方法,其中投影網(wǎng)格具有與視點(diǎn)相關(guān)的多層次細(xì)節(jié)屬性,計(jì)算量小并且較為成熟;而FFT能夠快速完成海浪譜頻域到時(shí)域的轉(zhuǎn)換,如下:
(1)
(2)
式中Bl為長波頻譜,Bh為短波頻譜,Δ(k)為整合統(tǒng)一后的波數(shù)因子,θ為波數(shù)向量與x軸的夾角.圖1為兩種海浪譜的對(duì)比,海面精度為2048x1024.與Phillips頻譜相比,本文采用的海浪譜將長短波譜進(jìn)行疊加,波峰波谷更為自然.
圖1 兩種譜繪制結(jié)果的比較Fig.1 Comparison of two spectral plotting results
在渲染的波浪運(yùn)動(dòng)場(chǎng)景中,引入光學(xué)模型,可以進(jìn)一步表現(xiàn)豐富多彩的海洋色彩細(xì)節(jié).傳統(tǒng)的光學(xué)模型Lambert、Phong以及Blinn-Phong等,影響因子較少,可以用來模擬簡單的金屬表面和漫反射粗糙物體.但對(duì)于海洋場(chǎng)景中復(fù)雜的光學(xué)條件并不適用,故出于真實(shí)感的考慮,構(gòu)建海洋BRDF模型,計(jì)算海面對(duì)日光和天空的反射效果,改善目前光學(xué)模型物理參數(shù)較少的問題.BRDF普遍定義為:
(3)
其中,l是入射光方向,v是觀察方向.而dLo(v)是表面反射v方向的反射光的微分輻射率.dE(I)是表面上來自入射光方向l的微分輻照度.根據(jù)輻射率和輻照度的關(guān)系,借助球坐標(biāo)系,可以得到公式(3)中第二個(gè)等式,以此計(jì)算表面發(fā)射的輻射率,得到反射方程如下:
(4)
在實(shí)際渲染工作中,文獻(xiàn)[5]通過對(duì)具有各向異性的環(huán)境貼圖進(jìn)行紋理坐標(biāo)的梯度采樣,獲得了BRDF復(fù)雜的反射計(jì)算結(jié)果,展現(xiàn)出海面多彩的反射效果.本文將采樣過程進(jìn)行簡化,對(duì)環(huán)境貼圖進(jìn)行直接采樣,消除紋理坐標(biāo)(x,y)的梯度計(jì)算,同時(shí)添加人工參數(shù)進(jìn)行校正,如公式(5)所示.
Isky=texture2Dlod(Lsky,uo*distort)*tint
(5)
式中,distort是對(duì)紋理坐標(biāo)進(jìn)行變形的參數(shù),tint參數(shù)用來調(diào)整紋理采樣后的最終顏色效果.圖2為構(gòu)建BRDF模型后與其他文獻(xiàn)效果的對(duì)比,可以看出本文波浪運(yùn)動(dòng)效果較為自然,海面對(duì)天空和島嶼的光學(xué)反射細(xì)節(jié)更為豐富,為后續(xù)倒影的渲染工作奠定了基礎(chǔ).
圖2 光學(xué)效果對(duì)比Fig.2 Comparison of optical effects
豐富的海面反射效果可以帶來真實(shí)的視覺感受,其直觀體現(xiàn)就是海面倒影的產(chǎn)生.類似于平面鏡成像原理,倒影是物體經(jīng)海面反射而產(chǎn)生的虛像.成像原理如下:
圖3 兩種反射對(duì)比圖Fig.3 Comparison of two reflections
(6)
公式(7)中各個(gè)坐標(biāo)的系數(shù)可以用一個(gè)標(biāo)準(zhǔn)反射矩陣M表示:
(7)
結(jié)合公式(6)和公式(7),則虛像位置Q′與實(shí)像位置Q的轉(zhuǎn)化公式簡化如下:
Q′(x′,y′,z′)=Q(x,y,z)·M
(8)
在計(jì)算機(jī)圖形學(xué)中,一般使用模型視圖投影矩陣來進(jìn)行基本渲染管線的坐標(biāo)變化,而在完成模型矩陣變換后,為了可以進(jìn)行反射矩陣的變換.由世界坐標(biāo)系轉(zhuǎn)換到攝像機(jī)(視點(diǎn))坐標(biāo)系的過程中,對(duì)攝像機(jī)的V矩陣修改如下:
V=V·M
(9)
標(biāo)準(zhǔn)的鏡面反射,可以在海平面上獲得較好的光學(xué)反射效果.但與真實(shí)環(huán)境相比,這種反射紋理的運(yùn)動(dòng)并沒有遵循物理客觀規(guī)律.例如,物體的反射倒影只是進(jìn)行與物體大小一致的反射投影,并沒有考慮日光對(duì)倒影的拉伸影響.所以,這里對(duì)標(biāo)準(zhǔn)的鏡面反射成像過程進(jìn)行修改,獲得可控的反射圖像紋理,如圖3(b)所示.與圖3(a)相比,原虛像Q′點(diǎn)發(fā)生了偏移,角度為θ,此時(shí)所渲染的虛像點(diǎn)為Q″.
在此基礎(chǔ)上,為賦予偏移角度θ更加實(shí)際的意義,與太陽運(yùn)動(dòng)(時(shí)間變化)等因素結(jié)合起來,本文將太陽的運(yùn)動(dòng)位置,以角度θ′進(jìn)行具體量化,引申為一個(gè)控制因子,體現(xiàn)時(shí)間變化對(duì)海面倒影的影響.故在標(biāo)準(zhǔn)的反射矩陣M中引入這個(gè)控制因素,獲得修改后的矩陣M′如下:
(10)
相比標(biāo)準(zhǔn)反射矩陣M,在矩陣M′中,僅僅加入角度θ′參數(shù),對(duì)倒影的渲染速度影響較小,但卻增加了對(duì)倒影生成過程的可控性,體現(xiàn)太陽位置對(duì)海面物體倒影的影響,較為真實(shí)地模擬出一天中海面倒影不斷變化的景象.
將修改后的矩陣作用于物體紋理,建立倒影與太陽位置的聯(lián)系,實(shí)現(xiàn)倒影隨時(shí)間變化而偏移的自然現(xiàn)象.然而在物體紋理反射的過程中,并不是所有的紋理都需要被渲染,只需保留反射平面上的物體紋理即可,但隨著矩陣M′中θ′的變化,攝像機(jī)V矩陣所確定的反射平面發(fā)生偏移,導(dǎo)致紋理在某個(gè)方向上被過度裁剪.
考慮到紋理裁剪的不正確因素在于反射平面的改變,故采用一種重定向反射平面的策略來消除這種影響.如下:
(11)
其中,p,n分別代表海平面的位置和法線,兩者分別在矩陣M和M′作用下,得到不同的反射平面R.上述公式類似兩個(gè)變量的替換,借助中間臨時(shí)變量t,保存修改前的反射平面變量,即可完成反射平面R的重定向.
實(shí)驗(yàn)在windows 7操作系統(tǒng),Unity3D Pro平臺(tái)下進(jìn)行,硬件系統(tǒng)為:四核 Intel Core i7-4790,8GB RAM,AMD Radeon R7 250顯存2048MB.同時(shí)海面分辨率默認(rèn)設(shè)置為2048×1024,滿足大規(guī)模海面精細(xì)網(wǎng)格的需求.
圖4 不同天氣條件下反射效果對(duì)比圖Fig.4 Reflection effects contrast in different weather
圖4展現(xiàn)了不同天氣條件下的海洋光學(xué)效果,圖4(a)-圖4(c)依次是晴天、傍晚和陰天時(shí)的渲染景象,均采用海洋BRDF模型,與圖4(d)文獻(xiàn)[4]效果比較,海水色彩和波浪的運(yùn)動(dòng)狀態(tài)更接近于真實(shí),天氣變化的多樣性也在場(chǎng)景中得到體現(xiàn),海面的反射光學(xué)效果更加自然,畫面更為逼真.
圖5 反射投影時(shí)的過度裁剪圖Fig.5 Excess cropping when reflecting prokections
圖6 修正后船只不同時(shí)刻倒影圖Fig.6 Ship reflection graphs at different times ofter the correction
圖5展示了反射投影時(shí)的過度裁剪現(xiàn)象,圖5(a)-圖5(d)為4種逐漸加深的裁剪結(jié)果.因未對(duì)反射平面進(jìn)行約束,反射矩陣中的θ′隨著太陽位置變化而變化,導(dǎo)致反射平面發(fā)生偏移,對(duì)倒影進(jìn)行不合理的裁剪.通過重定向反射平面,問題得到解決,實(shí)驗(yàn)效果如圖6所示.
與圖5相比,圖6為重定向反射平面后,船只在不同時(shí)刻正確倒影的效果圖.圖6(a)到圖6(e)分別展現(xiàn)了一天中五個(gè)時(shí)刻,倒影隨太陽(時(shí)間)變化而傾斜的景象,不同時(shí)刻對(duì)應(yīng)不同的傾斜程度,較為真實(shí)地模擬了反射倒影受環(huán)境特別是日光影響而產(chǎn)生的拉伸效果,圖6(f)中,輪船倒影呈現(xiàn)靜止?fàn)顟B(tài),倒影較不明顯,具有一定的局限性.
圖7 真實(shí)輪船倒影對(duì)比圖Fig.7 Contrast of real ship reflection
圖7是渲染的輪船倒影與真實(shí)圖片的對(duì)比,可以看出兩者效果較為接近,證明本文的反射模擬方法較為可靠.而表1
表1 與文獻(xiàn)[6]的渲染方法對(duì)比Table 1 Contrast with the rendering method of literature[6]
則是與文獻(xiàn)[3]渲染方法的對(duì)比,在同等網(wǎng)格下,本文在保證實(shí)時(shí)性的同時(shí),實(shí)現(xiàn)了倒影可控,效果上更加完善.
針對(duì)目前海洋場(chǎng)景在海面反射光學(xué)效果上真實(shí)感有所缺失的問題,本文提出一種基于渲染到紋理(RTT)和投影反射矩陣的改進(jìn)方法,用來完善海面倒影隨時(shí)間(太陽位置)變化而變化的景象.而對(duì)投影網(wǎng)格和波浪模型的選擇,消除了Phillips頻譜波浪運(yùn)動(dòng)單一性的問題.與此同時(shí),我們引入海洋BRDF模型,較好地對(duì)日光以及天空的海面反射部分進(jìn)行了計(jì)算,繪制結(jié)果十分真實(shí).隨后在標(biāo)準(zhǔn)的投影反射矩陣的基礎(chǔ)上,引入控制參數(shù),對(duì)矩陣進(jìn)行修改,并以此作用于獲得的海面物體紋理,從而真實(shí)地模擬出倒影在一天中隨時(shí)間不斷變化的景象.其中,為了避免出現(xiàn)反射紋理被過度裁剪的現(xiàn)象,在進(jìn)行投影反射時(shí),重定向反射平面,問題得到解決.通過與文獻(xiàn)[4-6]繪制結(jié)果的對(duì)比和最后的數(shù)據(jù)分析,也表明了本文模擬方法具有一定的真實(shí)感和實(shí)時(shí)性,適用于動(dòng)態(tài)倒影的渲染場(chǎng)景.在未來工作中,將繼續(xù)研究海洋場(chǎng)景中多樣的光學(xué)效果,包括水下折射,次表面散射以及海面海市蜃樓等自然景觀,完善海水色彩細(xì)節(jié),進(jìn)一步在海洋光照方面做有益探索.