無極5註冊_硬核乾貨!各路專家編製+騰訊翻譯的《PBR指引手冊》(二)

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

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

上期回顧:

3D 貼圖硬核乾貨!各路專家編製+騰訊翻譯的《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 指引手冊。本書分為《Part1:物理現象淺析》及《Part2:材質製作指南》兩大部分,從理論到實踐,深度解析 PBR 工作流。

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

The PBR Guide Part2 原文地址:

https://academy.substance3d.com/courses/the-pbr-guide-part-2

什麼是PBR? 優勢與意義

上一章從理論的角度講述了 PBR 的原理,接下來將會從實操的層面來介紹如何製作 PBR 材質。

首先本章節會從藝術工作者的角度重新定義 PBR,講述 Metal/Roughness 工作流、Specular/Glossiness 工作流以及其中的差異。建議讀者們可以先通讀兩個工作流的原則來了解貼圖製作的全貌。

在這個指南中,我們會使用 Substance 的軟件系列來演示整套工作流,但是 PBR 貼圖和材質製作的原理其實在不同軟件中都是通用的。

PBR 渲染是一個方法而非一個硬性的規則,雖然其中有很多特定的物理原則和規範,但是操作中並沒有唯一的真理,渲染效果可以由不同的手段來實現,貼圖的種類和工作流的使用方式也可以五花八門。GGX 的 BRDF 是最常用的物理算法,但實際上基於不同渲染器及工作流,算法也會應而有異。另外,在不同的實現方式中,貼圖的名字可能也會有所不同,儘管它們對應的用法可能實際上是一樣的。

在這個部分,我們會討論兩個最常用的工作流:金屬/粗糙度工作流(Metal/Roughness)和鏡面反射/光澤度工作流(Specular/Glossiness),並使用 Substance 系列工具製作貼圖(能同時支持兩種工作流),其中包括了 Substance Designer,Substance Painter 和 Substance B2M。對於兩種工作流來說,Substance PBR 默認着色器使用了 GGX BRDF,沒有對粗糙度/光澤度進行重新映射。然而,如果你想定製自己的映射(Remapping),也可以在 Substance 系列軟件里輕鬆完成。

另外,Substance 系列軟件支持對着色器進行定製,也就是說你可以調整 Substance 的設置來適應定製化過的渲染管道(Customized Pipeline)。

兩種工作流都有它們自己的優缺點,沒有哪個更優更劣,只有選擇最適合你貼圖表現的工具流才是正道。畢竟是內在的概念和原理使得貼圖表現更為精確,而非工作流本身。即使它們兩者最終可能都表現出了一樣的性狀,但內核卻有着不同的實現方式。

1. 什麼是PBR?

PBR(Physically Based Rendering)基於物理的渲染,是一種能對光在物體表面的真實物理反應提供更精確着色與渲染方法。在渲染管道中的不同環節,它也會被稱為物理着色(Physically Based Shading,PBS),PBS 通常是指着色,而 PBR 通常是指渲染和光照。不過,兩個名詞其實都是指基於真實物理下精確渲染場景的過程。

2. PBR的優勢?

作為設計師,我們可以從藝術角度和製作效率兩個維度去看待 PBR 的優勢:

  • PBR 的方法論和算法都是基於物理精確的公式實現的,這讓我們在製作過程中無需反覆猜度和測試很多材質的屬性,也讓我們更容易去製作一個更真實的場景。
  • 場景和模型在所有光線條件下都會表現得非常精確。
  • PBR 提供了一個穩定的工作流,讓不同的藝術家在不同的項目之間都保持相對恆定的輸出模式。

3. PBR對藝術工作者的意義是什麼?

隨着硬件及其渲染能力的提升,我們能越來越精確地模擬光的真實物理性質。作為藝術工作者此時就需要去理解每一個貼圖它描述和代表的是哪些屬性,會對模型造成哪些影響。

我們需要扔掉過往對漫反射貼圖(Diffuse)和鏡面反射貼圖(Specular)的認知,因為在傳統渲染工作流中,這兩個貼圖只是一個對光與材質比較粗糙的估算方法。

在 PBR 中,着色器負責執行符合能量守恆和 BRDF 物理定律的渲染工作,而藝術工作者則需要根據物理定律來創造貼圖。PBR 很科學的一點就在於,它已經把很多材質的性質用物理的真實條件定義下來,設計師不需要再盲猜盲試它們的實現效果,從而可以將更多的時間投放在貼圖的創意和設計上。

雖然符合規範和製作正確的貼圖是很重要的事情,但是也並不意味着我們要放棄藝術性的直覺。3D設計師要時刻記住,是藝術的理解和角度真正賦予了材質生命,並在精雕細琢的細節和表達方式中體現了材質的故事。物理現象從來不是藝術家真正需要思考的核心,在物理的環境下工作並不意味着我們就不能創造出有風格的作品。

舉個例子,迪士尼的物理折射模型(Physically-based Reflectance Model)雖然是一個可被當做規範的方法,但我們更應該把它當做一個藝術指導,而非一個嚴格的物理模型。設計師應該學會如何應用這些規範和原則而不是被他們所限制。

金屬/粗糙度工作流

金屬/粗糙度工作流(Metal/Roughness Workflow,下文簡稱M/R工作流)是由一系列的貼圖通道所定義的工作流,這些通道會被作為貼圖傳輸到 PBR 的着色採樣器中。這個工作流對應的貼圖包括 Base Color(基礎色貼圖)、 Metallic(金屬貼圖)、 Roughness(粗糙度貼圖)(圖 17)。

在 M/R 工作流中,PBR 着色器也同時使用 Ambient Occlusion(環境光遮蔽/環境吸收/AO貼圖,下文統稱環境光遮蔽貼圖)、 Normal(法線貼圖)、Height(高度貼圖)來表現光影視差與置換位移的映射效果(圖 18)。

在此工作流中,金屬的反射值和非導體(電介質)的 F0 值都被記錄在 Base Color 貼圖中,在掠射角的反射效果(菲涅爾效應)則交由 BRDF 來處理。金屬貼圖在此工作流中就像 Photoshop 里的遮罩一樣,用於區分 Base Color 貼圖中金屬與非導體材質的區域。非導體的 F0 值並非人工制定,而是由着色器來處理。當著色器監測到金屬貼圖中的黑色區域時,它會認為這片區域在 Base Color 中的表現是非導體(電介質)材質,從而統一使用 4%(0.04)的反射值。

在第一章中,我們也有提到過,4% 這個值基本上可以涵蓋常見的非導體材質。需要注意的是所有的數值,包括非導體的 F0、金屬的反射值、反照率顏色的亮度範圍都是從實際測量的數值中得來的。當本文談到單個貼圖時,也會探討哪些是基於測量數據製作的。

在能量守恆定律中也提到過,光從一個表面反射出去的量不會多於它入射在表面上的量。在渲染的實現層面,這個定律一般都由着色器強制執行。在 Substance 和 M/R 工作流也一樣,我們是不可能打破能量守恆定律的。由於漫反射色(Diffuse/Reflected Color)和鏡面反射(Specular)的平衡關係由金屬遮罩(Metallic Mask)來控制,所以渲染計算時不會出現反射色和鏡面反射加起來比入射光還多的情況(因為當極限情況下,金屬遮罩全白時,材質表現為全反射,此時反射光最多等於入射光)。

1. 非導體(電介質)的F0

對於大多數普通的非導體(電介質)材質來說,反射值都被設為 0.04(線性空間),即 4% 的反射率。在 M/R 工作流中,這個值一般是着色器不可變更的。

不過在另一些 M/R 實現流程中,例如 Substance 系列軟件、Unreal Engine4 就會有提供一些控件讓藝術家可以修改非導體(電介質)的 F0 值。在 Substance 中,這個輸出區間被標籤為「Specular Level」,由 Metal/Roughness PBR 着色器的材質採樣器提供。它代表了 0.0-0.08 這個區間在着色器中會被重新映射為 0.0-1.0,而 0.5 就代表着 4% 的反射率(如圖 20)。

如果你需要手動設置非導體的 F0 值,也可以使用 Substance Designer 里的 Substance Graph/Specular Level Output 來設定,又或者是 Substance Painter 里的 Specular Level Channel 來調整(圖21)。本文會在 Specular/Glossiness 工作流中繼續深入討論非導體(電介質)F0 的屬性,因為在 S/G 工作流中,設計師可以對 F0 進行全面的控制。

2. 基礎色貼圖 Base Color

RGB貼圖-sRGB

Base Color 貼圖是一個 RGB 貼圖,它能包含兩種類型的數據:非導體(電介質)的漫反射色/反照率顏色(Diffuse Reflected Color/Albedo)和金屬的反射值(如圖 22)。導體的顏色代表着它本身反射的光的波長,這個原理我們在第一章有提到(不同的金屬反射不同的色光)。如果這個區域在金屬貼圖中被指示為金屬(金屬貼圖中為白色),那麼這個反射值就會被显示出來。

製圖指引

Base Color 貼圖的色調一般看起來會比較平,它的對比度會低於傳統的 Diffuse 貼圖(傳統的 Diffuse 貼圖帶有光影信息),因為在貼圖中,如果數值太亮或太暗可能都會影響後續的光影渲染效果。物體在光影色調中的實際效果通常比我們印象中存在的樣子亮很多。可以試想一下,以碳作為最黑的物質,而雪作為最亮的物質。雖然碳的固有色看上去是黑的,但是它不是 0.0 的黑,同樣雪也不是 1.0 白。所以我們對於基礎色的選擇需要在一定的亮度範圍內,這樣物體在渲染環境中才能表現出更明亮的高光和更深邃的陰影。

說到亮度範圍,這裏通常是指非導體(電介質)材質反射的顏色。在圖 23 中,你可以看到污垢的色值超出正確亮度範圍的效果(紅色區域)。對於暗色值,盡量不要低於 30-50 sRGB,嚴格控制下應該不低於 50 sRGB。對於亮色值,貼圖中也不應該有色值高於 240 sRGB。

Base Color 貼圖中包含着非導體(電介質)材質的反射光信息,所以裏面應該避免含有類似 AO 這種光照信息。但是有一種情況可以除外,當著色器不能只用 AO 通道來表現出我們預期的細節時,我們可以在 Base Color 中增加微觀遮蔽(Micro-occlusion)效果。然而,當 Micro-occlusion 被加到貼圖時,它仍然需要被亮度範圍所限制。

