為什麼會有那麼多類型的 BxDF?
PBRT中同一個點有一個BxDF集合,可以包含各種不同類型的BxDF,對此有兩點不解:
1、各種不同的BxDF的效果直接疊加,如何確保能量保守?
2、有些BxDF應該是有聯繫的,比如SpecularTransmission里的透明度和BSSRDF里的散射、吸收係數肯定是有聯繫的;再比如Roughness為1的表面似乎應該是純漫反射表面不應該再有鏡面項,而為0的話就不應該有漫反射項了。難道不能用有限的幾個參數以及對應的微表面分布模型來完整的描述一個表面的散射性質嗎?
用一個BxDF描述物體的表面在實際的production中是很難滿足需求的,關於這一點,可以去看我之前提到的siggraph 09 的一篇course :《Exploring the Potential of Layered BRDF Models》
裡面提到了各種表面如何用分層的BXDF模型去建模,如圖:
比如常用的車漆表面(metallic paint):可以用一層粗糙微平面模型和一層光滑平面模型(鏡面反射)構成。所以對於單獨一個模型來描述表面的想法在實際上很難實現。
關於分層BxDF模型的建模,也就是你說的能量守恆的問題,有很多不同的解法和做法,而且也有新的論文出現,今年的siggraph14就有一篇論文專門討論分層模型建模:《A Comprehensive Framework for Rendering Layered Materials》這篇文章中比較詳細的討論了能量守恆的問題,數學基礎比較紮實,當然對於實現來說也有一定的複雜性。真正實際的例子可以參考也是今年sig14的《physically based shader design in Arnold》這裡面的多層BxDF是屬於直接疊加,每層損失的能量只按照fresnel transmission計算。第一層反射剩餘的能量則進入下一層反射,依此類推,如圖:
這樣設計的好處除了簡單速度快之外很重要的一點就是方便藝術家的調試。再說一些特殊情況,比如頭髮的shading,很多模型都是把頭髮的scattering現象分成三種或以上的散射模式來計算的,雖然理論上,頭髮還是只有一個BSDF,但是實現中往往也是會分開分別調節。
題外話:關於材質設計的問題,藝術家和研發者應該是兩個方面考慮的,比如題主會考慮能量守恆,各參數聯繫,但是藝術家考慮的是高光強弱之類的參數,在設計的時候除了兼顧物理上的正確性也要考慮使用者的方便程度
難道不能用有限的幾個參數以及對應的微表面分布模型來完整的描述一個表面的散射性質嗎?
能,但是這麼做低效。把一個BxDF表達為幾種簡單的函數的疊加可以允許渲染器對每個term採取不同的演算法單獨計算其積分,從而可以更快地收斂。另外這樣表達可以方便artist自由組合出想要的材質。比如如果一個材質不需要specular term的話,就沒有必要浪費很多時間去採樣那些高光方向以及計算那些方向的BRDF。要是所有物體都去算一遍次表面散射那不都慢死了。注意到PBRT只是physically based而不是physically correct。
如 @王文濤說的,渲染需要根據需求來設定,在實際渲染中能量可能並不守恆。
例如在動畫電影的渲染器中,BSDF模型們只是為達到某種材質的藝術效果服務,而並非嚴格地模擬光在物體表面的反射和折射,它不需要物理正確。
Disney有篇論文討論了用有限參數描述表面材質,他們推出了Disney 「principled」 BRDF( amazonaws.com 的頁面)。這也是新的RenderMan19在使用的方法。
它的參數包括:
- baseColor - the surface color, usually supplied by texture maps.
- subsurface - controls diffuse shape using a subsurface approximation.
- metallic - the metallic-ness (0 = dielectric, 1 = metallic). This is a linear blend between two different models. The metallic model has no diffuse component and also has a tinted incident specular, equal to the base color.
- specular - incident specular amount. This is in lieu of an explicit index-of-refraction.
- specularTint - a concession for artistic control that tints incident specular towards the base color. Grazing specular is still achromatic.
- roughness - surface roughness, controls both diffuse and specular response.
- anisotropic - degree of anisotropy. This controls the aspect ratio of the specular highlight. (0 =isotropic, 1 = maximally anisotropic).
- sheen - an additional grazing component, primarily intended for cloth.
- sheenTint - amount to tint sheen towards base color.
- clearcoat - a second, special-purpose specular lobe.
- clearcoatGloss - controls clearcoat glossiness (0 = a satin" appearance, 1 = a gloss" appearance).
這是它各個參數渲染樣例:
圖中每個參數在其所在行由0至1變化,其他參數值保持不變。
推薦閱讀:
※高斯模糊和高斯有什麼關係?
※為何遊戲里的3d渲染速度非常快,而三維軟體實時渲染非常慢?
※為什麼計算機圖形不用四面體做基本圖元?
※如何學習計算機圖形學?
※如何看待電影《爵跡》於3月28日曝光的渲染序列及其技術水平?
TAG:CG | 計算機圖形學 | 計算機圖形學和可視化 |