• 沒有找到結果。

基於物理繪圖 P HYSICALLY -B ASED R ENDERING

第二章 文獻探討

第三節 基於物理繪圖 P HYSICALLY -B ASED R ENDERING

有別於傳統貼圖的色彩、法向量、高度圖,即時的基於物理繪圖多了許多必 須從物理角度下去考量的要點,Naty Hoffman 於 2013 年 SIGGRAPH 研討會課程 中,整理了許多計算細節。[6]

2-3-1 漫反射 diffuse & specular light

入射光線照射到物體後會分成兩個部分,一部分被物體表面反射成為反射光 (specular),另一部分射入物體表面,在表面粒子內經過無數的碰撞,被吸收部分 波長的光後無規則地彈射出來,成為漫射光(diffuse)。

圖3:漫射光(diffuse)與反射光(specular)

此現象發生於大部分非導體物質。而金屬材質光線也會進入表層內部,只是金屬 中的自由電子會吸收所有的漫射光線,只保留反射光線。

圖4:金屬物質與非金屬物質,金屬物質會吸收所有的漫射光

2-3-2 次表面散射 subsurface scattering

一些更複雜的物質,像是蠟、皮膚,會使得射入的光線在內部彈射而微微透 出物質內部的顏色,然而這種現象其實是和觀察者的距離有關。當觀察距離很遠 的時候,次表面散射的光線路徑其實很像是一般的漫射路徑,而距離很近的時候,

就算是一般的漫射材質也會有次表面散射的特性。如下圖所示,綠色的圈圈為一 個像素的範圍,上面兩張圖可以視為很近距離看物體,就算是發生漫射光也像是 次表面散射;下面的圖為很遠距離看物體,光線路線很像是漫射光。

圖5:距離與次表面散射

2-3-3 微表面 microfacet

真實物體的表面在微觀時絕對不是平滑的,然而實際請美術創作者去刻劃這 些細節又太過於困難,因此可以使用一個粗糙度數值(roughness)或是一張粗糙度 貼圖表示物體的粗糙程度,當粗糙程度越高時,反射的光線越模糊。

除了粗糙度,還會創造一個半路向量h (halfway vector)來表示光線 l 和視線 v 的作用程度,沿著此向量可以決定觀察到的微表面粗糙程度。

ℎ = 𝑙 + 𝑣

|𝑙 + 𝑣|

圖6:半路向量 h

微表面理論無法解釋因為表面粗糙阻擋光線而造成的陰影,但是這些陰影會 被其他表面散射的光線給照亮,因此不會造成問題。

圖7:左邊和中間這些因為不平滑造成的內部陰影會被右邊的內部漫射給解決

2-3-4 能量守恆 conservation of energy

由於是基於物理性質,反射光能量加上透射光能量絕對不可能超過入射光能 量,會有部分的能量轉換成熱能被吸收或是產生次表面散射。當表面的粗糙度上 升時,反射光的亮度會下降,其餘整體亮度提升,才不會使得整體能量變多。

圖8:正確的光能量和粗糙度關係

2-3-5 菲涅耳效應 Fresnel effect

菲涅耳效應指得是觀察者實際看到的反射與透射比例,會因為視線的入射角 大小而有所區別,當入射角趨近於垂直角的時候,物體表面趨近於全反射,而入 射角趨近於零度的時候(與物體表面垂直),物體有最小的反射比例。

圖9:菲涅耳效應示意圖,越遠入射角越大,光容易反射;越近入射角越小,光容易透射

每個物體會有不同程度的菲涅耳效應,存在著實際的物理數據。對於絕緣體 物質,我們可以使用 Schlick 的公式[9]由物體的垂直表面反射率𝐹0估算出反射比 例:

𝐹𝑆𝑐ℎ𝑙𝑖𝑐𝑘(𝐹0, 𝑛, 𝑣) = 𝐹0+ (1 − 𝐹0)(1 − (𝑛 ∙ 𝑣))5

