無極5平台網址_3D 貼圖硬核乾貨!各路專家編製+騰訊翻譯的《PBR指引手冊》(一)

萬物皆可PBR, 本手冊帶你知其然也知其所以然。

近日在研究3D-TO-H5工作流及學習PBR的過程中,發現Substance官方新版的《The PBR Guide》尚未有完整的中文翻譯,所以把心一橫,斗膽翻譯了一波,希望能拋磚引玉,讓大家更深入淺出地了解3D材質貼圖及PBR技術。

PBR,Physically-Based Rendering,意為基於物理的渲染,是一種能對光在物體表面的真實物理反應提供精確渲染的方法,也是近年來極其生猛的3D工業趨勢。

《The PBR Guide》是由Substance by Adobe,Demo Artist Team負責人Wes McDermott主筆,並由3D領域各路專家共同編製的PBR指引手冊。本書分為「物理現象淺析」及「材質製作指南」兩大部分,從理論到實踐,深度解析PBR工作流。

文章內容硬核中又略帶苦澀,建議看官們分次服用。

The PBR Guide 原文地址:https://academy.substance3d.com/courses/the-pbr-guide-part-1

光線

光線在均勻透明介質中遵循着直線的發射軌跡。同時,光在不透明表面以及不同介質中的反射和穿透軌跡也是有跡可循的,所以我們可以直接推斷並繪製光線的路徑(如圖1 所示)。

反射 Reflect:光線接觸到物體表面後會被反射。這一現象遵循反射定律,也就是光線的入射角等於反射角。

折射 Refract:光線從A介質穿到B介質時會被折射,折射路徑為直線。

在光線接觸到物體表面時,它可能會被反射或折射,也可能最終會被介質吸收。但是值得注意的是,光線吸收並不會在物質的表面上進行。

吸收與散射-透明與半透明

當光線穿過不均勻介質或半透明材質時,可能會被吸收或散射:

吸收:當光線被吸收時,由於光的能量被轉化成其他的形態(通常是熱能),所以光線的強度也會相應減弱。同時,由於不同波長的光被吸收的情況不同,所以光的顏色也會改變。但是光線的角度始終保持不變。

散射:當光線被散射時,光的方向可能會被隨機改變,偏向角取決於材質本身。但是,散射並不會改變光的強度。在生活中,散射是一個常見的現象,耳朵皮膚的透光就是一個很好的例子:因為耳朵的皮膚很薄,所以我們可以觀察到散射的光線從耳朵背後穿透出來(下圖2)。

當光線沒有被散射且吸收也較弱時,光線可以直接穿透物質表面,例如透過玻璃,我們可以直接觀察到另一側的光線。再打個比方,如果在一個乾淨的游泳池裡,當你在水中睜開眼睛時,一般可以直接看到較遠處的池壁;相對的,如果游泳池很污濁,這些雜質粒子就會對光線進行散射,從而降低可視度。

光線在這類介質中穿透得越遠,它則被散射或/且被散射得越多。因此,物質的厚度在光的散射和吸收中是一個重要的因素。厚度貼圖可以用作描述物體的厚度,並且能被用於着色器進行渲染。

漫反射與高光反射

高光反射 Specular Reflection:當光在完美的平面上被反射時,根據反射定律,反射角等於入射角,這就是高光反射。然而現實生活中,大多數平面都是不規整的,所以反射的方向也會因為接觸面的粗糙度而變得非常隨機。反射改變了光的方向,但光的強度保持恆定。

越粗糙的表面,它的高光範圍會越大,且表現也越暗。光滑的表面會讓高光反射更聚焦,所以這種情況下的高光,在特定的角度下觀看會更亮更強。需要注意的是,兩種情況下,被反射的光的量仍舊是一致的。

折射改變了光線的角度。當光從A介質穿透到B介質時,它的速度與方向會被改變。折射率(Index of Refraction, IOR) 是一個用來描述光線折射時角度變化的光學參數,它用於表示當光線在不同介質中穿透時,到底被折彎了多少(生活常例:吸管插在液體里的折射效果)。舉個例子,水的折射率是1.33,而平板玻璃的折射率是1.52。

