着色器节点 starter pack

下图是一些重要的节点:

输入 Input nodes

  • 输入:最主要是“纹理坐标节点(texture coordinate)”

纹理 Texture nodes

  • 纹理:主要包括两类节点“图像纹理节点 image texture”和“噪点节点 noise texture”
  • 图像纹理节点(image texture):是节点树的基石,It allows us to add a texture instead of a flat value.
  • 噪点节点(noise texture): We will use this to create masks.

转换器 Converter nodes

  • 转换器:主要是“分离RGB”和“颜色渐变”
  • 颜色渐变:着色器系统中最重要的节点之一
  • 分离RGB:把输入的颜色分离成红、绿、蓝单独数值

颜色 Color nodes

  • 颜色节点:主要包括“色相/饱和度”节点和“亮度”节点

矢量 Vector nodes

  • 矢量:主要是“映射(mapping node)”“法线贴图(normal map)”“凹凸(bump nodes )”
  • 映射一般和“纹理坐标节点texture coordinate node一起使用,类似“色相/饱和度”
  • 法线贴图(normal map)和凹凸(bump nodes ):比较特殊,一般用于给材料表面添加小缺陷

着色器 Shader nodes

输出 output nodes


着色器工作原理

  • 灰色接口:可以接受或者发送单值(single value),或数值范围
  • 黄色接口:接收颜色数值(RGB)
  • 紫色接口:矢量数据(XYZ)
  • 绿色接口:除了材质输出节点,只有“混合着色器”(有1个灰色接口可调节系数变化范围0到1)和“相加着色器”(没有可调节系数)以绿色槽作为输入接口,它们是唯二可以(combine)组合着色器的方法

PBR工作流程和纹理贴图 PBR workflows and texture maps

  • 定义:PBR就是Physically-Based Rendering的缩写,意为基于物理的渲染。它提供了一种光照和渲染方法,能够更精确的描绘光和表面之间的作用。
  • 创建材料的框架思路(材质工作流):主要有两个PBR标准化工作流程,一种是Specular/Glossiness(镜面反射/光泽度)workflows”,另一种是Metallic/Roughness(金属值/粗糙度)workflows”

Metallic/Roughness(金属值/粗糙度)工作流

  • 这个工作流的支柱:漫反射/Albedo、粗糙度和法线贴图
  • 漫反射Diff(Diffuse, sometimes called albedo):提供材质颜色
  • 粗糙度Rough(roughness):材质表面粗糙程度
  • 法线贴图Nor(normal):法线贴图是出射光线的角度数据,而不是高度信息(本质还是一张图,材质表面并没有真实的凹凸变化)
  • 金属度贴图:类似粗糙度,它是一个黑白蒙版(mask)。 但是金属性告诉blender着色器这是一种什么样的材料——金属还是非金属。
    • 非金属通常被称为辩证材料。 我们区分金属和非金属的原因是金属以某种方式与光相互作用,而所有其他材料以另一种方式与光相互作用。
    • 对于非金属:如果材质中没有任何金属,只需要把金属度滑块调到0,忽略金属度贴图就可以了
  • 材料与光相互作用的方式(信息)是我们唯一关心的事情,这就是着色器的全部内容
  • 要进一步深入贴图,详见置换贴图教程

举例1

  • 图像纹理贴图不仅映射整个材质表面的一个值,而且映射单个像素的多个值。
  • 比如,下载一个材料,一般会包含下面几个贴图:
    • 环境光遮蔽AO - Ambient occlusion
    • 凹凸Bump - Bump
    • 漫反射Diff - Diffuse, sometimes called albedo
    • 置换Disp - displacement
    • 法线Nor - normal
    • 粗糙度Rough - roughness
    • 镜面反射(高光)Spec - specular
  • 快捷键:
    先新建原理化BSDF,然后 Ctrl Shift T - 文件夹内选中所有需要的贴图 ,打开就自动连接好了

举例2 如何使用一整套纹理贴图来创建我们的材质

  • 先设置环境模式下的,环境节点
    • 渲染器cycles-GPU
    • film栏-透明
    • 加快渲染速度:Ctrl B拉出一个要3d渲染的窗口,清除边框(返回)则按Ctrl Alt B

  • 物体节点模式下 基本的贴图使用方式:
    • 除了基础色颜色空间设置为sRGB,法线贴图颜色空间设置为XYZ,其他设置为non-color

    • 在基础颜色接口和漫反射图像贴图之间添加“亮度”“色相饱和度”节点,可以改变贴图颜色等

    • 记得在发现贴图连线中间加入“(矢量)法线贴图”节点

    • 在粗糙度连线中加入"(转换器)颜色渐变"节点:把暗色值拉向白色值,这样可以引入更多光泽度(shine and glossiness)。通过这种方式引入更多真实感,增加了对比度,最终得到看起来更湿的材料

    • (矢量)法线贴图:增加强度到10,可以增加更多反射对比度

举例3 使用单个纹理贴图进行着色渲染

  • 只使用一个纹理贴图(常常是diff漫反射贴图),并尝试从这个纹理生成其他贴图。 有优有劣

    • 只有一种纹理的主要缺点:我们必须稍微调整设置,并且当我们没有所有可用的贴图时,很容看起来更flatter
    • 另一方面,使用更少的纹理贴图的主要优点:不需要那么多 RAM 来存储纹理。
  • 这次选择使用分离节点来分离红色、绿色和蓝色通道。 然后每个通道可以通过黑白图像访问

    分离RGB作粗糙度(Blue灰度值最深)和法向(Red灰度值次之)的思路;

    • 因为想要的效果是一个湿的表面,所以需要粗糙度有一些暗值(dark value)和适度对比度(modest contrast)
    • The pine needles in the textures are probably going to reflect the most since they break up the light pattern and stick out from the surface.
    • Therefore we want our roughness map to have darker needles and lighter background.
    • Then I adjust it with a color ramp.

    对于法线贴图的思路同上:

    • I want to separate the needles from the background. In this case though I want a different dark to light ratio(深浅对比) and I want the needles to be lighter since the lighter parts will stick out from the surface.
    • Based on these thoughts I look at the different outputs and use the output I get the best results from. In this case I went with the red channel.
    • 注意: 这里用(矢量)凹凸节点,而不是法线贴图节点(normal map)。这是因为我们需要把黑白高度图(black and white height map )转化为法线贴图(normal map)。如果此时,我们同时有“normal map”和“height map”,那要先它们把连接到(矢量)凹凸节点转化,再把(矢量)凹凸节点接入 原理化BSDF的Normal法线接口
  • Ctrl Shift 鼠标左键点击任意节点,可以直接看到它的输出效果,点击最后的 原理化BSDF则可以看到最终呈现效果。(PS 这个前提是勾选启用了插件wrangler )

矢量介绍

  • 我们调整纹理映射到材质对象的方式,就是通过矢量完成的。我们如何使用矢量平铺、缩放和投影纹理到对象。
  • 矢量(空间坐标XYZ),是在此坐标系下,该向量相对于原点的方向、距离。所以对于矢量,我们需要了解的两点是,矢量的位置,以及它所在的坐标系

纹理坐标节点

  • 纹理坐标节点:经常使用的重要节点。纹理坐标节点没有输入槽,只有少量输出槽。 这些输出槽中的每一个都是一个坐标系,一个我们可以在其中映射纹理的原点。
  • 比如,纹理坐标节点的生成输出槽:红色对应 X 方向,绿色对应 Y 方向。 Z 朝向或远离相机。 任何黑色部分都表示负坐标,因为任何值为 0 或更低的颜色都是黑色。

图像纹理节点

  • 图像纹理节点:通常使用两种映射纹理的方法,UV映射(UVmapping)或者box投影(Box projection)
  • UV 贴图:最常见的纹理投影到对象表面的形式。它使我们可以完全控制纹理的每个部分在模型上的位置。
  • box投影(Box projection):其灵活性要低得多。但是它使用起来非常便捷,并且不需要 UV 贴图,允许我们完全跳过 UV 展开阶段。

矢量类 节点

  • 除了图像纹理,对于其他程序纹理,默认情况下,用纹理坐标节点的生成输出
  • 如下图,也可以通过 纹理坐标节点-映射-插入一个或者多个图像纹理节点
  • 在纹理 坐标节点-图像纹理 之间插入 映射节点,还可以在原始向量到达图像纹理之前对齐进行调整
  • (矢量)映射节点:不能单独使用,因为它没有像纹理坐标节点那样的默认输入,

组合多种材质


REF 参考资料