當 Base Color 貼圖中的值是指金屬的反射值時,這些值應當採用真實世界中的測量值。這些值大概會有 70-100% 的鏡面反射,映射到 sRGB 大概為 180-255。

在 Substance PBR 應用的部分,我們會再討論能預設 F0 值的工具。而由 Sebastien Lagarde 製作的 Metal/Roughness 對照表同樣是一個很好的參考依據。

再回顧一下Base Color的幾個重點特性:

  • 貼圖中的顏色對於非金屬材質來說是它的反照率顏色(Albedo),對於金屬材質來說則是它的反射值(Reflectance value,所帶色相與其反射的波長有關)。
  • Base Color 除了微觀遮蔽信息(Micro-occlusion)以外,不應該含有任何光照信息。
  • 暗色值在寬鬆條件下不應該低於 30 sRGB,嚴格來說不應該低於 50 sRGB。
  • 亮色值不應該高於 240 sRGB。
  • 原始金屬的反射值一般都非常高,大概能達到 70-100% 的鏡面反射,映射到 sRGB 範圍大概是 180-255。

本文稍後會介紹金屬的部分,由於 Base Color 中也包含了金屬的反射值,如果金屬的 Base Color 貼圖加入了污垢或者氧化的顏色,那麼它們就會使得原來表示金屬反射值的數據低於原始金屬應有的範圍,此時這塊區域也不應再被認為是原始金屬。

所以金屬貼圖也務必包含污垢和氧化區域的信息,而且它們的數據必須更低(白色為原始金屬,所以非金屬應為灰階)來表示這塊區域不再是原始金屬。在圖 25 中,你可以看到,這塊生鏽的金屬中非金屬(銹跡)的部分被設置為黑色。同樣,金屬貼圖並不是非黑(0.0)即白(1.0)的蒙層,污垢在金屬貼圖中表現為過渡的灰階,表示着其為程度不一的非導體(電介質)材質。

金屬貼圖的功能可以理解為一個遮罩,它告訴着色器應該如何去解讀 Base Color 貼圖中的 RGB 數據。

3. 金屬貼圖 Metallic

灰度貼圖-Linear

金屬貼圖是用於定義物體中哪個區域是原始金屬的貼圖。作為一個灰度貼圖,他的作用就類似於一個圖層遮罩,告訴着色器應該如何去解讀 Base Color 貼圖中的 RGB 數據。

金屬貼圖中並沒有包含直接被材質引用的真實世界的數據(如反照率顏色、反射值等),它只是比較簡單地對着色器描述 Base Color 中的哪個區域應該被解析成反照率顏色(非導體),哪個區域應該被描述成金屬的反射值。

在金屬貼圖中,0.0(純黑-0sRGB)代表了非金屬,而 1.0(純白-255sRGB)代表了原始金屬。當金屬貼圖被用於定義原始金屬與非金屬時,一般都是二態的:純黑或純白,意味着材質除了原始金屬就是非金屬。在實現過程中,當著色器監測到金屬貼圖中的白色區域時,它會檢查 Base Color 貼圖中相應的位置來獲取金屬的反射值並進行渲染(如圖26)。

製圖指引

金屬表面有兩個和材質相關的重要屬性:第一,它們的反射值一般很高,會造成 70-100% 的鏡面反射。第二,有些金屬會被腐蝕。我們接下來會在製圖指引中單獨討論這兩個屬性。

原始金屬Raw Metal

當金屬貼圖被賦值為 0 或 1 時,這就意味着這片區域是或不是原始金屬,而原始金屬就是指未被腐蝕、完美拋光的金屬狀態。作為一個通用的準則,原始金屬在金屬貼圖中的灰階範圍大概是 235-255 sRGB 之間。在這個區間里的金屬會在 Base Color 貼圖中會透傳為 70-100% 的反射值,而對應 sRGB 範圍 180-255 sRGB(如圖 27)。再次強調一下,Base Color 中這些數值都是基於真實世界測量的數據。

腐蝕的或非導體(電介質)圖層 Corroded or Dielectric Layer

當設計師在做舊一個金屬材質時,需要考慮這個金屬材質是否被腐蝕,並考慮環境中諸如污垢和塵埃等因素。在這些情況下,金屬材質的局部就需要被當做是非導體(電介質)材質來看待。對於上漆的金屬也是一樣,如圖 28 所示,當漆層被劃開或撬掉時,會露出底部的原始金屬(金屬貼圖中显示為白色),而有漆的部分仍舊是一個非導體圖層(金屬貼圖中显示為黑色)。

金屬貼圖也可以用過渡的灰階來表示金屬與非金屬在貼圖中的混合狀態。如果在金屬貼圖中有灰色色值低於235 sRGB 時,你需要手動降低 Base Color 中原始金屬的反射值。在圖 29 中我們可以看到,污垢層遮掩了一部分的金屬,而污垢實際上是非導體(電介質),如果金屬貼圖中,對應污垢的地方仍是白色,那麼渲染時,着色器就會認為這個區域的 Base Color 是金屬的反射值。但是我們也知道,污垢的色彩值是遠遠低於拋光金屬 70-100% 的反射值的。此時,只有降低金屬貼圖中代表污垢的值,才能精確實現這種介乎於非導體與高反射金屬之間的混合材質。