當光線從A介質穿透到B介質時,它會在B介質內撞擊不同的散射粒子,並被多次散射,然後再重新折射穿出這個物體。二次折射回原介質的穿透點與首次折射時的位置大致相同。

漫反射物質一般對光的吸收性很高,如果光線在這種物質里穿透太久,可能會被完全吸收掉。如果光線最終穿透了這個物質,也意味着其實它只穿透了很短的一段距離。

因此,在漫反射材質的渲染中,光線穿入點和穿出點之間的距離通常可以忽略不計。朗伯體(Lambertian Model,一種在着色渲染中用來展示標準漫反射的材質)就沒有將表面粗糙計算在內。而其他漫反射光照模型,如Oren-Nayer Model,就有算上表面粗糙。

含有強散射和低吸收特性的材質通常被認為是中間媒介(Participating Media)或半透明材質(Translucent Materials),例如霧、牛奶、皮膚、玉器、大理石等。當渲染后三者時,通常會加入次表面散射(Substance Scattering)的光照模型,以保證渲染物理性質的精確性。這種情況下,光線的穿入點和穿出點(光線散射的距離)就需要被考慮到計算當中。當計算一些變化較大且低散射、低吸收的材質時(例如霧或煙),可能需要渲染成本更高的算法來執行,如蒙地卡羅模擬(Monte Carlo Simulations)。

1. 微面元理論 Microfacet Theory

理論上,當光線接觸到一個不規則表面時,漫反射和高光反射會同時發生且與表面的粗糙度相關。然而在實踐層面,由於散射發生在材質的內部,所以粗糙度對漫反射的可視影響並不明顯。因此,光線二次穿透物體時的角度幾乎不受表面粗糙度與入射角度影響,最普遍的漫反射光照模型——朗伯體就無視了表面粗糙。

在這個指南中,我們統一將表面不規則(Surface Irregularities)稱為表面粗糙度(Surface Roughness)。表面不規則度還有根據不同的PBR流程會有好幾個別稱,包括粗糙度(Roughness)、平滑度(Smoothness)、光澤度(Glossiness)或微面(Micro-surface)。這些名詞都是在描述同一個性質,就是材質表面的次紋理(Sub-texel)幾何細節。

這些表面不規則信息會被記錄在粗糙度貼圖或光澤度貼圖內。基於物理的雙向反射分佈函數(BRDF)也是在微面元理論上建立的,它認為一個大表面是由很多細小的含有多變方向的小平面組成的,這些小平面就叫做微面元(Microfacets),每一個微面元都基於單一法線方向來反射光線。

當微面元的表面法線方向正好是光線入射角與觀察角的半角向量方向相同時,這個微面元就會反射可視光(在理論高光反射中,反射光線要進入觀察者的眼中,必須要滿足高光平面法向量正好與視線向量和入射向量的半角向量在一條直線上。[8])。然而在某些情況下,並不是所有符合以上條件的微面元都會起作用,因為有些光線會被投影(光線方向)或遮蔽(觀察方向)所阻擋。

表面不規則在顯微鏡層級造成了光的漫射。模糊反射就是由於光被彌散式地反射所造成的,這些光線並沒有被平行地反射回來,所以我們接收到的反射就是模糊的。

色彩

一個表面可被觀察的顏色是由光源發射的波長所決定的。這些波長會被物體本身吸收,同時也會被高光反射或漫反射。那些經過吸收和分散后還留存的波長就是我們眼睛所看到的顏色。

舉個例子,蘋果的表皮大部分都反射紅色光,是因為只有紅光的波長在蘋果皮表面被反向散射,其他光都被吸收了,所以我們看到的蘋果是紅的。

此外,蘋果有着和光源顏色相同的非常明亮的高光,是因為蘋果的材質本身具備非導體(電介質)特性(不對光的波粒進行傳導),因此蘋果表皮上的高光反射幾乎與光的波長無關(具體可看下章)。對於這些材質,高光的顏色幾乎從來不受物體表面顏色影響。

