文乙鋼++李丹丹++高學(xué)民
摘要:在過去的實時渲染及VR視覺構(gòu)建中,常采用Lambert和Phong的光照模型,物體材質(zhì)的表現(xiàn)和渲染結(jié)果主要依靠藝術(shù)家們的直覺和藝術(shù)感知能力,而研究基于物理的著色與材質(zhì)(Physicallybased Shading and Material)方法,以光線傳播的真實過程、物體透明介質(zhì)和次表面、微表面以及菲涅爾反射等為代表,通過真實的物理學(xué)參數(shù)模擬各種材質(zhì)反射和散射光線的屬性,進(jìn)而更加真實地模擬光線與物體表面交互的自然行為和實際情況,最終使VR的視覺構(gòu)建結(jié)果極度真實。基于Unreal Engine的VR視覺構(gòu)造為虛擬現(xiàn)實技術(shù)使用人群提供了一種更新更易操作的實踐方法,極大豐富了VR虛擬現(xiàn)實的表現(xiàn)手法與設(shè)計思路。
關(guān)鍵詞:虛擬現(xiàn)實;Unreal Engine;視覺構(gòu)造
DOIDOI:10.11907/rjdk.171778
中圖分類號:TP301文獻(xiàn)標(biāo)識碼:A文章編號:16727800(2017)010000804
0引言
傳統(tǒng)的定幀景觀漫游動畫或者宣傳片已為觀看者預(yù)設(shè)好了攝像機(jī)路徑,通過傳統(tǒng)的預(yù)渲染方式制作出較為固定死板的視頻媒體。而基于Unreal Engine的VR景觀展現(xiàn)方式革新了以往的景觀虛擬仿真表現(xiàn)手法與設(shè)計思路,通過基于特定算法的實時渲染、光照技術(shù)、基于物理的材質(zhì)、GPU粒子模擬等技術(shù)手段構(gòu)建出一個龐大而真實的虛擬交互世界,體驗者在該空間內(nèi)可以通過自己的想法和移動路徑控制視角攝像機(jī),對景觀世界中的每一個角落、每一座建筑甚至是每一顆植被進(jìn)行自由實時的觀覽體驗,在頭戴式顯示器、陀螺儀、交互傳感設(shè)備的輔助下“真實地”走進(jìn)虛擬景觀世界,體驗現(xiàn)實空間內(nèi)發(fā)生的行為和看不到的景色,感受自然世界的晝夜交替、云卷云舒,從而產(chǎn)生強(qiáng)大的視覺沉浸效果與交互體驗。
1視覺構(gòu)造手段
Unreal Engine 4(UE4,虛幻4引擎)是一款全球頂級的三維游戲開發(fā)引擎和虛擬現(xiàn)實引擎,是Epic Game公司以及來自全球數(shù)百上千位計算機(jī)工程師、設(shè)計師以及藝術(shù)家們的心血之作。Unreal Engine 4具有先進(jìn)的實時渲染管線,高效完整的開發(fā)設(shè)計工具以及大量模塊化系統(tǒng),給整個虛擬現(xiàn)實開發(fā)提供了理想的解決方案和視覺構(gòu)造手段。在VR視覺構(gòu)建中主要有以下五大關(guān)鍵方法:
(1)延遲著色。不同于前向著色,延遲著色僅對最終顯示的圖像片段進(jìn)行著色,對于材質(zhì)的渲染過程而言,材質(zhì)將其屬性寫入GBuffers,包括位置、面法線、基礎(chǔ)顏色、粗糙度、金屬度等,在光照階段則讀取材質(zhì)每個像素的屬性,并對它們執(zhí)行光照處理[2],在保證性能的情況下實現(xiàn)大量多重動態(tài)光源。
(2)基于物理的材質(zhì)。在以往的材質(zhì)工作流程中,普遍使用Lambert和Phong兩種光照模型,材質(zhì)藝術(shù)家們往往憑直覺和藝術(shù)感知能力調(diào)和材質(zhì)參數(shù),以模擬現(xiàn)實材質(zhì)讓人們感覺真實。但基于物理的著色與材質(zhì)模型,通過真實的物理學(xué)參數(shù),能夠更加真實地模擬光線傳播時與物體表面交互的自然行為和實際情況。
(3)Lightmass全局照明。全局照明的真實模擬在很大程度上決定了整體畫面的真實感和質(zhì)感,而實現(xiàn)完全的實時全局照明一直是一項巨大挑戰(zhàn)。Lightmass通過烘培光照,創(chuàng)建出光照貼圖,該光照貼圖含有間接漫反射和區(qū)域陰影等復(fù)雜的光照交互數(shù)據(jù),從而實現(xiàn)對一部分靜態(tài)光源和固定光照效果的預(yù)計算[2],最終達(dá)到模擬真實全局照明效果的目的。
(4)GPU粒子模擬。在以往的粒子工作流程中,先由CPU進(jìn)行粒子的模擬和物理運算,再交由GPU渲染成像素。但由于CPU通常要進(jìn)行大量的其它計算,這樣的粒子生成過程不僅占耗了CPU資源,并且在進(jìn)行數(shù)據(jù)傳遞時增加了時延。因此,將粒子的物理運算和模擬過程轉(zhuǎn)移到GPU上,優(yōu)化的算法使得GPU粒子的生成異常高效,并且可由GPU生成矢量場,對場內(nèi)的粒子運動產(chǎn)生影響,從而在VR實時圖像中產(chǎn)生強(qiáng)大而高效的視覺特效。
(5)視覺后期處理。大量圖像后期處理、全局環(huán)境效果、電影化效果和電影級鏡頭效果的設(shè)計與應(yīng)用是保證VR視覺與交互體驗的重要過程,也會直接影響VR視覺畫面表現(xiàn)的真實性和沉浸感,包括Gamma調(diào)節(jié)與畫面調(diào)色、后期全局照明、環(huán)境光遮蔽、屏幕空間反射、反鋸齒、自動曝光、鏡頭光暈、矢量景深等。
2核心原理與關(guān)鍵算法
五大關(guān)鍵方法中延遲著色與視覺后期處理主要倚靠藝術(shù)理論的提升,在此不做詳細(xì)描述,本文將對其它3種視覺構(gòu)建方法進(jìn)行深入研究。
最早的基于物理的渲染(PhysicallyBased Rendering)模型由迪士尼公司在2012年的Siggraph圖形學(xué)大會上提出,名為Principled BRDF[1],主要應(yīng)用在影視預(yù)渲染圖像上。而在過去的實時渲染與VR視覺構(gòu)建中,往往采用Lambert和Phong的光照模型[3],物體材質(zhì)的表現(xiàn)和渲染結(jié)果依靠藝術(shù)家們的直覺和藝術(shù)感知能力。目前基于物理的著色與材質(zhì)方法是基于數(shù)學(xué)模型和物理模型的,真實的物理學(xué)參數(shù)模擬各種材質(zhì)反射和散射光線的屬性,進(jìn)而更加真實地模擬光線與物體表面交互的自然行為和實際情況,最終使VR的視覺構(gòu)建結(jié)果極度真實。
2.1次表面散射
在真實的自然世界中,光線與物體表面材質(zhì)的交互過程可分為兩種情況:發(fā)生反射或者發(fā)生散射。
(鏡面)反射是指當(dāng)光線到達(dá)表面邊界時,光線被反射出去,方向是在法線另一邊相反方向。該光線行為就如同是向著地面或者墻面扔出一個球體,球會以一個相反的角度反射出去,而不會被地面或墻面吸進(jìn)去,一個光滑的表面如同一個鏡面。然而并不是所有的光線都會被反射出去,往往有一部分光線會發(fā)生散射。此時,物體表面的情況又可以分為兩種,即存在或不存在透明介質(zhì),當(dāng)介質(zhì)透明時視為存在次表面,當(dāng)介質(zhì)不透明時視為表面和次表面的距離差值極小而為0的情況,則進(jìn)行表面漫反射。endprint
當(dāng)物體表面存在透明介質(zhì)時,一部分光線會進(jìn)入物體表面之下,發(fā)生折射,折射后的光線被吸收轉(zhuǎn)化為熱能,或者發(fā)生離散,如皮膚、翡翠、牛奶、蠟燭等,其表面和次表面有較大的距離差值,也就存在較大的光線散射距離,此時會發(fā)生次表面散射情況。這也是基于物理的著色和材質(zhì)中重要的一個模擬特性,圖1給出了兩種光線行為的示意圖。
圖1光線的反射與散射
次表面散射現(xiàn)象比一般表面反射或散射現(xiàn)象的模擬要復(fù)雜許多,光線不僅僅會在物體表面發(fā)生散射,而是折射到物體的內(nèi)部,在物體內(nèi)部的半透明介質(zhì)中發(fā)生若干次散射,直至從物體表面的某一點再次出射。因此,對于存在次表面散射性質(zhì)的物體,光線的出射位置和入射位置不同,上文提及的BSDF模型即雙向散射分布函數(shù)僅能用于描述物體表面某一點的散射性質(zhì),而無法描述次表面散射現(xiàn)象。BSSRDF(Bidirectional Surface Scattering Reflectance Distribution Function)從方向和面積上同時進(jìn)行積分求解,描述各方向上入射到物體表面光線的反射強(qiáng)度按反射方向分布的情形,如圖2所示。
圖2次表面散射
對于BRDF而言,每一次反射光線的計算是在光線交點的法線半球上的球面積分;而對于BSSRDF而言,每一次反射在物體表面上每一個位置的光線都要做一次半球面積分,成為一個嵌套積分:
Lo(po,ωo)=∫A∫ξ(n)S(po,ωo,pi,ωi)Li(pi,ωi)cosθidωidA
其中,BSSRDF的定義是:
S(po,ωo,pi,ωi)=1πFt(ηo,ωo)Rd(‖pi-po‖)Ft(ηi,ωi)
式中包括光線入射和出射物體表面材質(zhì)時的折射菲涅爾項Ft,一個歸一化的1π項,以及一個漫反射項Rd。其中,Rd只接受一個標(biāo)量參數(shù),此參數(shù)的意義是光線入射位置和初始位置的曼哈頓距離。BSSRDF將光線在物體半透明表面介質(zhì)中多次散射后剩余的能量用一個基于入射點和出射點之間距離的函數(shù)近似表達(dá),實時模擬基于物理的次表面散射效果。
2.2微表面
基于物理的著色和材質(zhì)中的高光項是基于微表面理論的,微表面是物體表面細(xì)微的不規(guī)則面,它所影響的是“粗糙度(Roughness)”這個參數(shù)。在真實的物理世界中,大多數(shù)物質(zhì)表面都存在非常小而細(xì)微的不規(guī)則形狀,比如凹槽、凸塊、缺口、裂痕等,這些都太小以至于眼睛無法看到,并且使用正常解析率的法線貼圖也無法表現(xiàn),但是這些小的微表面依舊會影響反射和散射,如圖3所示。
微表面細(xì)節(jié)對光線的影響在反射中很容易被觀察到,平行的入射光照射到粗糙的表面時,反射出來的光線發(fā)生了交叉,因為每一條光線遇到的微表面方向不同,就如同將球拋向墻面,如果墻面不是平整的,球會任意反彈,反彈的方向是不可預(yù)測的,同理光線反射后的角度也不一樣,且有的地方光線被擋住,有的地方會產(chǎn)生陰影,視覺上會產(chǎn)生模糊的反射。因此物體表面越粗糙,反射光線越交叉,看上去就會越模糊,這種微表面細(xì)節(jié)(粗糙度)對于任何材質(zhì)而言都非常重要,因為真實世界中的各種物體都會有微表面特征。
在UE4引擎的明暗著色器計算中引入微表面函數(shù)模型,將基于物理的著色中的高光項表示為:
fμfacet(l,v)=F(l,h)G(l,v,h)D(h)4(n·l)(n·v)
其中,向量l和v分別表示入射光和視角方向,向量h表示l和v之間的半角向量,F(xiàn)是h處的菲涅爾反射,G是與視角V朝向一致的微表面比例,D是微表面的分布函數(shù),分母是對被遮蔽光線的修正。
2.3菲涅爾反射
菲涅爾反射描述的是材質(zhì)的反射率和光線入射角的對應(yīng)關(guān)系,也即在物體表面出現(xiàn)不同角度上反射率不同的情況,光線入射角越大,反射率也會越強(qiáng)。因此,當(dāng)光線以一個擦著物體表面的角度入射比光線垂射到同一物體表面反射效果更加強(qiáng)烈,這就意味著表現(xiàn)了理想的菲涅爾效果的物體,在其邊緣將會有更加明亮的反射?;谖锢淼闹c材質(zhì)中,對傳統(tǒng)計算機(jī)圖形學(xué)中的菲涅爾方程進(jìn)行了一些修正,如圖4所示,其表現(xiàn)了從金屬材質(zhì)到非金屬材質(zhì)反射率隨光線入射角變化的關(guān)系曲線,入射角接近90°時,材質(zhì)反射率會迅速增大到1,故對于任何材質(zhì)的物體表面,在光線擦著表面極限入射時,材質(zhì)將具有完全的反射率。因此,在觀察一個平滑物體的邊緣時,應(yīng)該是一個完美的鏡面,任何物體以一個特定角度去觀察時都可以呈現(xiàn)一個完美的鏡面,在物理上的確如此。
圖4入射角變化曲線
3Lightmass全局照明
在基于Unreal Engine的VR視覺構(gòu)建中,全局照明(GI)模擬采用Lightmass烘培光照貼圖的方法進(jìn)行,通過預(yù)計算一部分靜態(tài)和固定光源的間接照明效果和區(qū)域陰影等復(fù)雜的光照交互數(shù)據(jù)生成光照貼圖,此過程將代替完全實時的GI計算,以達(dá)到全局優(yōu)化效果。
間接漫反射是GI中最主要也是最重要的表現(xiàn)部分,光線在運動過程中,物體表面材質(zhì)的漫反射因素將會影響各方向上漫射光線數(shù)量及光線顏色,間接漫反射是在所有方向上均勻地漫射入射光線,觀察方位和角度的不同對于觀察效果沒有影響。Lightmass同時會預(yù)計算詳細(xì)的間接陰影,以環(huán)境遮蔽為代表,環(huán)境遮蔽是從具有均勻光照的半球上獲得的間接陰影,被應(yīng)用到直接及間接光照上,同樣被烘培到光照貼圖中。
4GPU粒子模擬
通常在粒子的模擬生成流程中,先由中央處理器CPU進(jìn)行粒子的模擬及物理學(xué)運算,再將計算結(jié)果傳遞給顯卡GPU渲染成粒子像素。在實時渲染中影響和制約粒子系統(tǒng)效能的因素主要有兩個:粒子填充率即每幀可以生成的粒子數(shù)量,以及CPU和GPU之間的數(shù)據(jù)傳輸負(fù)載當(dāng)需求的粒子數(shù)目巨大,計算時間以及CPU和GPU之間的傳輸時間將變得很大,無法滿足實時渲染的幀率要求。
因此,在VR的視覺構(gòu)造方法中采用GPU進(jìn)行粒子的完全模擬與生成,即第一步利用GPU對粒子進(jìn)行動力學(xué)模擬運算,將計算結(jié)果保存到紋理中,頂點著色器會計算紋理坐標(biāo),將紋理坐標(biāo)傳入片元著色器進(jìn)行紋理采樣,片元著色器同時對粒子參數(shù)進(jìn)行動力學(xué)運算,計算結(jié)果作為下一步渲染到紋理的輸入,第二步以常規(guī)渲染管線渲染,將第一步的渲染結(jié)果渲染到默認(rèn)幀緩沖區(qū)中,完成粒子的繪制。GPU粒子的運作過程大大地提高了粒子系統(tǒng)的生成效率,傳統(tǒng)的CPU計算體系在一幀內(nèi)能完成數(shù)以千計的粒子,而在GPU上可以讓數(shù)以十萬計的粒子被計算并得到有效渲染,同時讓CPU能更好地去處理其它物理和動力學(xué)運算以及AI人工智能等工作,從而提高整體效能。endprint
5結(jié)語
本文對基于UE4引擎的VR視覺構(gòu)造關(guān)鍵方法的原理與核心算法模型進(jìn)行了研究,以基于物理的著色與材質(zhì)為主,包括Lightmass全局照明、GPU粒子模擬和視覺后期處理等一系列圖像技術(shù)與表現(xiàn)手段在很大程度上影響著VR視覺構(gòu)造的效果和效率。每一個關(guān)鍵方法都不是絕對完美和理想的,而是在快速的技術(shù)發(fā)展中不斷更迭,以滿足VR視覺表現(xiàn)中對實時渲染系統(tǒng)的更高要求。
參考文獻(xiàn)參考文獻(xiàn):
[1]BRENT BURLEY.Physicallybased shading at disney[R].ACM SIGGRAPH Course Notes,2012.
[2]BRIAN KARIS.Real shading in unreal engine 4[R].ACM SIGGRAPH Presentations Notes,2013.
[3]MATT PHARR,WENZEL JAKOB,GREG HUMPHREYS.Physically based rendering:from theory to implementation[M].2nd Edition.San Francisco:Morgan Kaufmann,2010.
[4]HW JENSEN,SR MARSCHNER,MARC L,PAT H.A practical model for subsurface light transport[J].Computer Graphics,2001:511518.
[5]ALAN K,CHRISTOPHER K,ALEJANDRO C,MARCOS F.BSSRDF importance sampling[R].ACM SIGGRAPHTalks,2013.
[6]BRUCE W,STEPHEN RM,HONGSONG L,et al.Microfacet models for refraction through rough surfaces[J].Eurographics Symposium on Rendering Techniques,2007:195206.
[7]JR FRISVAD,T HACHISUKA,TK KJELDSEN.Directional dipole model for subsurface scattering[J].Acm Transactions on Graphics,2014,34(1):112.
責(zé)任編輯(責(zé)任編輯:孫娟)endprint