添加风格化头发高光
插画中的头发高光形态各异 (作者: おののいもこ 魚介):
![]() | ![]() | ![]() |
|---|---|---|
| 环状 | 点状 | 天使环 |
下文提供了常见的头发高光实现方法, 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:

可见高光的锐角已经变成圆角.