Substance PBR着色器一般使用GGX微面元分佈(GGX Microfacet Distribution)。

1. BRDF

雙向反射分佈函數(BRDF,The Bidirectional Reflectance Distribution Function)是一個用於描述表面反射特性的函數。在計算機圖形中,有着各式各樣的BRDF模型,有些並非基於真實物理渲染的。而基於真實物理性質的BRDF,必須遵循能量守恆定律並且展現出互易律。互易律源自於亥姆霍茲互易原理(Helmholtz Reciprocity Principle), 這意味着,進入的光線和返回的光線可以理解成是可以彼此互易的,這並不會影響BRDF的最終推演結果。

Substance PBR着色器使用的BRDF模型是基於迪士尼制定的反射模型建立的。同時,這個模型也基於GGX微面元分佈特性。GGX為高光反射提供了更為優質的解決方案:表現為更窄小的高光峰值點,以及更長的衰減彌散,這讓材質的高光看起來更加的真實。

能量守恆

能量守恆在PBR渲染中是非常重要的前提。這個守則認為一個表面二次發射(反射或散射)的光必須少於這個表面接收到的光。對於藝術家或設計師來說,我們不必擔心如何去控制能量守恆,因為PBR着色器的設定一般都自行符合能量守恆定律。

菲涅爾效應與F0

菲涅爾項(Fresnel Item)作為BRDF的一項係數,在PBR着色中扮演着非常重要的作用。法國物理學家菲涅爾認為,一個表面反射的光的總量與觀察光的角度相關。打個比方,如果你在觀察一缸水,並且從它的正上方看下去(與水面垂直),就可以直接看到水池的底部,因為此時觀察的角度為0°,視角向量與水面的法線向量重合。當你從更斜的角度去觀察水面,並慢慢與水面趨於平行時,你會看見越來越多高光反射。

菲涅爾項通常不是我們可以在傳統着色器中控制的屬性,它一般只能由PBR着色器自行控制。當我們從掠射角(Grazing Angle 切線角/掠射角)觀察所有光滑表面時,它們在與光線入射角成90°的位置幾乎會形成100%的反光(當我們使用菲涅爾效果時,通常能觀察到材質球邊緣會出現一圈強反光)。

對於粗糙的表面,反射會更加地明顯,但不會完全達到100%高光反射。這種情況下,反射的效果受每個微面元的法線與光的角度影響,而非取決於整個宏觀面的法線與光的角度。表面粗糙時,光線被微面元進行不同角度的彌散反射,所以整個反射效果看起來會更加柔和。

1. F0:0度菲涅爾反射

當光線垂直地(與法線角度夾角為0)射在一個平面上時,一定比例的光會被高光反射。用折射率(IOR,Index of Refraction)去測算,我們就可以得到被反射的光的數量。這個值我們記為F0, 而光折射進材質表面內部的數量,我們記為1-F0(如圖11示)。

對於普遍非導體(電介質)材質來說,它們的F0範圍在0.02-0.05之間(Linear Space)。對於導體材質來說,F0範圍大概為0.5-1.0。一個表面的反射率受它的折射率影響,可以由以下公式求得:

F0反射值也影響着我們應該如何製作材質貼圖。非金屬材質(絕緣體)使用灰階表示反射數值,而金屬材質(導電體)則使用RGB數值。基於PBR與藝術設計對反射的理解,我們可以預設普遍的光滑的非導體(電介質)表面,F0會反射2%-5%的光線,在切線角反射100%的光線。

非導體(電介質)表面的F0反射值一般區別不大,事實上,當我們改變表面粗糙度時,這種反射值的變化也很難被看見。然而,不同材質之間還是有一定區別,圖12展示出F0在金屬與非金屬表面上的範圍。需要注意的是,寶石類的材質可能是個特例,因為它們的F0值更高。