𝐹𝑆𝑐ℎ𝑙𝑖𝑐𝑘會隨著入射角增加而漸漸從𝐹0增加至趨近於 1。至於金屬物質,可以拿金

屬本身的𝐹0沿著絕緣體的𝐹𝑆𝑐ℎ𝑙𝑖𝑐𝑘曲線逼近出可以接受的結果。大部分的絕緣體物 質𝐹0都介於2%~5%之間,鑽石擁有絕緣體中最高 17%,半導體和一些非常稀有的 物質會擁有20%~40%的𝐹0,金屬則都是50%以上。此外,當物體表面的粗糙程度

增加,菲涅耳效應會急遽地變得不明顯。

圖10:一些物質因為菲涅耳效應產生的反射光比例

圖11:一些物質於垂直表面觀察時的反射光比例及顏色

2-3-6 微表面 BRDF microfacet BRDF

由Brian Karis 代表 Epic Game 於 2013 發表的 Unreal Engine 4 的技術細節[2],

使用了Lambertian 的漫射光模型[8]結合 Cook-Torrance 的 BRDF 模型[4, 5],公式 如下:

1. 常態分佈式(Normal distribution function):決定觀察到的表面粗糙程度。

2. 幾何公式(Geometry function):決定粗糙表面造成的細小陰影。

3. 菲涅耳公式(Fresnel equation):決定觀察者看到的反射光線比例。

這三個算式都有許多學者研究出非常多種算法,有些接近真實物理表現,有些則 加強效能,Epic Game 挑選了以下幾種方式來計算。

常態分佈式(Specular NDF),反射光 D 項目:

使用同Disney 的作法[3],Trowbridge-Reitz GGX 的方式計算。

1. 𝛼 = 𝑅𝑜𝑢𝑔ℎ𝑛𝑒𝑠𝑠2 2. 𝐷(ℎ) = 𝛼2

𝜋((𝑛∙ℎ)2(𝛼2−1)+1)2

幾何公式(Specular G),反射光 G 項目:

使用Smith's Schlick GGX 和 Walter 的方式計算[9, 10]。

1. 𝑘𝑑𝑖𝑟𝑒𝑐𝑡 =(𝑅𝑜𝑢𝑔ℎ𝑛𝑒𝑠𝑠+1)2

8 , 𝑘𝐼𝐵𝐿 =𝑅𝑜𝑢𝑔ℎ𝑛𝑒𝑠𝑠2

2

2. 𝐺1(𝑣) = 𝑛∙𝑣

(𝑛∙𝑣)(1−𝑘)+𝑘

3. 𝐺(𝑙, 𝑣, ℎ) = 𝐺1(𝑙) × 𝐺1(𝑣)

菲涅耳公式(Specular F),反射光 F 項目:

使用Fresnel-Schlick approximation 的方式計算[9]。

1. 𝐹0為視線垂直表面時,物體的反射率 2. 𝐹(𝐹0, 𝑛, 𝑣) = 𝐹0+ (1 − 𝐹0)(1 − 𝑛 ∙ 𝑣)5

3. 𝐹(𝐹0, 𝑛, 𝑣) = 𝐹0+ 𝑚𝑎𝑥 ((1 − 𝑟𝑜𝑢𝑔ℎ𝑛𝑒𝑠𝑠), 𝐹0) × (1 − (𝑛 ∙ 𝑣))5 總和上述公式,繪圖方程式可以改寫成如下(去除物體本身發亮材質)。

𝐿0(𝑥, 𝜔𝑜) = ∫ (𝑘𝑑𝑐

𝜋+ 𝑘𝑠 𝐷𝐹𝐺

4(𝜔𝑜∙ 𝑛)(𝜔𝑖∙ 𝑛))𝐿𝑖(𝑥, 𝜔𝑖)(𝜔𝑖∙ 𝑛⃗ )𝑑𝜔𝑖

Ω

相關文件