2016年7月30日 星期六

PBR Physically-Based Rendering


Physically-Based Rendering翻作基於物理的算圖,縮寫為PBR。
因為要瞭解電腦是如何算圖,下面記錄基礎知識。

光-基本原理
光控制了人類可以看見什麼,光是複雜的物理現象,有波動、粒子兩種特性。所以有各種模型來表現光。對於做材質的人來說理解這些行為是很重要的,越了解光在虛擬世界運作,越是能讓畫面好看。

當物理表面十分平滑時,入射的光線會由相對的角度完全反射出去。入射角會等於反射角。

Absorption and Scattering 入射光線會被表面吸收或發散,
透明與半透明(Transparency and Translucency):上面這兩項特性可以表現透明與半透明的材質。下圖右全透明的材質即完全不被吸收而穿透過去,圖左則有部份被吸收及發散,有部份光線透過來但看起來是模糊的。

Diffuse and Specular Reflection: diffuse即是光射到物體表面後均勻反射,而specular則是在直接反射至相對的方向。下圖即是兩種狀況。



Microfacet(表面的粗糙程度):
理論上diffuse及specular是取決於表面的細微起伏。通常不會直接將細微起伏放在模型上,而是會由另一張roughness map來表達起伏呈度。


Color 顏色

顏色取決於光源的波長,接觸到表面之後,一部份會被吸收,一部份會反射。反射到我們眼中的光,即是我們所看見的顏色。像是上圖各種波長的光照到了蘋果上,橙黃綠藍靛紫光都被蘋果的表面吸收了,只有紅光反射到我們眼中,所以我們看到蘋果是紅的。

BRDF 雙向反射分佈函數(Bidirectional Reflectance Distribution Function)
一組用來描述表面反射性質的函數。
例如上面左右張圖採用不同的函數,在光線反射的表現就不相同。左圖的光線直接反射的亮點有較大的範圍的光暈。

Energy Conservation能量轉換
若符合物理原理之下的能量轉換,那由表面反射出的光總合不會大於入射的總合,因為符合物理定律,美術人員可以不用去擔心能量轉換,專注在其它項目。

菲涅耳現象(Fresnel Effect)
人眼接受到物體反射的光線取決於其觀看的角度。
而F0就是指以垂直角度看物體表面所見光線。下圖是F0在不同材質呈現的顏色,左列是非金屬材質,右列是金屬材質。

Metals and Non-Metals(金屬與非金屬)
金屬大多反射效果良好,我們不需要給他Diffuse Color(物體本身顏色),相對的我們要為他設定specular map來呈現金屬效果。
如果是生鏽的部份則屬於非金屬,下圖是部份生鏽的金屬球。

Linear Space Rendering
在Linear Space下運算才可以得到正確的結果,而顯示器並非是在Linear Space下,所以調整到Linear Space.

參考文章:
https://www.allegorithmic.com/pbr-guide
http://blogs.unity3d.com/2015/02/18/working-with-physically-based-shading-a-practical-approach/

沒有留言:

張貼留言