導體與絕緣體-金屬與非金屬

我們為PBR製作材質時,應當時常考慮該材質是金屬還是非金屬,因為它們的製作規範完全不同。

儘管對部分類金屬材質(Metalloid,非金屬與金屬的混合材質)來說,分類很難被明確,但是對大多數製作材質的工作流而言,事先分清楚材質是否為金屬仍然是一個較好的方法。本文將會對金屬與非金屬的特性進行拆解,並分別講述它們的製作規範。

在作為導體的金屬材質中,由於折射光被吸收,所以金屬的顏色來自於反射光線。因此,在貼圖中並不會賦予金屬漫反射顏色(Diffuse Color)。

1. 金屬 Metals

金屬是熱和電的優良導體。導電金屬的電場是零,而當帶有電場與磁場的入射光波打在金屬表面上時,光波會被部分反射,而所有的折射光波都會被吸收。被拋光過的金屬的反射值範圍較高,一般在70%-100%之間。

不同的金屬吸收光不同的波長,由於折射光線被吸收,金屬的色澤/色調來自於反射光。舉個例子,黃金會吸收可視光譜高頻段的藍光,所以它看起來是黃色的。

在貼圖中,我們不會給金屬賦予漫反射顏色(Diffuse Color,這也就是我們平常在金屬材質中添加顏色會無效的原因)。舉個例子,在Specular/Glossiness的工作流中,金屬在Diffuse Map一般會設為黑色,而反射值通常記錄在Specular通道裡帶有色調的色值中。(對於金屬材質來說,反射值會用RGB來記錄,而且會擁有色調。)由於我們在PBR環境中工作,所以需要使用真實世界的規律、數值與方法在貼圖中還原金屬的反射。

對於金屬來說,另一個影響材質的因素就是它們被腐蝕的程度,也就是說,造成腐蝕的因素可能會對金屬的反射狀態造成比較明顯的影響。在金屬貼圖中,被腐蝕的區域會被標記為黑色,並被認定為非導體(電介質)材質。Metallic/Roughness工作流的着色器會將這些腐蝕區域的F0值統一設定為4%。

另外,上漆的金屬一般也會被認作是非導體(電介質)材質,色漆會被認為是覆蓋在原金屬之上的一層材質,只有那些沒被油漆覆蓋到的金屬才會被定義為原始金屬。同樣的原理也應用在被塵埃或其他物質覆蓋的金屬材質上。

正如本章一開始提到,在製作PBR材質前一定要先想清楚材質是否為金屬。甚至為了更精確的材質效果,設計師應該明確金屬材質的狀態:是否有上漆、被腐蝕、或者被塵埃、油等其他物質覆蓋。如果材質某部分區域的貼圖显示它不是金屬,該區域會被着色器理解為非導體(電介質)材質。特別需要留意的是,腐蝕效果一般都會有一些介乎金屬與非金屬之間的混合狀態(金屬貼圖可能呈現出不同層次的灰階)。

2. 非金屬 Non-Metals

非金屬(非導體/絕緣體/電介質,為設計師直觀理解,下文統稱為非導體)是較差的電導體。材質內被折射的光一般會被散射或者同時被吸收(通常會穿透物體二次折射)。對比起金屬,他們會反射更少的光並且擁有反照率顏色(*Albedo Color,需要注意的是Diffuse、Albedo、Base Color是在不同工作流的名稱,它們作為貼圖時所攜帶的RGB屬性有着相似的適用原則,但是所攜帶的信息在本質上並不完全一致。廣義上,Albedo包括了Base Color和Diffuse)。

之前也有提到基於折射率計算,對於普遍的非導體(電介質)材質來說,F0反射率大概在2-5%左右。這些值的轉換回線性空間大概是0.017-0.067之間(40-75 sRGB)。除了部分比較特殊的非金屬材質(如寶石)之外,絕大多是非導體材質的F0值都不會超過4%。

