?

時空驅動的大規模真實感海洋場景實時渲染

2019-02-20 08:34張浩然周升騰
計算機研究與發展 2019年2期
關鍵詞:海面海浪光照

李 穎 唐 勇 張浩然 劉 丁 周升騰 王 賽

(燕山大學信息科學與工程學院 河北秦皇島 066004)(河北省計算機虛擬技術與系統集成重點實驗室(燕山大學) 河北秦皇島 066004)

海洋是地球生命的搖籃,是人類賴以生存和發展的重要空間,對海洋進行實時仿真,在數字海洋、影視娛樂等領域有著重要意義.近年來,隨著計算機硬件水平的不斷提高,真實感海洋場景模擬開始得到人們的廣泛關注.

若想實現照片級別的海洋場景模擬,需要滿足3個條件:大氣(天空)條件、波浪建模和光線傳播.目前大規模海洋場景中的天空模擬常采用天空盒來實現,真實感和靈活性受到限制;太陽和月亮等天體,常采用橢圓形軌道近似,難以反映其真實運動趨勢;海浪建模中常用P-M(Pierson-Moscowitz)譜、Phillips譜等結合快速傅里葉逆變換(inverse fast Fourier transform, IFFT)進行海浪模擬,難以真實和全面地反映海浪運動;在海洋光照方面則側重于模擬海洋表面的反射和折射,對于海洋內部散射導致海洋光照效果發生變化的研究則鮮有涉及.而將3個方面作為整體進行研究的成果則更顯匱乏.

針對上述問題,提出一種時空驅動的大規模真實感海洋場景實時渲染方法,將時空驅動的天體運動變化、波浪建模和大氣、海洋中的光線傳播三者作為一個整體展開研究.首先,基于簡化的天文模型計算太陽和月亮的位置,真實反映其運動規律;其次,引入風力驅動的統一方向譜作為海浪譜,彌補現有圖形學領域上采用的傳統海浪譜繪制海浪在短波繪制效果方面的不足;最后,建立包括大氣散射、海面反射和海下次表面散射在內的海面綜合光照渲染模型,真實展現不同時空條件驅動下的大規模海洋場景.

1 相關工作

通過計算機圖形學領域研究者的不懈努力,在真實感天空場景、波浪建模以及海洋光照模擬等方向已經涌現出不少優秀的研究成果.

2001年,克萊姆森大學的Tessendorf[1]基于Phillips頻譜生成海浪,并實現了海面反射等基本的海洋光學效果,但是其海面采用矩形網格塊拼接而成,并且采用天空盒作為天空背景,導致視覺效果不佳.同年,猶他大學的Premo?e等人[2]采用JONSWAP(joint north sea wave project)譜生成海浪,簡化求解輻射度方程和光學參數的估計,實現多種類型水體效果,但是沒有表現時空驅動條件對于海洋場景的影響.2003年Iwasaki等人[3]采用光能輻射在水體中的二次輻射理論,模擬出不同天氣條件下的水體顏色,但其光能計算非常復雜,實時性差.2007年北京大學李起成等人[4]提出了一種包括天空球、大氣系統和海浪模型在內的完整海洋環境模型實時渲染方法,但是該方法中的海洋模型采用了簡單的正弦波構建,具有明顯的周期性特征.2010年,Bruneton等人[5]結合幾何體法線以及雙向反射分布函數(bidirectional reflectance distribution function, BRDF),實時展示了不同光照下的海洋場景,但由于采用次擺線和P-M譜進行波浪的建模,海浪的物理運動特性并沒有得到保證.2011年天津大學劉世光等人[6]提出一種基于物理的渾濁水體真實感光照模擬方法,但是未涉及到時空條件變化對于水體光照的影響.2013年浙江大學彭群生等人[7]考慮到大氣折射的影響,繪制出不同時間、季節下海面和陸地上的真實感天空場景,但是基于物理的大氣折射模擬難以適應實時模擬的需求.2015年Zhang[8]通過預先計算光線在大氣層中的折射數據,再通過光線追蹤的方法實現太陽在海平線處的變形效果.同年,谷歌公司的Horvath[9]利用TMA①Texel (Texel storm),MARSEN(marine remote sensing experiment at north sea),ARSLOE(Atlantic ocean remote sensing land-ocean experiment)(Texel-MARSEN-ARSLOE)譜對經典的Tessendorf波模型進行了擴展,方便藝術家們設計涌浪等海洋場景,但是沒有涉及光源變化對海洋光照的影響.2016年燕山大學唐勇等人[10]將光強、光源顏色和位置變化引入海水顏色計算中,實現了一天之內不同時刻島嶼周圍海水的色彩變化,但只能模擬具有一定幅度海浪的海面,具有較大的局限性.同年,中國海洋大學的Ma等人[11]基于生物光學模型提出一個照片級的海水顏色實時渲染算法,但是未涉及時空條件對海水效果的影響.在Horvath工作的基礎上,2016年和2017年迪士尼動畫工作室的研發人員[12-13]分別在SIGGRAPH Asia和SIGGRAPH上發表研究成果,他們依托于Maya開發了3個給海洋專用的Rigs,使藝術家可以輕松描繪和設定各種海洋類型,該技術成功應用于迪士尼動畫電影《海洋奇緣》中的海洋場景特效制作.2017年MPC的研究者[14]依托于Bifrost流體解算模擬器和Houdini三維計算機圖形軟件,成功制作出《加勒比海盜5》中的海洋場景.以上3篇文獻中的成果均側重于為影視特效服務,海洋場景精美,但專業性強,耗時巨大,非普通用戶和PC機所能承受,同時上述成果也沒有涉及精確的時空條件對于海洋場景的影響.此外在Unreal Engine和Unity3d等虛擬圖形引擎上也涌現出不少真實感天氣模擬系統,涉及晴天、雨雪等天氣現象的簡單模擬,但大多限于某個陸地或小范圍水面晝夜交替現象模擬.綜上所述,目前對于精確的時間和空間條件驅動下大規模海洋場景的研究尚不多見.

2 天體及海浪繪制

2.1 天體繪制

Fig. 1 The process of drawing celestial bodies圖1 天體繪制流程

為更好展示太陽、月亮在天空中的運動狀態以及其運動導致的天空顏色的變化,采用天空球代替傳統的天空盒來生成天空背景,太陽和月亮采用球體建模,在天空中的位置則使用球面坐標高度角(altitude)和方位角(azimuth)描述.在此引入文獻[15]提出的簡化天文模型來計算天體的高度角和方位角,具體流程如圖1所示.

在進行坐標轉換計算時還需考慮觀察者所在位置的地理緯度和經度.月亮的位置計算比太陽略微復雜,其黃道球面坐標按照文獻[16]中的方法進行求解,后續步驟與太陽的位置計算類似.

2.2 海浪繪制

綜合考慮大規模海洋場景模擬的真實性和實時性,采用海浪譜結合IFFT方法進行海浪建模.這里引入文獻[17]中提出的風力驅動長短波統一的方向譜進行海浪繪制,譜定義如式(1)所示:

其中,k為波數,θ為波相對于風的方向夾角,Bl和Bh分別為長波和短波的曲率譜,Δ(k)為逆風-側風比參數,可以通過文獻[17]中遞推公式求得.該譜的關鍵特征是在長波區域和短波區域都具有相似描述,譜的方向傳播函數關于風向對稱,具有波數和風速的依賴特性,且該譜長波部分是根據JONSWAP譜推導而來,因此蘊含風距參數.

表1對本文采用的長短波統一譜與P-M譜、Phillips譜、JONSWAP譜和TMA譜做了對比.其中P-M譜只蘊含風速參數,Phillips譜增加了風向參數,JONSWAP譜和TMA譜在Phillips譜基礎上引入風距參數,但其均為典型的長波譜,而長短波統一譜在涵蓋了風速、風向、風距參數的基礎上,還有效彌補了上述4種譜在短波繪制效果上的不足.

Table 1 Comparison of Ocean Spectrums表1 海浪譜對比

3 海面綜合光照渲染模型

海洋系統光照情況復雜,大氣、海洋表面以及海下的光線傳播均能影響到海洋最終的光照效果,因此構建如圖2所示的包括大氣散射、海洋表面反射、海洋內部散射在內的海面綜合光照渲染模型.

Fig. 2 The comprehensive illumination model of the ocean圖2 海面綜合光照渲染模型

3.1 大氣散射模擬