污垢層的透明度決定了 Base Color 中的反射值能被降低多少。這裏其實沒有硬性的規定。本質上你只是將一個高反射表面(導電材質)轉換成低反射表面(非導體材質),然而這中間的過渡情況是應情況而異的。

使用 Substance 工具能夠很好地展示磨損效果,而且這些效果不僅影響單個通道的貼圖,也會延伸到其他通道上。在 Substance Designer 和 Substance Painter 中,你可以通過 Substance 效果生成器來調整參數,它會自動地對效果進行跨通道的調整。

舉個例子,在 Substance Designer 中可以使用 Material Color Blend 節點對效果進行跨通道的應用(例如污垢效果)。在 Material Color Blend 中,也可以透過調整金屬值(Metallic Value)來控制污垢在金屬上的效果(圖 30)。

我們再來回顧一下金屬貼圖的幾個要點:

  • 金屬被氧化、腐蝕、上漆、覆塵后,這些區域需要被當做非導體(電介質)材質來看待。
  • 在金屬貼圖中,純黑(0.0)代表了非金屬,純白(1.0)代表了金屬,我們可以用過渡的灰階來表示不同程度氧化和污垢。
  • 如果金屬貼圖中有值低於 235 sRGB,那麼在 Base Color 中對應區域的反射值也應該降低。
4. 粗糙度貼圖 Roughness

灰度貼圖-Linear

粗糙度貼圖用於描述造成一個表面的不規則度,這種不規則度會造成光的漫射(如圖 31)。正如我們在第一章中所說,光會基於表面的粗糙度進行方向隨機的反射。雖然這個現象中光的方向被改變,但是光的強度是恆定的。越粗糙的表面會擁有越大越暗的高光,而越光滑的表現就越能將鏡面反射聚攏,讓高光看上去更亮更強。儘管這兩者實際上都是反射了強度一樣的光。

在粗糙度貼圖中,純黑(0.0)代表了平滑表面,而純白(1.0)代表了粗糙表面。粗糙度貼圖可以說是最有創造力的貼圖,因為它允許藝術工作者從視覺上定義這個表面的特性,你可以從一個表面的材質成色和狀態來講述它的故事。它正處在什麼環境中?它是被呵護的還會被糟蹋的材質?它有沒有被暴露在自然環境之中?一個表面的狀態可以透露出它所在的環境、場景以及你希望創造的世界觀。

粗糙度是一個非常主觀的領域。作為一個藝術設計者應該放開手去嘗試。而法線貼圖往往也是粗糙度的一個很好的切入點,因為法線貼圖往往也包含着很多關鍵的表面細節,而這些細節也常常在粗糙度貼圖中復現。

製圖指引

發揮你的創意,說出貼圖的視覺故事。

5. 分辨率與紋素密度 Resolution and Texel Density

M/R 工作流的其中一個副作用就在於會產生白邊效應(如圖 32)。這個情況在 Specular/Glossiness 工作流中也會發生。然而在 S/G 工作流中,效果不會那麼明顯,因為白邊會變為黑邊。(如圖 33)

這樣的邊緣效應是由於材質的插值造成的,在非導體(電介質)材料與明亮金屬這種強對比的過渡邊界處尤為明顯(如圖 34)。在 M/R 工作流中,Base Color 里包含了非常亮的金屬反射值,其中又插入了非金屬漫反射色的數值,所以產生了白邊。在 S/G 工作流中,Diffuse 貼圖中因為原始金屬並沒有漫射色,所以呈現為黑色。而這些代表金屬的黑色值又在材質交界處被插入了非金屬的漫射色,所以邊緣也呈現出黑色。

貼圖文檔的分辨率與紋素密度對邊緣效應也有着直接的影響。舉個例子,如果你用硬筆刷來繪製金屬與非金屬的交界,在低像素的文檔中,這個交界的像素依然會被軟化,從而加劇這個邊緣效應。而低分辨率的問題也有可能是由 UV 的比例造成的,如果模型的 UV 在導入前沒有被等比放大到一定程度(局部 UV 的面積太小,即使它在高清紋理中,它的紋素密度未必會足夠高),它就無法提供足夠的紋素密度來滿足這個貼圖的分辨率,邊緣效應也會比較明顯。所以最好的減輕邊緣效應的方法,還是需要前期就給 UV 提供足夠的紋素密度(如圖 35)。

在圖 35 中,兩組紋理都是用了 2K 分辨率,但是右邊的 UV 比例由於布局時就偏小,所以它的紋素密度也非常低。

製圖指引

紋素密度與分辨率直接影響了 M/R 工作流中的白邊效應。如果希望減輕這個現象,就需要在前期保證 UV 展開時的布局和面積,保證它能提供足夠的紋素密度,來對應材質製作文檔的分辨率。

6. 金屬/粗糙度工作流的優劣勢

優勢

  • 在 M/R 工作流中,由於非導體(電介質)的 F0 都是規定好的,所以設計師在對非導體 F0 賦值時不易出錯。
  • 紋理的緩存壓力更小,因為金屬貼圖和粗糙度貼圖都是灰度貼圖。
  • 目前來說是兼容性最廣的工作流。

