文乙鋼++李丹丹++高學民
摘要:在過去的實時渲染及VR視覺構建中,常采用Lambert和Phong的光照模型,物體材質的表現和渲染結果主要依靠藝術家們的直覺和藝術感知能力,而研究基于物理的著色與材質(Physicallybased Shading and Material)方法,以光線傳播的真實過程、物體透明介質和次表面、微表面以及菲涅爾反射等為代表,通過真實的物理學參數模擬各種材質反射和散射光線的屬性,進而更加真實地模擬光線與物體表面交互的自然行為和實際情況,最終使VR的視覺構建結果極度真實。基于Unreal Engine的VR視覺構造為虛擬現實技術使用人群提供了一種更新更易操作的實踐方法,極大豐富了VR虛擬現實的表現手法與設計思路。
關鍵詞:虛擬現實;Unreal Engine;視覺構造
DOIDOI:10.11907/rjdk.171778
中圖分類號:TP301文獻標識碼:A文章編號:16727800(2017)010000804
0引言
傳統的定幀景觀漫游動畫或者宣傳片已為觀看者預設好了攝像機路徑,通過傳統的預渲染方式制作出較為固定死板的視頻媒體。而基于Unreal Engine的VR景觀展現方式革新了以往的景觀虛擬仿真表現手法與設計思路,通過基于特定算法的實時渲染、光照技術、基于物理的材質、GPU粒子模擬等技術手段構建出一個龐大而真實的虛擬交互世界,體驗者在該空間內可以通過自己的想法和移動路徑控制視角攝像機,對景觀世界中的每一個角落、每一座建筑甚至是每一顆植被進行自由實時的觀覽體驗,在頭戴式顯示器、陀螺儀、交互傳感設備的輔助下“真實地”走進虛擬景觀世界,體驗現實空間內發生的行為和看不到的景色,感受自然世界的晝夜交替、云卷云舒,從而產生強大的視覺沉浸效果與交互體驗。
1視覺構造手段
Unreal Engine 4(UE4,虛幻4引擎)是一款全球頂級的三維游戲開發引擎和虛擬現實引擎,是Epic Game公司以及來自全球數百上千位計算機工程師、設計師以及藝術家們的心血之作。Unreal Engine 4具有先進的實時渲染管線,高效完整的開發設計工具以及大量模塊化系統,給整個虛擬現實開發提供了理想的解決方案和視覺構造手段。在VR視覺構建中主要有以下五大關鍵方法:
(1)延遲著色。不同于前向著色,延遲著色僅對最終顯示的圖像片段進行著色,對于材質的渲染過程而言,材質將其屬性寫入GBuffers,包括位置、面法線、基礎顏色、粗糙度、金屬度等,在光照階段則讀取材質每個像素的屬性,并對它們執行光照處理[2],在保證性能的情況下實現大量多重動態光源。
(2)基于物理的材質。在以往的材質工作流程中,普遍使用Lambert和Phong兩種光照模型,材質藝術家們往往憑直覺和藝術感知能力調和材質參數,以模擬現實材質讓人們感覺真實。但基于物理的著色與材質模型,通過真實的物理學參數,能夠更加真實地模擬光線傳播時與物體表面交互的自然行為和實際情況。
(3)Lightmass全局照明。全局照明的真實模擬在很大程度上決定了整體畫面的真實感和質感,而實現完全的實時全局照明一直是一項巨大挑戰。Lightmass通過烘培光照,創建出光照貼圖,該光照貼圖含有間接漫反射和區域陰影等復雜的光照交互數據,從而實現對一部分靜態光源和固定光照效果的預計算[2],最終達到模擬真實全局照明效果的目的。
(4)GPU粒子模擬。在以往的粒子工作流程中,先由CPU進行粒子的模擬和物理運算,再交由GPU渲染成像素。但由于CPU通常要進行大量的其它計算,這樣的粒子生成過程不僅占耗了CPU資源,并且在進行數據傳遞時增加了時延。因此,將粒子的物理運算和模擬過程轉移到GPU上,優化的算法使得GPU粒子的生成異常高效,并且可由GPU生成矢量場,對場內的粒子運動產生影響,從而在VR實時圖像中產生強大而高效的視覺特效。
(5)視覺后期處理。大量圖像后期處理、全局環境效果、電影化效果和電影級鏡頭效果的設計與應用是保證VR視覺與交互體驗的重要過程,也會直接影響VR視覺畫面表現的真實性和沉浸感,包括Gamma調節與畫面調色、后期全局照明、環境光遮蔽、屏幕空間反射、反鋸齒、自動曝光、鏡頭光暈、矢量景深等。
2核心原理與關鍵算法
五大關鍵方法中延遲著色與視覺后期處理主要倚靠藝術理論的提升,在此不做詳細描述,本文將對其它3種視覺構建方法進行深入研究。
最早的基于物理的渲染(PhysicallyBased Rendering)模型由迪士尼公司在2012年的Siggraph圖形學大會上提出,名為Principled BRDF[1],主要應用在影視預渲染圖像上。而在過去的實時渲染與VR視覺構建中,往往采用Lambert和Phong的光照模型[3],物體材質的表現和渲染結果依靠藝術家們的直覺和藝術感知能力。目前基于物理的著色與材質方法是基于數學模型和物理模型的,真實的物理學參數模擬各種材質反射和散射光線的屬性,進而更加真實地模擬光線與物體表面交互的自然行為和實際情況,最終使VR的視覺構建結果極度真實。
2.1次表面散射
在真實的自然世界中,光線與物體表面材質的交互過程可分為兩種情況:發生反射或者發生散射。
(鏡面)反射是指當光線到達表面邊界時,光線被反射出去,方向是在法線另一邊相反方向。該光線行為就如同是向著地面或者墻面扔出一個球體,球會以一個相反的角度反射出去,而不會被地面或墻面吸進去,一個光滑的表面如同一個鏡面。然而并不是所有的光線都會被反射出去,往往有一部分光線會發生散射。此時,物體表面的情況又可以分為兩種,即存在或不存在透明介質,當介質透明時視為存在次表面,當介質不透明時視為表面和次表面的距離差值極小而為0的情況,則進行表面漫反射。endprint
當物體表面存在透明介質時,一部分光線會進入物體表面之下,發生折射,折射后的光線被吸收轉化為熱能,或者發生離散,如皮膚、翡翠、牛奶、蠟燭等,其表面和次表面有較大的距離差值,也就存在較大的光線散射距離,此時會發生次表面散射情況。這也是基于物理的著色和材質中重要的一個模擬特性,圖1給出了兩種光線行為的示意圖。
圖1光線的反射與散射
次表面散射現象比一般表面反射或散射現象的模擬要復雜許多,光線不僅僅會在物體表面發生散射,而是折射到物體的內部,在物體內部的半透明介質中發生若干次散射,直至從物體表面的某一點再次出射。因此,對于存在次表面散射性質的物體,光線的出射位置和入射位置不同,上文提及的BSDF模型即雙向散射分布函數僅能用于描述物體表面某一點的散射性質,而無法描述次表面散射現象。BSSRDF(Bidirectional Surface Scattering Reflectance Distribution Function)從方向和面積上同時進行積分求解,描述各方向上入射到物體表面光線的反射強度按反射方向分布的情形,如圖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)
式中包括光線入射和出射物體表面材質時的折射菲涅爾項Ft,一個歸一化的1π項,以及一個漫反射項Rd。其中,Rd只接受一個標量參數,此參數的意義是光線入射位置和初始位置的曼哈頓距離。BSSRDF將光線在物體半透明表面介質中多次散射后剩余的能量用一個基于入射點和出射點之間距離的函數近似表達,實時模擬基于物理的次表面散射效果。
2.2微表面
基于物理的著色和材質中的高光項是基于微表面理論的,微表面是物體表面細微的不規則面,它所影響的是“粗糙度(Roughness)”這個參數。在真實的物理世界中,大多數物質表面都存在非常小而細微的不規則形狀,比如凹槽、凸塊、缺口、裂痕等,這些都太小以至于眼睛無法看到,并且使用正常解析率的法線貼圖也無法表現,但是這些小的微表面依舊會影響反射和散射,如圖3所示。
微表面細節對光線的影響在反射中很容易被觀察到,平行的入射光照射到粗糙的表面時,反射出來的光線發生了交叉,因為每一條光線遇到的微表面方向不同,就如同將球拋向墻面,如果墻面不是平整的,球會任意反彈,反彈的方向是不可預測的,同理光線反射后的角度也不一樣,且有的地方光線被擋住,有的地方會產生陰影,視覺上會產生模糊的反射。因此物體表面越粗糙,反射光線越交叉,看上去就會越模糊,這種微表面細節(粗糙度)對于任何材質而言都非常重要,因為真實世界中的各種物體都會有微表面特征。
在UE4引擎的明暗著色器計算中引入微表面函數模型,將基于物理的著色中的高光項表示為:
fμfacet(l,v)=F(l,h)G(l,v,h)D(h)4(n·l)(n·v)
其中,向量l和v分別表示入射光和視角方向,向量h表示l和v之間的半角向量,F是h處的菲涅爾反射,G是與視角V朝向一致的微表面比例,D是微表面的分布函數,分母是對被遮蔽光線的修正。
2.3菲涅爾反射
菲涅爾反射描述的是材質的反射率和光線入射角的對應關系,也即在物體表面出現不同角度上反射率不同的情況,光線入射角越大,反射率也會越強。因此,當光線以一個擦著物體表面的角度入射比光線垂射到同一物體表面反射效果更加強烈,這就意味著表現了理想的菲涅爾效果的物體,在其邊緣將會有更加明亮的反射。基于物理的著色與材質中,對傳統計算機圖形學中的菲涅爾方程進行了一些修正,如圖4所示,其表現了從金屬材質到非金屬材質反射率隨光線入射角變化的關系曲線,入射角接近90°時,材質反射率會迅速增大到1,故對于任何材質的物體表面,在光線擦著表面極限入射時,材質將具有完全的反射率。因此,在觀察一個平滑物體的邊緣時,應該是一個完美的鏡面,任何物體以一個特定角度去觀察時都可以呈現一個完美的鏡面,在物理上的確如此。
圖4入射角變化曲線
3Lightmass全局照明
在基于Unreal Engine的VR視覺構建中,全局照明(GI)模擬采用Lightmass烘培光照貼圖的方法進行,通過預計算一部分靜態和固定光源的間接照明效果和區域陰影等復雜的光照交互數據生成光照貼圖,此過程將代替完全實時的GI計算,以達到全局優化效果。
間接漫反射是GI中最主要也是最重要的表現部分,光線在運動過程中,物體表面材質的漫反射因素將會影響各方向上漫射光線數量及光線顏色,間接漫反射是在所有方向上均勻地漫射入射光線,觀察方位和角度的不同對于觀察效果沒有影響。Lightmass同時會預計算詳細的間接陰影,以環境遮蔽為代表,環境遮蔽是從具有均勻光照的半球上獲得的間接陰影,被應用到直接及間接光照上,同樣被烘培到光照貼圖中。
4GPU粒子模擬
通常在粒子的模擬生成流程中,先由中央處理器CPU進行粒子的模擬及物理學運算,再將計算結果傳遞給顯卡GPU渲染成粒子像素。在實時渲染中影響和制約粒子系統效能的因素主要有兩個:粒子填充率即每幀可以生成的粒子數量,以及CPU和GPU之間的數據傳輸負載當需求的粒子數目巨大,計算時間以及CPU和GPU之間的傳輸時間將變得很大,無法滿足實時渲染的幀率要求。
因此,在VR的視覺構造方法中采用GPU進行粒子的完全模擬與生成,即第一步利用GPU對粒子進行動力學模擬運算,將計算結果保存到紋理中,頂點著色器會計算紋理坐標,將紋理坐標傳入片元著色器進行紋理采樣,片元著色器同時對粒子參數進行動力學運算,計算結果作為下一步渲染到紋理的輸入,第二步以常規渲染管線渲染,將第一步的渲染結果渲染到默認幀緩沖區中,完成粒子的繪制。GPU粒子的運作過程大大地提高了粒子系統的生成效率,傳統的CPU計算體系在一幀內能完成數以千計的粒子,而在GPU上可以讓數以十萬計的粒子被計算并得到有效渲染,同時讓CPU能更好地去處理其它物理和動力學運算以及AI人工智能等工作,從而提高整體效能。endprint
5結語
本文對基于UE4引擎的VR視覺構造關鍵方法的原理與核心算法模型進行了研究,以基于物理的著色與材質為主,包括Lightmass全局照明、GPU粒子模擬和視覺后期處理等一系列圖像技術與表現手段在很大程度上影響著VR視覺構造的效果和效率。每一個關鍵方法都不是絕對完美和理想的,而是在快速的技術發展中不斷更迭,以滿足VR視覺表現中對實時渲染系統的更高要求。
參考文獻參考文獻:
[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.
責任編輯(責任編輯:孫娟)endprint