新版 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资源管理器里面的预览和视频中的一样,但是渲染出来的效果还是第一步的那个不锈钢球的样子。我重做了好几遍步骤确定都是一样的,都是案例包可以成功但是自己复刻一次就失败了。想问一下是不是有设置出错了,还是说我的建模有问题。

发表评论