劣勢

  • 非導體(電介質)F0 的值固定為 4%,無法調整。然而,在大多是實現流程中都有控制器可以直接複寫這個值,所以也不能算硬傷。
  • 白色邊緣問題較明顯,尤其在低分辨率的情況下問題突出。

鏡面反射/光澤度工作流

和 M/R 工作流一樣,鏡面反射/光澤度工作流(Specular/Glossiness Workflow, 下文簡稱 S/G Workflow)也是透過一系列通道貼圖來進行定義的。這些 S/G 工作流獨有的貼圖分別是 Diffuse(漫反射貼圖)、Specular(鏡面反射貼圖)、Glossiness(光澤度貼圖)。

雖然 S/G 工作流使用了我們比較熟悉的名詞,如 Diffuse 和 Specular,但是需要注意區分的是,這些貼圖對應的真實屬性和他們的傳統含義並不完全一致。Substance 里用的叫法是 Diffuse(漫反射),但是在某些實現流程中也被叫做 Albedo(反照率顏色)。

除此之外,之前也提到過在兩套工作流里,PBR 着色器都可以用到 AO 貼圖、法線貼圖和高度貼圖來表現光影視差與置換位移的映射效果。

在這個工作流里,金屬的反射值和非金屬的 F0 值被放置在鏡面反射貼圖(Specular)中,而且將有兩張 RGB 通道的貼圖:Diffuse Color(Albedo)和鏡面反射貼圖(Specular)。在鏡面反射貼圖中,你可以對非導體材質的 F0 值進行控制。

正如我們在 M/R 工作流中提到過的一樣,PBR 着色器自動遵循能量守恆定律。而在 S/G 工作流里這顯得更為重要,因為在鏡面反射貼圖中,設計師可以對非導體(電介質)的 F0 值進行控制。這就意味着,那張貼圖很可能被人為賦予錯誤的值。舉個例子,一個純白的漫反射(1.0)和一個純白(1.0)的鏡面反射值加起來表示的反射光線就多於它原來接受的光線,而這就打破了能量守恆定律。結果就是,當我們這麼製作材質時,材質數據就無法產生真正合理的效果。

如你所見,貼圖中呈現的數據和 M/R 工作流是一樣的,只是數據被放在了不同的貼圖,所以仍會遵循一樣的製圖規範,差異就在於我們應該如何製作這些 S/G 工作流的貼圖。

之前也提到過,非導體(電介質)的 F0 值、金屬的反射值、反照率顏色的亮度範圍,這些都是真實測量的數據。接下來當講到每個貼圖種類時,會更具體地講述基於測量數據的貼圖該如何製圖。但和 M/R 工作流重複的內容則不再贅述,本段會更集中地比對兩套工作流的差異。

1. 漫反射貼圖 Diffuse

RGB貼圖-sRGB

正如 M/R 工作流中的 Base Color 貼圖,漫反射貼圖包含了反照率顏色。然而它卻不包含任何反射值。

製圖指引

由於漫反射貼圖中只包含反照率顏色(Albedo),所以那些指示原始金屬的區域會被標記為黑色(0.0),因為金屬不會有任何漫反射色彩(如圖 37)。如果金屬受到了氧化或腐蝕,則該區域會帶有一定的顏色,而且也不會被判定為原始金屬。除此之外,污垢、上漆等在原始金屬上增加了一層非導體(電介質)材質圖層,在漫反射貼圖中都是一樣的處理。

所以 Diffuse 在色調上的製圖指引和 M/R 工作流中的 Base Color 幾乎是一樣的,區別就在於如果貼圖需要展示原始金屬,那麼該區域就是為零的值(显示為純黑,0.0),而且不會受到暗度範圍的約束。

  • 漫反射貼圖中的顏色表示的是非金屬的反照率顏色,而純黑(0.0)代表的是原始金屬。
  • Base Color 除了微觀遮蔽(Micro-occlusion)外不應該帶有其他光照信息。
  • 除了表示金屬的純黑(0.0)外,暗色值最多不應該低於 30 sRGB,嚴格上說,不應該低於 50 sRGB。
  • 亮色值不應該亮過 240 sRGB。
2. 鏡面反射貼圖 Specular

RGB貼圖-sRGB

鏡面反射貼圖是用於定義金屬反射值和非導體(電介質)F0 值的貼圖(如圖 38)。由於鏡面反射貼圖是 RGB 貼圖,所以非導體材質可以賦予不同的 F0 值。而在 M/R 工作流中,非導體(電介質)的 F0 值是被寫死的 4%,而且也只能透過軟件中的「Specular Level」通道來調整。正如我們在 M/R 工作流中提到的一樣,F0 值需要從真實世界的測量中獲得,而這個 F0 值一般來說都會是比較暗的值。對於金屬而言,由於不同的金屬會吸收不同光的波長,所以他會反射出不同的顏色。在鏡面反射貼圖中,金屬和非導體的 F0 值都被寫在了 RGB 通道當中。

製圖指引

由於鏡面反射貼圖包含了金屬和非金屬的 F0 值,所以我們也會分別描述他們的製圖規則。

原始金屬

原始金屬的 F0 值應該是基於真實世界測量的數據來設定。如果金屬產生了氧化或者有些覆蓋層被定義為非金屬時,這個金屬區域的反射值就要降低。而在 S/G 工作流中,污垢和氧化層在漫反射貼圖中的色值會變亮,而在鏡面反射貼圖中的色值會變低(如圖 39)。圖 39 中展示了原始金屬上存在污垢層,而這片污垢在鏡面反射貼圖中就使用了正確的非導體(電介質)F0 值(在這個案例中使用了 4%)。

非導體(電介質)

非金屬的 F0 值同樣也被記錄在鏡面反射貼圖中。在這裏,雖然你可以自由地調整非導體(電介質)的 F0 值,但是務必要使用正確的值。正如我們在第一章提到的,非金屬(絕緣體/非導體/電介質)是較差的電導體。由於光被折射或被吸收(或者穿透表面再次發射),所以這些材料會比金屬反射的光少得多。基於折射率(IOR)的運算,大部分非導體的 F0 值會在 2-5% 左右,而寶石是一個特例。在線性空間中的換算,大部分非導體的 F0 值大概是 0.02-0.05 左右。

在 sRGB 中,我們會使用 40-75 sRGB 的範圍,對應線性空間中 0.02-0.05(2-5%)的區間。

如果你無法知道某個材質的折射率,可以假設它的 F0 為 4%(0.04是塑料的反射值),而寶石的反射值較高,在線性空間中大概是 0.05-0.17(如圖40所示)。在金屬的工作流中,當你使用 Specular Level 調整時,着色器會被映射到 0.0-0.08(線性空間),此時 0 就代表空氣的反射率。

來回顧一下鏡面反射貼圖的重點特性:

  • 鏡面反射貼圖包含了非導體(電介質)的 F0 值和原始金屬的反射值。
  • 非導體(電介質)反射的光比金屬少。普遍非導體的反射值為 2-5%,在 sRGB 中,這個值大概在 40-75 之間,這個區間和 0.02-0.0 5的線性空間範圍是重疊的。
  • 普通寶石的反射值範圍在 0.05-0.17(線性空間)。
  • 普通液體的反射值範圍在 0.02-0.04(線性空間)。
  • 而原始金屬的反射值則可以高達 70-100% 的鏡面反射,映射到 sRGB 約為 180-255 sRGB。
  • 如果你無法找到某個材質的折射率(IOR),那麼你可以先假設它的 F0 為 4%(0.04 為塑料反射值)。
3. 光澤度貼圖 Glossiness

灰度貼圖-Linear

光澤度貼圖適用於描述表面不平整度的貼圖,表面不平整會造成光的散射(如圖 41)。在這個貼圖中,純黑(0.0)代表的是粗糙表面,而純白(1.0)代表了平滑表面。這和 M/R 工作流里的粗糙度貼圖是完全相反的,但是在設計側卻有着類似的製圖原則。

製圖指引

盡可能地表現你的創造力,來显示這個表面的故事。

4. 分辨率與紋素密度 Resolution and Texel Density

之前我們也有提到過兩個工作流中會出現的邊緣效應,在 M/R 工作流中,由於邊緣顯色為白色(金屬的高反射值)所以會更加明顯。在 S/G 工作流中,漫反射貼圖的中的原始金屬並沒有漫反射色,所以显示黑色,而這些黑色值的邊緣會插入非金屬的漫反射色,所以就形成了如圖 42 所示的黑邊。

再次強調,文件本身的分辨率和貼圖的紋素密度對邊緣效應有着直接的影響。而表面所對應的 UV 本身的布局和大小也會對紋素密度造成影響,原理和之前在 M/R 工作流中提到的是一樣的,就不再贅述。

製圖指引

紋素密度與分辨率直接影響了 S/G 工作流中的黑邊效應。如果希望減輕這個現象,就需要在前期保證 UV 展開時的布局和面積,讓它能提供足夠的紋素密度,來對應材質製作文檔的分辨率。

5. 鏡面反射/光澤度工作流的優劣勢

優勢

  • 邊緣效應不會那麼明顯。
  • 可以在鏡面反射貼圖中對非導體(電介質)材質的 F0 值自由調整。

劣勢

  • 由於在 S/G 工作流的鏡面反射貼圖中,非導體(電介質)材質的 F0 值是可以自由調整的,所以也會導致設計師容易輸入錯誤的值。而這些錯誤的值被着色器誤讀後可能會打破能量守恆定律,從而造成不正確的渲染效果。
  • 由於新增了一張 RGB 通道的鏡面反射貼圖,所以對性能消耗會更大。
  • S/G 工作流有些名詞和傳統的工作流太相似,但是實質所對應的數據可能是不一樣的,因此會導致設計師容易誤解或誤操作。這種情況下就要求設計師有更好的 PBR 理論知識,例如了解非導體(電介質)的正確 F0 值,金屬在漫反射色下錶現為純黑,以及在着色器沒有自動校正情況下,能量守恆相關的基礎知識。

通用貼圖:適用於兩套工作流

1. 環境光遮蔽/環境光吸收貼圖 Ambient Occlusion

AO 貼圖用於定義一個表面上的每個點在環境光下的暴露程度,它通常被用在後制效果中(加重夾角、交界面的陰影細節等)。AO 貼圖只會影響漫反射而不會遮蔽鏡面反射的表現。在某些引擎(如Unreal Engine4)中會擁有一些選項,讓屏幕空間的反射(Screen Space Reflection)去模擬本地反射(Local Reflections)。而最好的反射處理就是使用 AO 貼圖與屏幕空間的反射進行混合。