太陽光在穿越大氣時會發生散射和吸收,從而使天空與太陽在全天不同時刻呈現出不同顏色.大氣散射可以分為瑞利散射和米氏散射,晴朗的天空白天大部分時間呈現出蔚藍色;地平線處顏色偏白,甚至出現不透明的灰白色;夜晚天空顏色接近藍黑色,這些顏色的變化均由瑞利散射造成.而米氏散射引起的典型現象是太陽周圍天空顏色比其他地方明亮,從中心到四周擴散遞減直至與太陽垂直方向的天空.完全基于物理的模擬大氣散射現象,計算量過于龐大,不適于實時交互應用的需要.

為快速有效實現大氣散射引起的天空顏色變化,采用基于顏色漸變紋理疊加簡化散射方程的方法進行天空顏色的渲染.首先,根據日常觀察到的晴天天空顏色特征,生成如圖3所示的天空顏色漸變紋理,該紋理被均分為12段,最左邊、中間和最右邊分別為凌晨0點、早上(傍晚)6點和正午12點時的天空顏色.其次,根據當前時間和天空球頂點位置,對顏色漸變紋理進行采樣和插值計算,最終,得到天空球網格頂點隨時間變化的基本顏色漸變序列.

Fig. 3 The gradient texture of sky color 圖3 天空顏色漸變紋理

為實現因吸收和米氏散射引起的天空顏色特征,加入對光線吸收和米氏散射效果的近似模擬,

C=(1-fa)(1-fex)ΦM(θ)Csun,

(2)

其中,fa為大氣吸收系數,fex為散射中的衰減系數,ΦM(θ)為米氏散射的相位函數,Csun為太陽本體顏色,通過獲取當前時間對太陽本體顏色漸變紋理進行采樣得到,太陽顏色漸變紋理如圖4所示,其劃分同天空顏色漸變紋理.將計算得到的顏色結果同之前采樣顏色漸變紋理的結果疊加得到最終的天空顏色.

Fig. 4 The gradient texture of sun color 圖4 太陽本體顏色漸變紋理

3.2 海洋表面反射計算

到達海面的光線,一部分在海洋表面發生反射,采用BRDF求解.借鑒Bruneton等人[5]提出的海面微面元BRDF模型,從觀察者和光源方向均能看見微面元的概率為

(4)

(5)

其中,h為v和l之間的半向量,Fr為菲涅爾系數,可通過式(6)近似求得:

Fr(v·h)≈R+(1-R)(1-v·h)5,

(6)

則反射太陽光的輻射度可計算為

(7)

其中,Lsun為太陽輻射度,Ωsun為太陽立體角.

反射天空光的輻射度計算采用對3.1節中生成的天空各向異性貼圖進行直接采樣,并在采樣結果中加入人工校正參數,具體如下:

Isky=tex2Dlod(L,u(v,0)fdistort)ftint,

(8)

其中,L為天空環境紋理貼圖,u為紋理坐標,fdistort是紋理坐標變形參數,ftint參數用來調整紋理采樣后的最終顏色效果.與文獻[5]中對天空紋理進行梯度采樣之后乘以菲涅爾系數的做法相比,渲染結果相差不大,但對紋理坐標的簡化計算,提升了采樣速度.

3.3 海洋次表面散射計算

到達海面的光線除了在海洋表面發生反射,還有部分光線進入海水內部,經過吸收和散射后再從海水表面射出,這種現象稱為海洋的次表面散射.次表面散射通常用雙向表面散射反射分布函數(bidirectional surface scattering reflectance distribution function, BSSRDF)來描述,基于物理的求解BSSRDF可以取得高逼真度的繪制效果[18-21],但難以滿足實時繪制的需要;基于預計算的求解方法[22-24]可以實現實時繪制,但是由于預處理時間較長,較難應用于動態大規模場景,因此在實時交互的場景繪制中一般采用近似模擬方法[25-26],但是也多集中于模擬皮膚、玉石、牛奶等材質,對于海水的次表面散射的模擬,尚不多見.

海水是一種高度散射的介質,尤其在深海中多重散射占主導地位,即使原始光源分布和相位函數呈高度各向異性,經過多次散射后光線在海水中的分布也均趨于各向同性.根據深海海水的這種特性,考慮忽略掉耗時巨大效果又不甚明顯的海水單次散射計算,對于海水中的多重散射則采用雙極點光源漫反射近似法求解,示意圖如圖5所示:

Fig. 5 The diffuse approximation due to the dipole source圖5 雙極點光源漫反射近似

圖5中,置于海面下zr處的為正的真實點光源,海面上zv處的為負的虛擬點光源,r為出射點xo與入射點xi之間的距離,ωi和ωo分別為入射光和出射光方向.

