Substance Painter 做卡通风格化毛发很多同学一上来就铺一整层噪点或者直接拖一个皮毛智能材质结果要么脏要么假要么像抹了一层泥巴。问题不在笔刷不够多而是没有把“SP 材质球”和“卡通质感”之间的逻辑理顺。这篇文章只围绕一件事在 Substance Painter 里做一套能直接用在猫、狗、狐狸这类动物模型身上的卡通风格化毛发皮毛材质球。我会从 SP 的材质球原理、图层栈结构、生成器遮罩、笔刷手绘、颜色/粗糙度/高度细节一路讲到导出和批量复用重点是能落地不是堆概念。先给结论SP 做卡通皮毛核心不是某个笔刷或某个滤镜而是“底色 遮罩变化 手绘补细节”这个三层结构。把这套结构建立起来换一只动物本质上就是换一套贴图的事。1. 核心能力速览关于 Substance Painter 的毛发皮毛类材质球先看一张能力速览表。这里的参数是 SP 桌面版的常规工作流不一定对应某个插件或小工具但适用于大多数卡通角色建模流程。项目说明制作工具Substance 3D PainterSP 2021 及以上版本样式目标卡通风格化、手绘感、半写实适用模型猫、狗、狐狸、狼等四足动物及卡通角色核心功能毛发走向、毛色层次、皮毛高光、透明/镂空毛发细节主要输出贴图Base Color、Roughness、Height、Normal、AO是否支持批量支持智能材质 导出模板 Python API常用笔刷内置 Fiber 笔刷、自定义 alpha、图章工具常用生成器AO、Curvature、Position、WS Normal、噪声类生成器适配渲染器Blender、Maya、Unity、UE 等 PBR 渲染流程需要说明的是SP 本身不是毛发解算器。想在骨骼动画里看到一根根真正的毛发飘动还是要依靠 Blender Hair、XGen、Yeti 这类系统。SP 材质球解决的是“贴图层面上的皮毛质感”通过颜色变化、粗糙度变化、高度变化和透明通道来模拟毛发层叠效果。2. 卡通皮毛材质球设计逻辑先说一个很多新手容易踩的坑卡通皮毛不等于低精度写实皮毛更不等于把真实动物身上的“毛发细节”直接贴上去。写实皮毛追求的是信息量极大而卡通皮毛追求的是有限信息、明确色块、干净边缘。在设计 SP 材质球之前要先确定三件事。第一视角距离。如果是手游角色模型很小材质球需要的是大色块对比甚至只需要 Base Color 加 Roughness 两个通道就能撑住。如果是展示模型摄像机可以贴脸材质球就必须加入高度细节和法线细节否则看起来会过于平面。第二毛发层级。卡通动物模型的头部、背部、腹部、尾巴毛发长度和方向都不一样。SP 材质球不能用一个全局遮罩搞定所有区域需要按纹理集或按遮罩区域分别处理。头部短毛、背部中等长度、尾巴蓬松这是同一套材质球下最少要拆出的三个层次。第三边缘处理。卡通质感的皮毛很重要的特征是边缘有锯齿状或尖刺状的轮廓但轮廓又不能太碎。SP 里通常用 Height 通道和 Base Color 通道配合在模型剪影位置画上高对比度的边缘毛刺。这个环节如果省略角色看起来就像穿了一件紧身衣而不是有毛毛的感觉。理解了这三点后面在图层栈里操作时就不会迷失在生成器参数里。3. 模型与 UV 准备材质球本身能做的内容再多模型底子不合格也会白费。SP 里做卡通皮毛对模型和 UV 有四个基本要求。3.1 模型面数不需要太高卡通皮毛靠的是贴图和高度通道不需要在模型上建模出一根根毛。模型做好大体轮廓即可四足动物的身体、四肢、头部、尾巴按生物结构分好区块面数能稳定支撑平滑效果就够。3.2 UV 展开必须按结构切岛UV 展开时耳朵、尾巴、四肢、头部之间要切开让每块 UV 岛尽可能保持独立且比例正常。动物模型的头尾和身体因为方向差异大如果挤在一个壳里画毛发走向时很容易出现方向断层。一个更稳妥的做法是在不同贴图集上按部位拆 UV shelve这样可以使用多个材质分区绘制。3.3 用网格检查纹理快速验证在 SP 里处理 UV 之前可以先用网格纹理或检查 BGRA 纹理观察 UV 密度和接缝。重点看尾巴和四肢的 UV 是否被过度拉伸。如果这些区域 UV 密度不均最终导出的毛发贴图会出现模糊或拉伸失真。3.4 在 SP 中检查法线朝向材质球的毛发方向通常依赖模型法线。如果模型内外法线反了或法线方向不平滑后面用 WS Normal 生成器做毛发遮罩时会得到完全反向的结果。导入 SP 后先开 Normal 视图检查一遍出现大面积蓝色翻转就说明模型法线有问题。4. 图层栈与生成器材质球主体搭建这一章是整篇文章的核心。我会从新建项目开始讲清楚卡通皮毛材质球应该如何从零搭建。这里不讨论某个现成的智能材质而是从图层栈逻辑入手因为理解了逻辑之后你才能做出自己的 SP 毛发材质球。4.1 新建项目与初始纹理设置在 SP 里导入模型后建议先设置 2048 或 4096 的贴图尺寸。卡通风格用 2048 通常足够但如果模型细节比较多而且要做近景展示可以用 4096。文档贴图集模板使用 PBR 金属粗糙度模式贴图格式选 PNG颜色空间保持默认。4.2 第一层底色铺毛卡通皮毛材质球的第一层不是直接画毛发而是铺一层干净的底色。这一步决定整只动物的主色调比如橘猫的橘、哈士奇的灰白、柯基的黄白。操作方式新建“填充层”把 Base Color 设置为平均色。这里不能用纯色要在填充层上叠加一个微弱的噪声遮罩让底色产生轻微的不均匀感。卡通也不需要过度变化建议噪声强度在 10%-20% 之间。这一步的容易出现的问题是底色太干净导致后续上毛发层时过渡不自然。所以要加入一层非常轻的“渐变”或“噪声”通透度让颜色有一定偏差。4.3 第二层主色块分区卡通皮毛通常有两三种颜色比如背部深色、腹部浅色、头部白色。这个阶段要用手绘遮罩或者多边形填充的方式把大色块切出来。我推荐的做法新建一个“填充层”设置第二种颜色然后在遮罩上用中等硬度的笔刷沿模型背部绘制。绘制时把视口旋转到侧 45 度方便观察颜色分界。色块边缘不需要平滑卡通风格甚至保留一点手绘笔触是对的。4.4 第三层高度通道制造皮毛体积这一步是卡通毛发材质球和普通卡通材质球的差别所在。普通卡通材质球在高度和曲率上很干净而皮毛材质球必须让高度通道产生毛绒感。新建一个“填充层”只输出到 Height 通道。把高度值调低通常建议 0.2-0.4 之间然后叠加噪声遮罩。这里不要用太细密的噪声因为卡通毛发是成簇的不是一根一根的。建议选择 Grunge 类噪声把噪声缩放调到 5-15让遮罩产生大小不一的团块。4.5 第四层AO 与曲率辅助继续添加生成器图层。在 SP 的图层菜单里添加“Ambient Occlusion”和“Curvature”生成器用它们的遮罩作为皮毛之间夹缝的暗部。AO 强度建议在 70%-90%曲率的暗部强度在 30%-50%。如果你的 SP 版本支持多个生成器组合可以把 AO 和 Curvature 结果连到同一个填充层的高度和颜色通道上。这样模型的眼部、耳根、下颌缝隙等位置会有自然的闭塞感。4.6 第五层毛发走向遮罩用一个“Position”或“WS Normal”生成器作为遮罩在填充层上做出渐变式毛发分层。这个方法的本质是利用模型的世界空间坐标让毛发方向顺着模型表面产生方向性变化。也可以手动创建灰度渐变纹理导入 SP作用在图层遮罩上再配合噪声让渐变边缘产生毛刺。这种方式的优点是可控性强适合做背部到尾部的长毛渐变。到这一层新的卡通毛发材质球已经有一个基础的体积感和色彩层次。后面需要进入手绘细节。5. 笔刷手绘毛发方向与细节强化生成器能解决大范围的毛簇变化但卡通皮毛的“灵魂”在于手绘笔触。这一步需要进入 SP 的绘制状态选择纤维笔刷或自定义 alpha逐笔把毛发方向、高光、颜色杂毛画出来。5.1 选择 Fiber 笔刷SP 内置的 Fiber 笔刷是最容易上手的毛发工具。在画笔库中搜索 Fiber能看到不同密度和长度的预设。用于卡通毛发时建议选择密度中等的笔刷并把笔刷的“硬度”降低到 50% 左右避免出现生硬边缘。如果内置 Fiber 笔刷不够用可以自己准备一张带毛流方向的白底黑笔触 alpha 图导入到 SP 的 alpha 库。这种自定义 alpha 是画毛发最核心的资源。5.2 绘制方向顺着骨骼与肌肉走毛发走向要从模型的骨骼结构出发头部毛发向两侧分颈部向后背过渡背部向尾巴方向顺四肢向下尾巴向外扩散。绘制时建议开启对称。SP 里可以直接使用镜像对称工具也可以用视口对称选项。四足模型大多左右对称开启对称后可以节省一半时间。具体操作选择 Fiber 笔刷。在图层栈顶新建一个“绘制层”。将绘制通道设置为“Color”或“Height”。选择较暗的杂色或高光颜色顺毛发方向快速扫动。多次叠加让笔触产生层次。5.3 手绘高光与颜色杂毛卡通皮毛的毛色并不是单一色背部会有一层更亮的绒毛腹部颜色更浅耳根和眼窝会有深色杂毛。用绘制层叠加这些变化时建议把画笔的不透明度调到 20%-30%少量多次避免一笔画死。一个小技巧把笔刷的流量从 100 降到 30 之后同一个位置反复描画几次会产生像真实毛发一样的叠加深浅变化。这个效果在卡通材质里非常出彩。5.4 边缘毛刺处理模型剪影边缘的毛刺是卡通皮毛质感的关键。可以用 Fiber 笔刷高度模式在模型的轮廓位置向外提起小段毛刺。如果 SP 笔刷本身无法伸到模型外部可以靠 Height 贴图在渲染时提供假轮廓。对于 Blender 或 UE 用户SP 导出的 Height 贴图可以接到凹凸节点或置换节点上在渲染时产生微微膨胀的毛发边缘。6. 材质预览与导出验证材质球做完以后不建议直接回到渲染器才发现问题。SP 内部可以先用 Iray 或软件渲染模式预览观察皮毛的整体效果。6.1 在 SP 中切换渲染模式SP 的渲染模式切到 Iray光照选择“Studio”或“Product”。Iray 预览中 Height 通道的凸起效果会非常明显。如果高度值过高可能是因为前面高度层叠得太厚可以反向调节。6.2 导出模板配置SP 的导出窗口可以保存为自定义导出预设。常见的卡通皮毛导出配置如下{ exportPath: export, exportList: [ { mapPrefix: T_Animal, mapList: [ { shortName: Base_Color, channels: [diffuse] }, { shortName: Roughness, channels: [roughness] }, { shortName: Height, channels: [height] }, { shortName: Normal, channels: [normal] }, { shortName: AO, channels: [ambientOcclusion] } ] } ], defaultResolution: 2048x2048, outputFormat: png }上面的 JSON 只是说明 SP 导出模板的结构实际点击“导出纹理”时可以在导出窗口里直接勾选通道并保存模板。6.3 在 Blender 中验证导出后在 Blender 里接一个基础的 PBR 材质节点把 Base Color、Roughness、Normal、Height 分别接入对应接口。然后在 Blender 的材质属性里打开“位移”选择“Bump”或“Displacement”。这样能快速确认贴图是否完整、方向是否正确、是否有接缝问题。如果在 SP 里颜色和高度看着很好但导出后效果变平最可能的原因是贴图压缩格式不同或渲染器没有启用置换/凹凸。7. 智能材质批量复用与自动化导出做一套卡通皮毛材质球只给一只猫用效率太低。SP 的高效之处在于可以把整个图层栈保存为智能材质Smart Material之后拖到任意模型上都会保留生成器和绘制层。如果模型分区一致效果基本不用重新调整。7.1 保存智能材质图层栈顶部的文件夹选择为“智能材质”保存。快捷键对应菜单“文件 保存为智能材质”。保存后在“材质”资源面板中就可以看到自定义的皮毛智能材质。需要注意手绘层的笔触和对称模式可能会依赖具体模型其他模型 UV 结构不同时手绘层位置需要手动修正。7.2 Python API 自动化导出如果有一批已经展好 UV 的模型可以通过 SP 的 Python API 自动化导入、烘焙、应用材质、导出。这是一种可选的高阶方案适合批量工作流。import substance_painter import substance_painter.project as project import substance_painter.export as export # 打开一个已有项目 project.open(/path/to/your_project.spp) # 导出纹理使用上面保存的模板 export.list_exports()这段 Python 脚本只是最基础的 API 演示实际使用时需要先查看 SP 对应版本的 Python API 文档中 export 和 project 模块的参数。7.3 命令行批处理SP 支持命令行调用适合服务端或无人值守批量导出。不同版本的命令行参数不完全一样建议先查版本号再执行。# 示例命令行导出指定资源 SubstancePainter --export-map Base Color --input-mesh /path/to/mesh.fbx --project /path/to/project.spp这里一定要强调的是命令行参数在不同 SP 版本中可能有差异第一次使用前要运行--help或查询官方文档。8. 常见问题与排查方法SP 做毛发材质球最容易遇到的问题集中在模型 UV、遮罩方向、图层透明度、导出贴图缺失这几个方向上。问题现象可能原因排查方式解决方案毛发方向乱、颜色撕裂UV 未按结构拆岛在 SP 里查看 UV 壳的分布回到建模软件重新展开 UV按头部、四肢、尾巴拆分渲染时边缘没有毛刺渲染器未启用置换或凹凸检查渲染器材质接口是否连接 Height将 Height 贴图接到 Bump/Displacement 节点皮毛看起来“脏”噪声遮罩强度过高检查各图层的噪声不透明度将噪声不透明度降到 30% 以下导出后没有 Height 贴图导出模板未勾选 Height在导出设置里勾选 Height 通道保存新的导出模板颜色分层边缘太硬手绘遮罩硬度太高检查笔刷硬度将笔刷硬度降到 30%-50%或加一层模糊滤镜背部和腹部颜色过渡不自然色块分区缺少中间调新建渐变填充层在两种颜色之间增加一层过渡的中间色智能材质拖到新模型后位置偏移另一模型的 UV 分布不同检查纹理集与 UV 比例重新调整手绘层或使用生成器重算SP 论坛和美术群里最常见的问题导入 FBX 后模型纹理集是空的模型未指定材质 ID在建模软件中把材质 ID 分开命名给身体、头、耳朵等分配不同材质 ID 后重新导入9. 最佳实践、合规边界与使用建议最后说几点工程化的建议这些都来自实际项目里的经验。第一第一次做毛发材质球时不要直接拿最高精度模型去试。先用一个面数中等、UV 结构清晰的测试模型跑通流程确认材质球效果满意后再套用到正式角色上。这样能避免大量重复烘焙和反复调整。第二模型文件、导出贴图、SP 工程文件不要混在一个目录里。建议目录分成 Mesh、Texture、Project、Render 四块方便批量任务和版本管理。第三如果做商业项目使用参考素材和导入的 alpha 贴图时要注意版权。网上下载的免费皮毛材质、毛发笔刷有些只限个人学习不能用于商业发行。自己画的笔刷和通过 SP 生成的材质一般不存在授权问题但如果是扫描真实动物素材还要注意动物照片或纹理的版权和肖像权问题。第四涉及真实动物、宠物形象时要确认素材来源和用户授权。如果是给客户的猫狗做数字形象需要确认客户拥有宠物照片的使用权。这一点和声音克隆、换脸类工具的使用边界类似都必须先确认授权再进入制作和商用环节。第五团队成员共用这套材质球时建议把智能材质和 alpha 笔刷统一放在共享资源库中并在命名上注明版本。例如Fur_Cartoon_Cat_v01.spsm这样可以避免“最终版改改”这类文件混乱。第六在发布最终成品前一定做一次多角度、多种光照条件下的效果复核。SP 里的 Iray 预览和最终渲染器效果不一定一致。尤其是在 Blender Cycles 或 UE 里光照强度、粗糙度响应都有差异导出前至少要跑一遍 Blender 预览验证。如果想让卡通皮毛材质球更有表现力后续可以继续扩展的方向有把 Height 通道接成位移在渲染器里生成真正的皮毛轮廓在 SP 中用透明通道制作发丝组结合顶点色区分同一材质球下不同区域的毛色或者把材质球和自动生成的 AO 烘焙脚本结合做成一批模型一键产出的资产管线。这套流程做完后猫狗狐狸这类卡通角色的皮毛质感基本都能用同一套 SP 材质球思路解决。最值得先动手验证的是“底色 噪声遮罩 Fiber 手绘”这三个步骤的配合把这三层玩明白了再谈更复杂的细节也不迟。