在 Substance PBR 着色器中,環境光(由環境貼圖生成)會和 AO 貼圖進行疊加。AO 貼圖由 PBR 着色器中的材質採樣器提供,而且並不是一個必要的貼圖通道(圖 44)。AO 貼圖不應該被烘焙在材質貼圖中,因為它在着色器中只會在自己獨有的通道里作用。

製圖指引

在 SP 或 SD 里,AO 貼圖既可以從一個模型里烘焙出來,也可以利用內置的烘焙工具製作,或從法線貼圖裡進行轉換。而且在 SP 和 SD 里,你都可以利用 HBAO 節點或者濾鏡,並通過高度的輸入值來生成基於水平視角的 AO 貼圖,它的效果和光線跟蹤烘焙出來的效果是非常相似的(如圖 45)。

2. 高度貼圖 Height

高度貼圖通常被用作渲染置換(Displacement)效果,它可以用作視差映射,來給紋理增加更明顯的深度,而且比起法線和凹凸貼圖更加真實。Substance 中用的是均勻視差映射算法(Relief Mapping Parallex Algorithm)。高度同樣不是一個必要的貼圖通道,而且它也是由 PBR 着色器里的紋理採樣器提供的。在 SD 中,你可以使用視差遮蔽(Parallax Occulusion)或者細分鑲嵌式着色器(Tessellation Shader)。在 SP 中,則可使用置換通道(Displacement Channel)來執行視差遮蔽。

製圖指引

和 AO 貼圖一樣,高度貼圖在 SP 和 SD 中既可以從一個模型里烘焙出來,也可以利用內置的烘焙工具從法線貼圖裡進行轉換。在 SD 中可以使用節點從法線貼圖裡轉換出高度貼圖(圖 47)。而在 SP 中,你可以直接繪製高度的細節(圖 48)。

為了節省性能,在實時渲染器中使用高度貼圖時,我們應該減少貼圖中的高頻細節。高度貼圖設計時更傾向於呈現置換體(用於置換幾何體面形態的形狀)的整體輪廓。一個比較推薦的實操方式是,用模糊/精度較低的高度貼圖來塑造置換體的外形,並且減低它的高頻細節。然後,再用法線貼圖來提供高頻細節,而高度貼圖只置換了整體輪廓。如果你在光線跟蹤渲染器(Raytrace Renderer)里使用高度貼圖實現置換效果時,高頻細節就不可缺失了。

3. 法線貼圖 Normal

法線貼圖可用於模擬表面的細節。貼圖中的 RGB 通道分別對應的是表面上不同部位法線的 X、Y、Z 坐標。它可以用作保存高模的細節,並且映射到低模中去。在 Substance 工具系列中,你可以烘焙法線貼圖也可以從高度貼圖裡轉換法線貼圖。

製圖指引

在 SP 或 SD 中,可以利用內置的烘焙工具從模型中烘焙法線貼圖。在 SD 中,你可以利用法線點將高度轉換成法線貼圖(如圖 50)。而在 SP 中,你也可以直接在 3D 視圖中直接繪製法線數據(如圖 51)。

Substance PBR 貼圖繪製工具

在這個章節里,我們將介紹幾個可以製作 PBR 貼圖的工具,以及如何設置正確的反射值。這些工具都是對應這本指南中提到的概念和原則進行設計的。

1. Substance Designer

PBR 基礎材質 (PBR Base Material)

SD 中有一個支持創建 PBR 完整基礎材質的節點,可以在 Material Filter/PBR Utilities 里找到(圖 52)。它同時支持 M/R 工作流與 S/G 工作流,並且為原始金屬材質提供了通用的預設。如果你需要創建非金屬材質,SD 也允許用戶對反照率顏色(Albedo)進行設置。對於不同的工作流,Roughness 和 Glossiness 兩個通道的控制器可能有所不同,並且伴隨着一系列對應的可控制項。你可以在對應通道里使用貼圖並查看其效果,如 Base Color、法線或者高度貼圖。

非導體(電介質)F0值

這個節點可以用作輸出常見非導體材質的 F0 通用值(圖 53),它位於 Material Filters/PBR Utilities 中。你可以在預設中選擇,也可以手動輸入。這個節點有一個折射率(IOR)的輸入框可供設定,它會根據這個折射率來計算 F0 的數值。它是專門為非導體材質所設的,並且可以在 S/G 工作流中使用。

金屬反射值

金屬節點可以用作輸出常見原始金屬的反射值,它位於 SD Library 的 Material Filters/PBR Utilities 中。同樣的,你可以從預設裏面選擇合適的金屬反射。

PBR 金屬/粗糙度 校驗

在 M/R 工作流中,這個節點用於檢查 Base Color 和 Metal Maps 里的錯誤數值。它位於 Material Filters/PBR Utilities。這個節點會輸出一個從紅>黃>綠的熱力圖,紅色區域显示的就是錯誤的數值區,而黃色和綠色區域則是正確的。金屬情況下,它會檢查被金屬貼圖中示意為金屬的區域,在 Base Color 中對應的 F0 值是否正確(大於235 sRGB),熱力圖會显示哪些地方的 F0 範圍過低。對於 Albedo 貼圖來說,它則會驗證非導體的亮度範圍是否正確。

