新版 V-Ray,金屬應該這么調 —— 金屬度(metalness)專題講座

  • 本視頻使用優酷提供的通用代碼引入,可以支持PC和IOS設備,如果始終處于讀取狀態,請到我的優酷頻道觀看。

qq群:250261286

文/黃瑋寧

自打 V-Ray 更新到 Next 版本以后,相信許多朋友都或多或少看見過 Metalness 金屬度這個參數。

在 3ds Max 里是這樣的一個參數:

在 SketchUp 里是這樣的一個節點:

這個金屬度是什么意思?該怎么用?今天咱就來詳細地介紹介紹。

原理講解

文中使用到的軟件版本:

V-Ray 4.00.02 for SketchUp 2018

V-Ray Next, update1.1 (4.10.02.00001) for 3ds Max 2018


圖片來源:“Real-Time Rendering, 3rd Edition”, A KPeters 2008

在往期的 V-Ray for Rhino 材質基礎課中,我們知道了非金屬物體的漫反射原理是入射光線(黃大箭頭)射到物體表面后,有一部分光線穿入物體內部,經過多次散射再穿出物體表面,朝四面八方擴散(藍小箭頭),所以我們可以從四面八方看到物體的顏色。(見上圖)


圖片來源:“Real-Time Rendering, 3rd Edition”, A KPeters 2008

但是對于金屬物體來說,入射光線穿入物體內部后會被完全吸收,沒有了內部的散射,也沒有了散射后的穿出,也就意味著沒有了漫反射現象。(見上圖)

這也就是為什么以前我們使用 VRayBRDF 節點制作金屬材質的時候,會將 Diffuse 漫反射拉成黑色:

不僅如此,為了有金屬般的強烈反射,我們還會將材質的 IOR 折射率設置為一個很高的數值,例如 25:

可是當我們查閱相關科學文獻的時候,卻發現各金屬的 IOR 都是一個非常小的數值,例如 0.453、1.219 等。

此種不一致性,何解?

其實是這么回事:在 Next 版本以前,我們常用的 VRayBRDF 節點壓根就不是用來調金屬的,它是一個非金屬材質模型,也就是只能用來制作絕緣體(Dielectric)。所以如果想用它來做金屬材質,就只能非常藝術化地將 IOR 拉高,做一個看起來像金屬的材質。

補充一句:這個時候要是再把菲涅爾 Fresnel 計算關閉,那就更是錯上加錯了。

倘若真的希望結合物理數據來制作一個金屬材質呢?V-Ray for SketchUp 用戶是沒轍了,V-Ray for 3ds Max 用戶倒是可以使用 ComplexFresnel 插件,通過輸入紅綠藍三個波段下的 n 值和 k 值(在 RefractiveIndex.info 這個網站查詢)來制作物理正確的金屬材質:

不過在 Next 版本更新以后,有了新增的 Metalness 參數,上述這種方法就被淘汰了。

Metalness 參數(Metallic節點)的使用方法很簡單。V-Ray 官方在《了解金屬性》這篇文章中,V-Ray 作者 Vlado 根據科學數值,結合 V-Ray 自身的情況,給 V-Ray 用戶整理出了一個表格:

表格中詳細說明了如何在 V-Ray 中使用 Metalness 參數制作各類金屬單質。在 V-Ray Next for 3ds Max 中,以 Copper 銅單質為例:Diffuse 輸入(238,158, 137),Reflection Color 輸入(255,255, 255),IOR 輸入1.21901(四舍五入1.22),Metalness 輸入 1。得到的結果就是一個不含任何雜質的純銅材質:

對于 SketchUp 用戶來說,要麻煩一些,我們在輸入 Color 這一項色值的時候,需要將拾色器的 Color Space 色彩空間和 Range 范圍分別設置成 Rendering(RGB)渲染空間和 0-255:

這是因為表中的數據都是 Linear 線性數值,而 V-Ray for SketchUp 中的拾色器默認是 sRGB 色彩空間的,所以需要進行切換。

看到這里,操作層面的事情,相信大家是明白了。但是回顧文章開篇的內容:“在金屬材質中,部分入射光線穿入物體內部后會被完全吸收,所以金屬的漫反射為純黑色”,那為什么這里還要給 Diffuse 漫反射顏色輸入一個色值呢?

是這樣的:還記得在 VRayBRDF 節點中非金屬和金屬的做法嗎?非金屬材質,例如塑料,漫反射給一個顏色,反射拉起來,IOR 給一個常見的 1.6:

金屬材質,例如金子,漫反射純黑,反射顏色給一個金黃色,IOR 給個35:

