基于光照的物理模型(一)
吸收與散射(透明與半透明)
當光線在非均勻介質或半透明材質中傳播時,光線可以被吸收或者散射:
● 通過吸收,光的強度由于它轉換成另外一種形式的能量(通過是熱能)而變小,它的顏色也會因為對不同波長光的吸收不同而發生改變,但是光線的方向不發生改變。
● 通過散射,光線的方向隨機發生改變,偏差的大小 取決于材質。散射隨機改變光的方向但是并不會改變強度。耳朵是一個很好的例子,因為耳朵很薄(吸收少),所以你可以看到散射的光從耳朵背后射出。如果沒有散射而吸收又很少,那么光線可以直接穿過諸如玻璃的表面。比如,你在一個池子里面游泳,希望它是干凈的,那么當你打開雙眼時,你會在干凈的水中看很遠的距離。然而,讓我們假設在同一個池子中,但是不很臟,水中的小顆粒會散射光,這樣水的能見度就會低很多。
漫反射和高光反射
? ? ? ?高光反射是在表面被反射的光,就如我們在光線部分討論的。光線經反射離開表面并且沿一個不同的方向傳播。它遵循反射定律,在一個完全光滑的表面,反射角等于入射角。然而,大多數表面是不規則的并且反射的方向會根據表面的粗糙度來隨機改變,知道這一點很重要。它改變了光的方向,但是光的強度并沒有改變。
? ? ? 粗糙的表面會有一個較大且較暗的高光。光滑的表面會保持高光聚集,這樣在特定的角度下它看上去會更亮或者說更強。然而兩種情況下都是同等數量的光能被反射,如圖1所示。
? ? ? ?漫反射是經過折射的光。光線從一種介質傳輸到另外一種介質并且在物體內部散射了多次。然后它又被折射離開物體進入原來的介質里面,并且位置跟第一次進入時的位置差不多是同一個點,如果圖02所示。
? ? ? ?漫反射材質是很能吸收的,這意味著如果折射的光線在材質里面傳輸過長的 話,它很有可能被完全吸收。這意味著光線不會從材質里面出來,它可能并沒有傳輸多少的 距離。這就是為什么進入和離開表面的點之間的距離可以忽略不計。在傳統著色系統中一直用于漫反射計算的Lambertian模型,不會計入表面粗糙度的影響,但是也有考慮粗糙度影響的Oren-Nayar模型。
? ? ? ?同時擁有高散射率和低吸收率的材質有時候被稱為參與介質(participating media)或者半透明材質。比如煙、牛奶、皮膚、翡翠、大理石。使用額外的次表面散射模型來渲染后三種物體是可能的,該模型會把光線進入和出射的點的距離計算進去。精確渲染如煙和霧此類變化多端的低散射率和吸收率的介質需要諸如蒙特卡羅模擬等更復雜的算法。
微表面理論
? ? ? 理論上,漫反射和高光反射都依賴于光線相交表面的不規則程度,粗糙度對于漫反射的影響比較小因為散射發生在材質內部。因此出射方向基本上跟表面的粗糙度和入射方向無關。最深用的漫反射模型(Lambertian)完全忽略它。
? ? ? ?在這個文檔里,我們把表面的不規則程度叫做粗糙度。實際上,它也有幾個其它的名字,比如粗糙度、光滑程度、光澤度或者微表面,跟使用基于物理渲染工作流程有關,但是它們都是說的表面的同一個方面,它就是子紋素(sub-texel)幾何細節。
? ? ? ? 表面的不規則程序表現在粗糙度或者光澤度貼圖中,這取決于你使用的工作流程。一個基材物理的雙向反射分布函數(BRDF)是基于微表面理論的,它假設表面是由所謂的不同方向的微小細節表面組成。每一個微小的平面都會根據它的法線方向在一個方向上反射光線,如圖03所示。
? ? ? 表面法線朝向光源方向和視線方向中間的微表面會反射可見光。然而,不是所有的表面法線和半角法線(half normal)相等的微表面都會反射光線,因為其中有些被遮擋(光源方向)或者掩蔽如上圖03所示。
? ? ? 在微觀層面上不規則的表面會造成光的漫反射。例如,模糊的反射是由于光線的散射造成的。反射的光線并不平等,因此我們收到的高光反射是模糊的,如圖04所示。
顏色
? ? ? 表面的顏色(我們人眼看到的顏色)是由于光源發射出的波長和它被 物體吸收以及反射的漫反射和高光所決定的。剩下的被反射的波長的光就是我們看到的顏色。
? ? ? 例如,一個蘋果的表面大部分反射紅色的光線。只有波長為紅色的光被散射回表面,其它的均被吸收了。如圖05所示
? ? ? 它也有跟光源顏色相同的高光,因為像蘋果這樣的絕緣體的表面的材質高光反射幾乎是獨立于波長的。因此,這種材質的高光反射是基本是都是沒有被修改過顏色的(跟光源的顏色相同)我們會在接下來的章節中討論不同材質(金屬和非金屬)。
雙向反射分布函數(BRDF)
? ? ? ?雙向反射分布函數簡單來說就是一個描述表面反射屬性的一個函數。在計算機圖形學中,有很多的不同的BRDF的模型,其中一些并不是基于物理的。一個BRDF要滿足基于物理的特性,它必須是能量守恒的且相互的。對于相互的,我是指亥姆霍茲倒易律,它表明入射和出射光線可以在不影響BRDF值的情況下相互交換。
? ? ? ?Substance使用的基于物理渲染的著色器(shaders)是基于迪斯尼的理論反射模型的(虛幻引擎的也是基于這個理論修改簡化而來),它是基于GGX微表面分布。GGX在高光分布上要比其它方案好,它有一個較短的高光峰值和在衰減的部分有一個較長的尾部,這樣它看上去就比較真實。如圖06所示。
? ? ? ?直觀來說GGX最大的特點就是高光周圍有很漂亮的拖尾效果,請看現實世界中的高光反射
? ? ? ?從真實拍攝的照片可以看出,高光反射部分呈現出中間小區域亮度極高,周圍有一圈拖尾效果,GGX最重要的地方就是捕捉到了這種視覺現象,所謂Everything getsBetter With it也是指這一點,可以與GGX之前常用的Beckmann分布做比較,紅色的是Beckmann分布,綠色的是GGX分布
Beckmann分布基本來自于高斯正態分布,所以頂部比較平滑,到邊緣的過度也比較短,GGX分布有個尖銳的頂部和更寬的分布 ?
能量守恒
? ? ? ?能量守恒在基于物理渲染的解決方案中扮演著關鍵的角色。它表明被表面重新發射的光的總能量(反射和散射回來的)是小于它接收到的能量的總數的。換句話說就是,經過反射離開表面的光不會比到達表面的光的強度更強。作為美術,我們沒有必要擔心如何控制能量 守恒。這是基于物理渲染的最好的一個方面,能量守恒通過 著色器(shader)來強制保證。它是基于物理模型的一部分,這樣我們就可以花更多的時間在如何制作出好的效果上而不是關注于物理實現上。
菲涅爾效果(Fresnel Effect)
? ? ? 菲涅爾反射因子作為BRDF的一個系數在基于物理渲染中也是一個非常重要的角色。由法國物理學家Augustin-Jean Fresnel發現的菲涅爾效果聲明你從一個表面看到的反射光線的數量取決于你接收它時的觀察角度。
? ? ? 比如,假設有一池水,如果你垂直于水的表面直接向下看,你可以很清楚的看到底部(假設水比較清澈)。以這種方式來觀 察水的表面基本上為0度或者說是沿法線入射,法線是指表面的法線。現在,如果你以一個切線入射方向來觀察水的表面,盡量平行于水面,那么你會看到水面上的高光反射變得更強,并且你可能完全看不到水底的樣子。
? ? ? 基于物理渲染的菲涅爾效果并不像我們在傳統著色模型中使用的那樣。再次重申一次,它是基于物理渲染的著色器處理的另外一個物理特性。當在一個切線入射角觀察表面時,所有光滑的表面在入射角為90度時會成為一個百分百的反射器。
? ? ? ?對于粗糙表面來說,反射中高光部分會更多,但是不會達到百分百的高光反射。這個時候起決定作用的是微表面的法線和光線的夾角而不是宏觀表面的法線和光線的夾角。因此光線被分散到不同的方向,反射會變得更柔和、更暗。在一個宏觀層次上,你看到的效果可能 是微表面所有 菲涅爾效果的一個平均效果。
F0 (在0度角的時候菲涅爾反射值)
? ? ? ?當光源垂直(0度角)到達表面時,其中一部分光作為高光反射回來。使用表面的折射率(IOR),你可以推導出反射回來的數量,這個值就被稱為F0(Fresnel 0),如圖09所示。被折射進入表面的光源的數量被稱為1-F0。
? ? ? ?對于普通的絕緣體來說,F0的值一般在0.02到0.05之間,而對于導體來說F0的范圍一般在0.5到1.0之間。因此 ,表面的反射能力是由下面的折射率公式決定的,如圖7所示,它來自于Sebasien Lagarde's "Feeding a Physically-based Shading Model"這篇博文。
? ? ? ?F0的反射值是我們需要在制作貼圖的過程中需要關注的。非金屬(電介質/絕緣體)一般是一個灰度值,而金屬(導體)會有一個RGB值。關于基于物理的渲染且從一個美術的角度來解釋反射,我們可以說對于 普通的光滑絕緣體表面,F0會反射2%到5%的光線,而在切線角時會反射百分百的光線,如圖06所示。
總結
以上是生活随笔為你收集整理的基于光照的物理模型(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 炫酷的def
- 下一篇: AR(Augmented Reality