PBR 安全色 / PBR Safe Color

這個節點會修正 Base Color 和 Diffuse 貼圖中的值(如圖 56 所示),它會保證電介質的亮度值落在正確的範圍內。這個節點位於 Material Filters/PBR Utilities。

貼圖轉換 Conversion

這個節點可以將 M/R 工作流中的貼圖轉換到適應不同渲染器的貼圖,同樣可以在 Material Filters/PBR Utilities 中找到。目前可支持以下渲染器:

Vray(GGX), Corona, Corona 1.6, Redshift 1.x°, Arnold 4(aiSurface)°, Arnold 4(aiStandard)°, Renderman(pxrSurface)

值得注意的是,Arnold 5 和 Redshift 2.x 目前可支持 Base Color/Metallic/Roughness 工作流直出的貼圖。

2. Substance Painter

PBR 金屬/粗糙度校驗(濾鏡) PBR Metal/Roughness Validate(filter)

在 M/R 工作流中,這個濾鏡用於檢查 Base Color 和 Metal Maps 里的錯誤數值(如圖 57)。它是一個免費的濾鏡,你可以在 Substance Share 中下載。

這個濾鏡也會輸出一個從紅>黃>綠的熱力圖,紅色區域显示的就是錯誤的數值區,而黃色和綠色區域則是正確的。對於金屬材質來說,它會檢查被金屬貼圖示意為金屬的區域,在 Base Color 中對應的 F0 值是否正確(大於235 sRGB),熱力圖會显示哪些地方的 F0 範圍過低。對於 Albedo 貼圖來說,它則會驗證非導體的亮度範圍是否正確。

在 SP 中使用時,可以將濾鏡導入到你的項目中,或者將這個濾鏡直接拷貝到濾鏡文件夾中常備。

3. Substance 輸出與渲染

從 Substance Source 中獲取的 Substance 材質都可以支持 M/R 工作流和 S/G 工作流。他們的輸出內容都可以用在 PBR 實時着色器中,例如 Unreal Engine 4 或者 Unity。而 Base Color/Metallic/Roughness 相關輸出也可以被應用在可以支持金屬工作流的光線追蹤渲染器中(Raytraced Renders),如 Arnold。而 S/G 相關的貼圖只能用於實時着色器。對於不同的渲染器,你可能可以直接使用 BaseColor/Metallic/Roughness 貼圖,又或者需要對它們進行轉換。

然而對於某些渲染器來說,從 Substance Source 中下載的定製化或自由創作的材質或資源可能並不具備符合 PBR 的標準輸出,因為他們可能只包含了 Base Color/Metallic/Roughness 的貼圖。所以在應用材質前,我們需要充分理解當前導入材質所攜帶的貼圖類型及輸入數據,以及當前使用的渲染器能接受哪種貼圖類型或輸入數據,這樣才能對輸入源進行對應的轉換,並且最終正確應用和輸出 Substance 材質。

舉個例子,在 Arnold 5 中,你可以直接使用 M/R 工作流的輸出貼圖。然而在 Vray 材質中,你需要對 M/R 的輸出貼圖進行轉換,使其生成反射貼圖和 1/IOR 貼圖。Substance Painter 支持若干第三方渲染器配置(如圖 58),可根據後續對應的渲染器進行輸出。

Substance 協作插件可以將 Substance 材質的輸出物直接轉換到特定渲染器可使用的格式。舉個例子,3ds Max 的 Substance 協作插件有各類預設,可以與 Arnold、Vray、Corona 打通。使用這些預設會自動將 Substance 輸出貼圖進行轉換,並可直接應用在這些渲染器中。

想了解更多關於 Substance Painter 和 Substance Designer 的操作,可以參考 Substance Integrations 的官網渲染文檔。

附錄

在創建材質的初期,當我們需要對材質進行判別時,將表面材質拆分為金屬與非金屬兩個類目來理解會更加直觀有效。從下面兩個表格中,我們可以快速查閱上文提到的兩套工作流的材質製作指南。

1. 反射值

圖 62 展示了在 M/R 工作流中,非導體(電介質)材質的 F0 值範圍與次世代 PBR 着色器之間的關係。比起金屬材質,非導體材質會反射更少量的光。普遍非導體材質的 F0 值會在 2-5% 之間,對應的是 RGB 範圍為 40-75,與 0.02-0.05 線性範圍重合。

在圖 63 中,你可以同時比較非導體的 F0 值和金屬的反射值。對於金屬材質來說,它們的反射範圍是 70-100%,對應 180-255 sRGB。sRGB 與 Linear 空間之間的換算使用的是 gamma2.2 的近似值,具體可以參考第一章中的細節描述。

2. 正確/錯誤貼圖比較

圖 64 显示了在 M/R 工作流中,正確與錯誤貼圖的示範案例。污垢在金屬貼圖中被示意為原始金屬,而且 Base Color 中原始金屬所對應的反射值被設定得太低,會導致這部分區域最終無法反射出金屬應有的 70-100% 範圍。

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

參考文獻:

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

赞 (0)