在這種情況下,通過文獻[18]中的公式推導可得漫反射公式

(9)

加入入射和出射光線在海面處的菲涅爾透射系數,可得BSSRDF的漫反射項

(10)

其中,Ft為菲涅爾透射系數,則海面的次表面輻射度可計算為

(11)

考慮到并不是海面上所有點都會產生次表面散射效果,為減少雙重積分帶來的計算代價,對于海面上任一點xi,本文根據其法線與觀察者視線方向和太陽光方向的位置關系計算位置參數s,當滿足閾值要求時才對其進行積分求解.

綜合3.2節計算求得的反射太陽光和天空光輻射度,最終海面的輻射度為Isun+Isky+Isea.

4 實驗結果及分析

為驗證本文方法的有效性,基于Unity3D圖形引擎,通過C#腳本語言和Cg著色語言,設計多個實驗實現時空驅動的大規模真實感海洋場景實時繪制,并在多個硬件平臺下進行了驗證與對比.

表2列舉了不同風速下采用不同海浪譜繪制海浪對比效果.第2列為文獻[5]中采用次擺線波采樣P-M譜方法繪制的海浪,可以看出其海浪在形態上過于規整,視覺效果不佳;第3列為采用Phillips譜繪制的海浪,可見Phillips譜更適于模擬波濤洶涌的海面;第4列為本文方法模擬的海浪,由對比圖可知本文方法繪制的海浪在平靜和波濤洶涌的狀態下均有良好表現.

圖6為文獻[5]與本文方法模擬的光照效果對比圖,從左到右依次為只添加了反射太陽光的效果、只添加了反射天空光的效果、只添加了海洋散射光的效果和三者疊加之后的綜合光照效果圖.在反射太陽光模擬上,兩者在模擬方法上并無本質區別,但是由于海浪建模方法的不同,導致模擬效果不同,可以看出文獻[5]有大片的高光效果,改變文獻[5]中的波彌散關系和波傳播方向參數,高光現象有所減弱,但仍然很明顯,與現實生活中陽光照射在海面上產生波光粼粼的效果具有一定差距,而本文模擬的效果弱化了高光效果,更偏重于波光粼粼的效果模擬.在反射天空光的模擬上,本文與文獻[5]的效果相差不大.在海洋散射光的模擬上,文獻[5]在計算海洋的散射光時假設海面的散射輻射度同太陽光輻射度和天空光輻射度之和成正比,其值為到達海面的輻射度與菲涅爾透射系數的乘積,所以只添加海洋散射光效果的海面是純色的,而本文的方法進行了海洋次表面散射光的輻射度計算,因此海洋表面產生了顏色差異.綜合3種光線最終效果,本文的方法在視覺效果上更為真實.

Table 2 Comparison of Waves with Different Wind Speeds表2 不同風速條件下海浪繪制效果對比

Fig. 6 Comparison of ocean lighting圖6 海洋光照對比效果圖

圖7為次表面散射效果圖,圖7(a)為真實照片中的次表面散射效果,海浪呈現半透明效果;圖7(b)為文獻[11]中模擬的結果,半透明效果不明顯;圖7(c)為本文模擬的只有BRDF的海面,幾乎沒有半透明效果;圖7(d)為本文模擬的添加了BRDF和BSSRDF的海面效果,更接近真實照片.

Fig. 7 The simulation of subsurface scattering effect圖7 次表面散射效果模擬

Fig. 8 Subsurface scattering effect with different parameters圖8 不同參數條件下次表面散射效果圖

圖8為在不同參數和不同光線散射次數條件下模擬的海洋次表面散射效果圖,圖8(a)為30次光線散射次數下分別采用參數1、參數2和參數3模擬的效果,圖8(b)為100次光線散射次數下分別采用參數1、參數2和參數3模擬的效果,具體參數設置詳見表3.由效果圖可知散射30次和散射100次,在海洋次表面散射模擬視覺效果方面并未明顯提升,但幀速率影響則相當明顯,綜合考慮模擬效果和效率,本文在后續實驗中將光線散射次數定為30次.

Table 3 Parameters of Subsurface Scattering表3 次表面散射參數

表3中,σa,σs分別為吸收和散射系數,Φ為單位表面受到的輻照能,g為散射角的平均余弦值,η為相對折射率.

Fig. 9 Different states of the sun and moon driven by time and space圖9 時空驅動的太陽月亮不同狀態效果圖

