【更新中】Blender着色器节点原理-学习笔记
¶着色器节点 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
- 包括“原理化BSDF”和“混合着色器”
- 原理化BSDF:(学会了的话)它可以代替很多节点
Ref:Physically based rendering and Blender materials - 混合着色器:混合两个着色器
¶输出 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”
- Blender通过使用"原理化BSDF"支持Metallic/Roughness(金属值/粗糙度)工作流 :详细参考教程Physically based rendering and Blender materials
¶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 参考资料
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 幻世·游戏人间·N次元!
评论
TwikooGitalk