大家有沒有發現,對于非金屬材質來說,反射屬性沒有顏色傾向,只需要一個灰度;而對于金屬材質來說,漫反射屬性是沒用的,是一個廢條件。

所以在 Metallic 節點中,Color 這一參數就將材質的漫反射和反射顏色兩個屬性結合起來了,同時,使用 Metalness 金屬度參數來控制兩者的切換。即:當 Metalness=1 時,這是一個金屬材質,Color=Reflection 反射顏色;當 Metalness=0 時,這是一個非金屬材質,Color=Diffuse。

這么做可以將原來的 RGB(Diffuse)+RGB(Specular)=6 個通道縮減成 RGB(Color)+V(Metalness)明度=4 個通道。對效果圖用戶來說,感覺似乎影響不大,但對于游戲行業的 CG 工作者來說可就節省了大量的資源。

所以,真相大白:這里和之前所鋪墊的理論并不矛盾,不是金屬有了漫反射,而是在制作金屬的時候,借用 Diffuse 漫反射這一彩色通道當做 Reflection 反射顏色來用了。相信這也解答了許多 3ds Max 用戶的困惑。

照這么說來,既然 Metalness=0 時,這是個非金屬;Metalness=1 時,這是個金屬,那么 Metalness 應該更像一個開關,而不是滑竿呀,中間的小數部分是干嘛用的?有沒有既是金屬又是非金屬的東西呢?哦!半導體?

這么猜測也許有道理,也許半導體材料還真就得這么調,但是轉念一想,我們在實戰中做渲染的時候,有多少機會去制作一個真正意義上的半導體材料呢?其實是機會很少的。

再換句話說,有的朋友想要降低金屬的反射率,下意識地去壓低金屬度參數,殊不知這個時候其實完全就是另外一種物質了,反正絕對不是你想要的“低反射金屬”了。

我更傾向于相信如下的解釋:

在 Chris Nichols 的 CGGarage 播客節目中,就曾邀請過 Zap Andersson

(Autodesk 公司的著色器專家)作為嘉賓,兩人詳細討論了金屬性的實際應用。

左側為 Chris Nichols,右側為 Zap Andersson



這可就全明白了,我們制作材質的時候,Metalness 就使用 0 和 1 這兩個數就行。制作非金屬時,Metalness=0;制作金屬時,Metalness=1,中間的灰度是用來給 Metalness 貼圖抗鋸齒用的。

不過話說回來,我們很難在現實生活中看到純純的金屬單質,所以不要讓表格限制了我們的藝術創作。如果金屬的顏色太鮮艷了,那就降低反射顏色的飽和度;如果反射太強了,那就降低反射顏色的明度,但是千萬別通過把 Metalness 改成 0.8 來降低反射強度,這就是大錯特錯了。

案例演示

接下來讓我們通過一個小案例,了解如何正確地使用 Metallic 節點來對接 PBR 貼圖。

這里我用到的是一套來自 Poliigon 的材質貼圖,是一個鋁制卷簾門的材質:

在這個案例中,大家不僅僅能學會如何使用 PBR 貼圖,還能學會如何給材質增加細節。

1# 材質基礎

首先新建一個 Metallic 節點,賦予給模型:

這時候默認是一個帶有反射屬性的灰色塑料材質:

接著將材質轉換為金屬,即 Metalness=1,同時 Color=1,使用一個類似不銹鋼的效果作為材質基底:

2# 高度信息

然后為材質增加大體的高度信息,也就是使用 Displacement 置換貼圖(使用線性加載),把卷簾門的高度起伏做出來。這里我使用 Binding 將置換貼圖顯示在模型中:

并將貼圖大小改為 4000mm*4000mm,同時把置換強度設置為 10。結果如下:

大體的高度信息有了,接下來再增加一些微小的凹凸效果,這里就需要用到 Normal 法線貼圖(使用線性加載)了。結果如下:

3# 顏色信息

說實話,現實生活中的金屬反射可沒有 100% 這么強,完全鏡面反射那是理想的鏡子(當然鏡子的本質還是金屬反射,只是很平整光滑,反射度很高,生活中的金屬一般沒有這么干凈平整)。所以我們再使用 Color 顏色貼圖(使用 sRGB 加載)來豐富一下材質的顏色信息,讓材質暗下來,更契合生活中金屬的樣子:

這么看著還是太純凈了,我決定為其添加磨損的效果,在邊角處增加一些鐵銹。這里我使用 Mix(Map)混合節點,就地取材,使用 Metalness 金屬度貼圖作為 Mix Map 混合貼圖。(見下圖)

金屬作為 Color Top,鐵銹作為 Color Bottom,將兩者混合。這個混合節點的原理是:在混合貼圖中白色的地方顯示 Color Top 也就是金屬,在圖中黑色的地方顯示 Color Bottom 也就是鐵銹。

同時增加鐵銹貼圖的 UV 重復值,縮小貼圖,然后使用 ColorCorrection 顏色校正節點降低鐵銹的飽和度,并用 BezierCurve 貝茲曲線節點將鐵銹的顏色壓暗:

在顏色屬性里將兩種材質混合后,自然也就需要在 Metalness 金屬度參數中將兩者區分,所以要在 Metalness 金屬度參數中加載 Metalness 貼圖(使用線性加載)。結果如下:

4# 反射信息

接下來就要豐富一下反射細節了,這里先介紹一下 Roughness 粗糙度參數:

Roughness 與我們熟悉的 Glossiness 光澤度參數互為反義詞,在貼圖上表現為互為反相,在數學色值運算中就是:

Roughness=1-Glossiness

Roughness 貼圖中白色代表十分粗糙,即反射效果非常模糊,幾乎沒有;黑色代表十分光滑,即反射效果非常清晰。那么我們首先就要處理鐵銹部分的粗糙度信息,正好在 Metalness 貼圖中,白色代表金屬,黑色代表鐵銹,所以在 Roughness 貼圖中就應該反過來,黑色代表光滑的金屬,白色代表粗糙的鐵銹。

然后我們來為材質增加刮痕效果。使用Mix(Operator)混合節點,將刮痕貼圖與原有的粗糙度貼圖進行疊加,使用 Add 加法模式(在Photoshop 中被翻譯為“線性減淡(添加)”),疊加兩者的白色信息。

此外我還用相同的方法疊加了一張指紋貼圖,并用貝茲曲線節點去除掉指紋貼圖中的灰色部分,只保留了指紋的細節。

經過這樣一系列操作,這個金屬材質的細節就豐富多了:

5# 后期處理

成圖中高光部分反射到的窗口過曝得太厲害了,所以最后我們來給它做一下簡單的后期。

首先使用 Highlight Burn 高光混合滑竿(見上圖)將高光壓下來,此時畫面整體也會變暗,所以再稍微提高 Exposure 曝光度,最后增加一點對比度,就可以出圖啦:

就這么簡單,一個滿滿細節的鋁制卷簾門材質就做好了。

最后,我補充說明一下在 V-Ray for 3ds Max 中的注意事項:

與 V-Ray for SketchUp 不同,3ds Max 的材質編輯器中沒有 Metallic 材質節點,使用的是統一的 VRayMtl 標準材質節點。在這個節點中,Metallic-Roughness 體系與 Specular-Glossiness 體系的參數全部整合在同一個面板中,需要謹慎區分

其中最具誤導性的就是 Diffuse 漫反射下方的這個 Roughness 粗糙度參數了(畫個重點):

它和 Metallic 體系中的 Roughness 粗糙度單詞完全一樣,但代表的意義卻截然不同。這個參數影響的是材質的漫反射屬性,隨著數值的增大會讓材質表面變“平”,是一個實際應用中極少使用到的一個參數。

所以在使用 PBR 貼圖中的 Roughness 貼圖時,千萬別往這個假的“(漫反射)粗糙度”上連線,應該在 VRayMtl 參數中的 BRDF 面板中選擇“Use roughness 使用粗糙度”這個選項,另外此處的 BRDF 類型,一定選 GGX,不要選別的:

并將 Roughness 貼圖連到 Reflect 反射貼圖下方的真正的 Roughness(反射粗糙度)節點中:

同時,3ds Max 中的 Composite 節點更適合用于多貼圖的疊加,就不需要像 SketchUp 中那樣多個 Mix 混合節點嵌套了。下面是場景案例中鋁制卷簾門材質的 Slate 材質編輯器節點圖:

最后補充個傳送門,是 Substance 對接 V-Ray for 3ds Max 的官方文檔:

https://docs.substance3d.com/integrations/vray-for-3ds-max-157352261.html

最最后,本文一切探討,都建立在線性工作流的基礎上。這是所有事情的前提。

編后記:課程播出后,有兩位網友跟我提出了這樣困惑,我不是游戲制作者,不需要省通道,是不是這個更新對我沒意義啊?

V-Ray 支持金屬度參數,其核心意義在于能夠對接 PBR 材質體系,也就意味著您現在可以使用 PBR 體系制作材質,并且可以盡情利用市面上非常流行的各種 PBR 材質資源,這相當于多了一條很寬的道路,用戶是否選擇走這條路,是用戶自身的選擇,覺得影響不太大也實屬正常。但是作為渲染軟件,有沒有為用戶提供這條路,就是質的區別了。而且這也是 V-Ray 第一次能夠不用絕緣體模型來作假金屬,改為用更科學準確的金屬材質模型來模擬金屬了。所以,從如上角度來說,是這次改進的意義所在,個人認為意義挺大的。