表4展示了本文模擬的黎明、上午和夜晚海面光照效果與文獻[5]和實際拍攝照片的對比圖.黎明時由于大氣散射作用,海平面及太陽附近天空會呈現出橙紅色;上午陽光照射到海面上產生波光粼粼的效果,而不是大片的高光效果;晚上月光照射下的海面也會呈現出波光粼粼的效果,而不是文獻[5]中模擬的漆黑一片.文獻[5]在模擬海面光照方面堪稱經典之作,但經效果圖和真實拍攝照片對比,本文模擬的效果要優于文獻[5],更具有真實感.

圖9展示了不同時空條件下太陽和月亮的不同狀態以及引起的海面光照變化效果.在相同時間不同緯度情況下,緯度越低,離太陽直射點越近,太陽越早升起;而相同緯度條件下,在夏至前,每天日出時間都會提前,圖9(a)~(c)很好地再現了這一現象.而圖9(d)~(f)則較好地渲染了不同月相情況以及月亮在白天的消隱狀態,符合客觀事實.

Table 4 Lighting Effect at Dawn, Morning and Night表4 黎明、上午和夜晚海面光照效果圖

為檢測時空驅動下大規模海洋場景繪制方法的可行性與有效性,本文在多個平臺上進行了實驗驗證,硬件參數如表5所示.

在平臺1上改變次表面散射模擬中的散射次數,分別采用天空盒作為天空背景和采用時空驅動天空繪制天空背景,得到幀速率如圖10所示.由圖10可知,隨著散射次數的增加,幀速率下降明顯,散射100次,幀速率只有40 fs左右.同時,因時空驅動天空繪制方法采用了天空球進行天空建模,太陽和月亮也采用了球體建模,因此網格數的增加,導致幀速率略有下降,但同散射次數相比,時空驅動天空繪制方法對幀速率的影響是次要的.

Table 5 Frame Rates of Large Scale Ocean Scenes on Different Platforms(The Resolution is 1024×768)表5 不同平臺上大規模海洋場景模擬幀速率(分辨率為1024×768)

Fig. 10 Frame rate of different scattering times圖10 不同散射次數下繪制幀速率

同樣地,在平臺1上,改變分辨率和渲染三角網格數進行實驗驗證,由圖11可見隨分辨率和網格數的增加,幀速率略有降低,但最低仍能保持在56 fs,完全可以滿足實時應用需求.

在4個平臺上分別在天空盒背景和時空驅動天空背景下驗證只有BRDF模擬效果和同時添加了BRDF和BSSRDF效果的實驗效率,平均幀速率如表5中數據所示.綜合圖10、圖11以及表5中的數據可以得出,本文提出的時空驅動的天空繪制方法和海洋表面次表面散射模型的繪制效率較高,完全符合實時模擬要求.

Fig. 11 Frame rates of different resolutions and different mesh numbers圖11 不同分辨率不同網格數條件下繪制幀速率

表6分別在是否時空驅動、海浪繪制效果、光照渲染方法以及是否實時4個方面對文獻[5,7,11-12,14]與本文方法做了對比,其中文獻[7]和[11]未展示多種狀態下的海浪效果,在光照渲染方面,文獻[7]和[14]并未明確提及光照方法. 綜合表中數據,本文方法涵蓋內容更為全面,更能真實展現大規模海洋場景,并且滿足實時應用的需要.

Table 6 Comparisons of Our Method and Other Literatures表6 本文方法與其他文獻方法對比

5 結 語

本文成功實現在精確的時空驅動條件下大規模真實感海洋場景實時渲染.采用簡化天文模型代替原有的橢圓軌道計算天體運行位置;引入風力驅動的統一方向譜進行海浪建模,彌補現有海浪譜在短波繪制效果上的不足;將大氣、海面和海下綜合考慮,構建海面綜合光照渲染模型,真實展現不同條件下海面光照效果.實驗表明,所提出的方法能夠實時逼真再現時空驅動條件下的大規模真實感海洋場景.未來將考慮加入云、霧等天空元素,進一步增強海洋場景的真實性.

猜你喜歡
海面海浪光照
肉種雞的光照不應性對養殖生產的不良影響分析
丫丫和小海浪
海浪
海面床,輕輕搖
樊應舉
第六章 邂逅“胖胖號”
隱蔽的力量
暗礁
水禽舍的光照及其控制
蛋鴨的光照管理
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合