添加风格化头发高光
插画中的头发高光形态各异 (作者: おののいもこ 魚介):
环状 | 点状 | 天使环 |
下文提供了常见的头发高光实现方法, MooaToon示例中使用的方法是独创的基于切线传递的风格化Kajiya-Kay:
- 基于切线传递的风格化Kajiya-Kay
Kajiya-Kay高光的位置依赖于视线方向和切线方向, 通过切线传递可以自定义切线, 从而控制高光的形状和走向, 而不受拓扑的限制.
再加上对Specular Gradient的控制可以进一步细化高光形状, 理论上可以实现所有类型的高光.
要使用该方法需要先将自定义的切线烘焙到模型UV中, MooaToon使用Houdini进行烘焙, 并提供所有源文件:
使用Houdini烘焙自定义切线
用到的节点已经包含在之前的教程中.
在mooa_highlightTangentTransfer
节点中, 椭球体的切线被传递给了头发:
使用mooa_highlightPreview2
节点预览高光范围:
- 在3D View右上角相机菜单中选择
cam1
- 启用
Tie View To Camera/Light
- 确保3D View右侧选项中已禁用
Display materials on objects
- 按住Alt使用鼠标旋转视角查看高光变化
- 使用3D View左下角的滑条调整灯光角度
如果要使用你自己的模型, 你需要:
- 修改
mooa_highlightTangentTransfer
节点中的Destination Group
, 选中你的模型的头发部分 - 修改
mooa_highlightTangentTransfer
第二个输入, 你可以直接修改椭球体的transform5
节点以自定义高光形状, 也可以替换为新的几何输入
准备好后按照之前的教程将模型导出到UE, 然后如下图调整头发材质:
使用Ctrl + L
调整灯光方向, 你就能看到形状和Houdini中类似的动态高光.
接下来可以通过Mask控制高光细节形状.
绘制Specular Mask精确控制高光形状
类似于绘制Shadow Mask Map, Highlight Mask的示例源文件位于MooaToon\MooaToon-Project\Art\Models\NewTextures\HairHighlightMaskMap.spp
:
背景色为0, 想要出现高光的区域绘制1.
绘制完成后将贴图导出到UE, 取消勾选sRGB. 然后设置为Specular Color Map
:
不想要的高光已被擦除.
接下来你可以选择直接添加Noise到Specular Ramp Offset
:
或者将Specular Color Map
复制一份并将亮度降低一半 (最大值从1降低到0.5), 然后设置为Specular Ramp Offset Map
:
可见高光的锐角已经变成圆角.
使用Specular Color Ramp控制高光颜色 过渡
类似于Diffuse Color Ramp, 也可以使用Specular Color Ramp来控制高光颜色过渡.
Specular Color Ramp RGB通道的值为Specular Color, 横轴是PBR Specular的相对亮度:
- 0为最小亮度 (对应距离Specular中心最远处)
- 0.5为中间值 (对应PBR Specular根据经验二值化后的范围)
- 1为最大亮度 (对应Specular的中心)
直观表示如下:
PBR Specular 金属度从左到右增加 粗糙度从上到下增加 | |
Specular Color Ramp在0.5处二值化 | Toon Specular 二值化高光范围与PBR近似 |