另外,十分感謝黃瑋寧同學為本次公開課所做的種種貢獻,除去講座內容的貢獻自不必說,以上文字稿也是瑋寧在視頻發出后連夜總結的,原文就很嚴謹,老韓僅作了簡單的編輯。

本期案例包鏈接:https://pan.baidu.com/s/1Sdu9aJigKwl-kcCrPFL96g 提取碼:jjqn

再次感謝瑋寧,他的微信公眾號是“講道理畫圖的地方”,B 站 ID 是:黃瑋寧,也感謝每一位視頻的觀眾,文章的讀者,謝謝大家!


歡迎您關注網站的微信公共平臺,所有直播活動通知,教程更新信息,都會第一時間在微信公眾平臺推送:
掃描關注“韓的日志”微信訂閱號

  • 請注意,為了保證我能看到所有留言的提示,留言將通過審核后才會顯示,請不必重復留言。
韓世麟

韓世麟

站長,天津大學研究生畢業,天津人
Bookmark the 本文的固定鏈接.

11 條評論

  1. 老韓,我在調置換貼圖的時候,怎么都沒用凹凸的效果,是哪個地方出了問題?

  2. 請問一下韓神,置換貼圖是要同時賦予給群組的模型和模型面嗎?

  3. 韓大哥,雖然畢業
    工作了不用V-Ray了但是也經常來回顧你的視頻學一些物理常識。我今天工作遇到了個問題說是有人讓我做一個原色不銹鋼 我直接脫嘴而出說金屬固有色是深色的你是要淺灰色磨砂不銹鋼吧。然后就被一通吊說你連原色不銹鋼都不知道?于是就指著材料臺上的不銹鋼門把手。。。。 所以請問原色不銹鋼這個說話在物理上是否合乎邏輯?不知道我是否表達清楚了。謝謝韓大哥

    • @Ethan 嗯我能看懂,這么說吧:我們不能否認金屬也是有色彩的,比如金子,對吧?但是這個金子的金色是怎么來的?是白光照射在上面,但是它可以吸收其他的波段,只反出黃色的光。沒問題吧?那么同理銀白色的金屬,比如不銹鋼,是怎么來的?是白光照在它上面,它只吸收少部分的光反出大部分的光,也就是百分之八九十的光,百分之八九十的光是什么顏色?是亮灰色。所以我可不可以說不銹鋼的顏色是亮灰色,個人認為是可以的。所以你們倆的分歧在哪兒呢?是在于你把顏色認為是漫反射顏色。但其實不是這樣的。一個物體的顏色既可以來源于它的漫反射貢獻,也可以來源于它的反射特性。金屬沒有或者說幾乎沒有漫反射貢獻,不代表金屬沒有顏色,它的顏色就是它的反射過濾特性。那么金子的反射過濾是黃色的,而不銹鋼的反射過濾是灰色的。不知道你能否接受這個解釋。

    • @Ethan 結合這節課所講的知識,你就能理解了為什么新的流程,有一個參數叫基色,他一會兒代表是漫反射,一會兒是反射,這恰恰非常準確,因為基色albedo(又叫三通道反照率)就是物體的顏色。關鍵在于物體的顏色它不一定是來源于漫反射或者反射特性,要看它是金屬還是非金屬。

    • @Ethan 所以其實他說原色不銹鋼,我個人認為對于一個外行來說,這么說是完全可以接受的,咱們渲染的時候就查表去不銹鋼合金三通道返照率就可以了,這個是能查到的。

      • @韓世麟 謝謝韓大哥哈哈哈,很有道理,也完全接受。根據你說的我又想了想,其實就是我倆溝通問題。我是渲染邏輯先入為主,他是主觀意識先入為主。謝謝哈哈解釋的非常清楚~十分感謝。我昨晚又補了你很久之前的寫實渲染的課程,說一個設計師你可以不知道所謂的各種參數 但是你要知道背后的物理原理。很贊,一直受用。

  4. 問一下韓神,我用下載的案例包把這個效果做出來了,但是當我打算自己做一個模型復刻一次的時候,渲染出來的效果卡在了第一步,也就是把材質做成類似不銹鋼的那一步。但是之后的步驟我跟著繼續做的話,雖然vray資源管理器里面的預覽和視頻中的一樣,但是渲染出來的效果還是第一步的那個不銹鋼球的樣子。我重做了好幾遍步驟確定都是一樣的,都是案例包可以成功但是自己復刻一次就失敗了。想問一下是不是有設置出錯了,還是說我的建模有問題。

發表評論