就像金屬材質一樣,對於非金屬材質,我們也需要使用真實世界測量的數值來繪製。但是我們很難去獲得各種非透明材質的折射率(IOR)。不過,非金屬材質的F0值變化不會很大,所以我們可以為反射值製作一個參考的維度(如圖15)。

線性空間渲染

在着色器中,色值的提取與色彩的計算操作都是在線性空間(Linear)中執行的。這個流程會先把色彩貼圖中已經被gamma-encoded(一般是sRGB)的值轉成Linear。

在色彩管理的流程中,一般會由程序自動或工程師手動標記好這張貼圖的色彩空間以便後面正確的計算。所有的計算與渲染會在線性空間中進行,在最終显示器显示前,再被gamma-correction矯正回sRGB,以保證色彩的正確显示。

那麼要如何知道哪個圖會被解碼回Linear呢?如果設計師是從Substance Painter或Substance Designer中直出貼圖的話,我們可以看哪些貼圖中含有顏色(Diffuse Reflected Color),例如金屬色調或者是玻璃色調。這些貼圖在輸入着色器前就應該被標記好它原有的色彩空間(通常是sRGB,因為設計師一般也是在此環境中將貼圖繪製出來的)。

因此,在PBR渲染流程中會標記為gamma-encoded的貼圖包括Base Color(基礎顏色/反照率顏色)、Diffuse(漫反射)、Specular(高光反射)、Emissive(發光貼圖)。

而當貼圖僅用於記錄數據時(材質粗糙度,是否為金屬等),它們通常都會被輸出為Linear。在PBR渲染流程中被標記為Linear的貼圖有Roughness(粗糙度),Ambient Occlusion(AO)、Normal(法線)、Metallic (金屬)、Height (高度)等。

當我們使用SP或SD設計貼圖,並輸出Substance材質時,一般不用擔心Linear與sRGB的轉換,因為這套輸入輸出的流程已經被自動化處理,所以最終渲染显示的結果也是被gamma矯正後的正確效果。

同樣,在Substance Integration插件中使用Substance材質時,輸出結果已經根據貼圖的色彩空間(線性或sRGB)、以及所在程序的色彩管理設置進行自動轉換。然而需要注意的是,理解這套流程背後的原理仍然很重要,因為當Substance材質貼圖(Substance Map)作為普通位圖(Bitmap)使用時,你仍需要根據你使用的渲染器來手動標記貼圖的色彩空間。通常,後綴為.png, .jpg, .tga, .tif的貼圖,gamma-encoded使用的是sRGB色彩空間;而.exr為後綴的貼圖(如環境發光貼圖HDRI)則為Linear空間。

PBR的核心屬性

能量守恆定律:一個表面反射光的量少於它接收到的光的量。這個定律已經被着色器自動執行。

菲涅爾效應:產生菲涅爾效應的BRDF雙向反射分佈函數已經被PBR着色器自動執行。對於大多數非導體(電介質)材質來說,它的F0反射值不會有太大的變化,普遍分佈在2-5%。而對於金屬材質來說,反射值更高,範圍在70-100%之間。

高光反射的強度由以下幾個屬性共同影響:BRDF算法(GGX、Blinn或其他)、不同工作流下的粗糙度或光澤度貼圖、以及F0的反射值。

光的計算都在線性空間中執行:所有含色彩信息的貼圖(如Base Color)通常都會被着色器轉換成Linear用於計算。設計師或開發者需要注意這個轉換是否由渲染引擎在引入貼圖時自動執行,如果沒有,則需要手動標記貼圖的色彩空間。當貼圖僅用於記錄材質的屬性數值(如粗糙度、發光度、高度、法線等),則該貼圖在整個流程中都應該被解析為Linear空間。

本文僅供學習參考之用,原文及圖片版權歸屬Substance及其母公司Adobe所有。

參考文獻

未经-摩登3注册-摩登3测速官网-允许不得转载:摩登3注册-摩登3测速官网 » 無極5平台網址_3D 貼圖硬核乾貨!各路專家編製+騰訊翻譯的《PBR指引手冊》(一)

赞 (0)