Bump mapping 凹凸贴图
- 利用凹凸贴图可以模拟不完美表面,比如凹痕、划痕等。与置换贴图不同,凹凸贴图并不会改变几何体的结构,只是在视觉上进行模拟;
- 有两种模式:bump2d和bump3d,两者功能相似,区别在于使用的是2D贴图还是3D贴图;
接下来看一下具体操作:
1、新建一个Arnold着色器网络:创建→着色器→Arnold Shader Network,创建成功后会自动跳出着色器网络编辑器。
2、将材质赋予给球体和立方体。在这里,我们用躁波(noise)来控制表面凹凸。
p.s.新旧版本的Arnold节点连接逻辑有所不同,旧版中的节点连接顺序是:standard→noise→bump→Arnold Beauty;新版:noise→bump→standard_surface→Arnold Beauty。新版中材质节点连接逻辑大多都是standard_surface连接到Arnold Beauty,之后跟随其他节点,各节点参数也有所调整,这里不多展开说了,后面遇到再仔细讲解。各位童鞋自己打开软件看看就会很明白。多试,多练。
3、建立好所需个节点之后,可以根据需要再调节相关参数。
4、除了用noise控制凹凸,也可以加载一张图片作为凹凸贴图(白色突起,黑色凹陷):
Normal map 法线贴图
- 普通灰度贴图只能在上下两个方向产生凹凸,而法线贴图基于RGB通道,凹凸方向更加随机;
- 可以使用bump2d贴图直接加载法线贴图(替换image节点图片),不过最好还是使用normal_map节点;
-
可以根据需要选择法线贴图的模式:
-
调节图片在法线贴图中的属性:
-
法线贴图部分属性不同参数示例:
“文件”模式是指,使用其本身的编码设置,这种模式只适用于OpenEXR文件(视觉效果行业使用的一种文件格式,适用于高动态范围图像。该胶片格式具有适合用于电影制作的颜色高保真度和动态范围。OpenEXR 由 Industrial Light and Magic 工业光魔开发,支持多种无损或有损压缩。OpenEXR 胶片可以包含任意数量的通道,并且该格式同时支持 16 位图像和 32 位图像);
这种模式能够有效的保存当贴图没有进行后期手动校正时,该如何包裹对象表面的信息;
在某些情况下,“文件”模式能够防止图像产生杂色。
Subdivision 细分贴图
这里用一个简单的立方体来做演示。
2、双击utility调出属性菜单栏,将着色模式(Shade mode)改为lambert,叠加模式(Color mode)改为polywire(这时可以在IPR Window中看到对象的边框了):
3、给立方体添加一个Arnold参数标签,看一下细分设置(Subdivision)。
类型(Type):none/catclark/linear。
-
迭代(Iteration):迭代定义了细分次数,前提是开启一种细分类型。细分类型为linear时,提高迭代值会增加多边形的数量但不会变圆滑,每细分一次,一个多边形就会变为四个多边形,但是模型的结构(外形)并没有改变;细分类型为catclark时,不仅会增加多边形的数量,还会使模型变平滑;
-
自适应度(Adaptive metric):用于定义对象的细分级别是否随着距离远近而变化(比如近景细分级别较高,远景细分级别较低)。有两种模式:edge_length/flatness。edge_length使用边的长度进行判断,flatness使用面的曲率进行判断,若设置为auto,当对象没有使用置换贴图时,使用flatness模式,反之使用edge_length,大部分情况下使用auto即可;
自适应度误差(Adaptive error):配合自适应度使用,提高自适应误差,可以看到当镜头拉远,球体的细分就会降低,因为远景对象是不需要呈现细节的。同样的若拉近镜头,球体的细分就会提高,这是一种很好的场景优化方式。如果将自适应误差将为0,那么细分级别就不会随着距离进行变化了;(同样道理的还有之前讲过的Mip-mapping);
自适应空间(Adaptive space):有raster(栅格)和对象(object)两种模式,尽量使用栅格模式,当场景中有实例对象时切换为对象模式;
Dicing camera:可以定义控制自适应细分的摄像机,也就是说根据对象距离该摄像机的远近控制细分值。如果一个对象的细分级别在不断变化,自然会发生闪烁,该选项可以解决运动场景中因自适应细分产生的闪烁问题(新版中去掉了这一选项,智能优化为最佳效果);
-
平滑UV(UV smoothing):用于定义当对象被细分时,UV如何固定——固定转角 Pin_conters/固定边缘Pin_borders/完全固定 linear/完全不固定 smooth;
-
平滑切线(Smooth targents):当对象上有各向异性高光时,高光可能会产生锯齿,可以通过开启Smooth targets来解决这个问题;
Displacement mapping 置换贴图
置换贴图可以实现真实的置换细节,与凹凸贴图不同,凹凸只是视觉欺骗,而置换是真的会改变模型外形。
置换分两种类型——法线 normal/向量 vector,法线置换是传统的置换方式,会根据灰度贴图产生上下变形,而向量置换会在多个方向上产生变形
法线置换 Normal_displacement
还是用上一个立方体来做演示
1、创建一个Arnold标准曲面(Create→Arnold→Surface→standard_surface),打开阿诺德网格编辑器(Arnold Shader Network Editor);
2、新建一个normal_displacement节点,链接到Arnold Dispalcement端口,接下来定义一张置换贴图(创建image节点,手动连接到normal_displacement节点,选择Main>Displacement,或快捷键:先按下Alt+W,松开在按下T,选择Main>Displacement),调整scale参数为0.1,因为之前模型分段不足,所以调高Arnold参数标签细分属性中迭代值为6(选中Arnold标签调出属性):
- Scale:控制着置换的强度(高度),正值向外,负值向内(尽量使用32位贴图以获得更好的置换结果);
- 标量值为零(Scale zero value):定义了置换高度为0时的颜色值。默认0代表黑色不发生置换,白色往外置换;设置为0.5那么50%灰色不发生置换,黑色向内置换,白色向外置换;设置为1,那么白色不发生置换,黑色向内置换。
3、如果想要保持外形不变的话,将细分类型改为linear。选择linear后会发现置换有点问题,可以通过调整边界填充(Bounds padding,选中Arnold标签→置换(Displacement)→边界填充(Bounds padding))来解决:
Bounds padding值可以扩展模型的边界框以囊括置换后的模型,可以将其理解为一个容器,变大才能盛下置换后的模型。谨慎提高该值,因为会增加渲染时间。如果要获得更多置换细节,可以继续提高细分值,不过也要谨慎。
4、接下来看一下Arnold参数标签置换栏的参数:- 高度(height):与Scale配合使用,也控制着置换的高度;
- 标量值为零(Scale zero value):尽量使用置换贴图的Scale zero value,不要修改这里的参数;
-
自动凹凸(Auto bump):开启可以获得更多的置换细节,该参数会将置换贴图中较小的高频出现的图案应用到凹凸通道,这样就无需设置较高的细分值,也可以得到这些小的细节,建议尽量开启该选项,尤其是使用法线置换时。
向量置换 vector_displacement
与法线置换贴图不同,向量置换贴图可以在任意方向对模型进行置换。得到一个比较完美的渲染结果:
3、向量置换节点参数:
- Scale:同法线置换;
- 向量编码(Vector encoding):absolute模式针对16/32位图像,signed模式针对8位图像(这两种模式并无明显区别,可自行尝试);
-
向量空间(Vector space):根据生成贴图时的设置,可以选择word/object/tangent三种向量空间;
其他参数并不是很重要,不做过多讲解。
关于Utility更多详细讲解,请移步【插播001】Utility Shader
本次更新至此。
通了个宵。现在是北京时间凌晨5:49。
嗯。。。我知道距离上次时间有点久远,后续尽量不酱紫了(认真脸)。
多多赞一下可能会更有动力呢~