控制描边形状
什么是描边和笔触
描边是让角色看起来像手绘的重要因素:
笔触是指一段描边起点到终点之间的宽度或颜色变化, 形成笔触的物理原因是笔尖在纸上压力的变化:
无笔触, 描边等宽 | 有笔触, 笔画的起点和终点更细 |
宽度一致的描边比较容易实现, 带笔触的描边实现比较困难, 而是否有笔触则是让描边看起来更像手绘的关键因素, 因此能否自动生成笔触一直是描边技术的分水岭.
描边也有不同的类型:
描边和笔触的实现方法
下文列举了一些描边和笔触的实现方法.
MooaToon实现了GUILTY GEAR的分享中提到的外描边和内描边:
- 外描边
外描边指描边在模型的外部, 也就是上图中的"Outline"类型. 是在渲染完角色之后再渲染一次角色背面模型, 同时沿法线方向挤出. 这是最经典的也是使用最广泛的描边技术.
此技术的缺点是挤出用的法线必须是平滑的, 否则描边在硬边处会断开. 并且描边类型单一, 细节不是很多.
由于模型硬边处的法线是断开的, 直接沿着法线挤出会造成描边断开, 所以描边法线需要重新计算:
烘焙描边法线方向
- 在UE中烘焙
- 保存所有修改
- 在角色骨骼网格体上右键:
Scripted Asset Actions > Mooa Toon > Bake Smoothed Normal and Curvature
:
- 在Houdini中烘焙
- 使用
mooa_bakeSmoothedNormalToUV34
节点烘焙描边法线 - 使用
mooa_outlinePreview
节点预览描边 - 确保已启用
Display Option > Optimize > Remove Backfaces
在UE中检查烘焙的数据
你可以在UE中检查所有已烘焙的数据:
- 确保已正确设置
Outline Material
- 将你的角色Actor设置到
BP_MooaLookDevTool > Character Actors
中 - 勾选
Show XXX
以显示对应的烘焙数据
颜色(RGB, 0 - 255)
代表方向(XYZ, -1 - 1)
, 以Show Baked Smooth Normal WS
为例, 如果烘焙的数据正确, 颜色应该显示为平滑的世界空间方向, 不应该出现硬边.
绘制顶点色控制描边宽度
GUILTY GEAR中使用顶点色作为描边宽度, 从而在局部模拟笔触:
![]() | ![]() |
---|---|
带笔触的外描边 | 用于控制宽度的顶点色 |
![]() | ![]() |
---|---|
肩膀处无宽度调整 | 肩膀处有宽度调整 |
示例中的Unity Chan是在Houdini中绘制的顶点色:
- 在UE中绘制
你可以直接在UE中绘制顶点色, 并实时预览结果: