Substance Painter卡通猫狗毛发材质球制作全流程

Substance Painter卡通猫狗毛发材质球制作全流程 做卡通风格的猫狗毛发很多朋友第一反应是去模拟每一根毛结果要么模型高模刷到崩溃要么渲染噪点满天飞。其实在游戏和动画资产里更常用的做法是用 Substance Painter 制作皮毛材质球在模型表面通过程序纹理、笔刷和滤镜生成毛发的颜色、高度、高光和透明信息既保留卡通质感又不会牺牲性能。这里先解决一个问题SP 材质球到底怎么在猫狗动物毛发场景里落地。适合美术新手、从 DCC 切换到 SP 流程的从业者也适合正在找卡通毛发材质方案的 TA。下面按实际制作顺序拆制作前要准备什么、材质怎么搭、参数怎么调、导出怎么接、出问题怎么查。1. 先搞清楚“卡通毛发材质球”到底要解决什么问题在动手做材质球之前先把目标定清楚。卡通风格的猫狗角色需要的是“看起来像毛茸茸的、有层次、能放进游戏引擎实时渲染”的表面质感不是每一根毛发都独立建模。Substance Painter 里的材质球本质是把颜色、纹理、遮罩、生成器打包在一起的一套图层方案。你把它拖到模型上SP 会根据 UV 和蒙版在表面计算出毛发区域的颜色、高光、粗糙度、高度和法线变化。这样做出来的效果在模型轮廓上不需要额外加毛发卡片也能有接近手绘卡通原画的毛感。1.1 卡通毛发不等于拉丝高模核心是“纹理表现”写实毛发通常需要 Groom、XGen 这类曲线系统每一根毛都有独立几何。卡通资产普遍不这么干因为面数、渲染成本和风格都不允许。卡通毛发更看重表面纹理的分布比如毛色过渡、长短不一的杂毛、耳朵边缘的碎毛以及毛发方向带来的高光差异。这些信息用 SP 的图层堆叠就能完成。所以判断一个 SP 毛发材质球好不好不要只看颜色是否像猫要看三件事第一毛流方向是否自然第二毛发边缘有没有柔和过渡第三在引擎灯光下能不能保持体积感。这三个点都跟材质里的 Height、Normal 和 Roughness 相关不是单一 BaseColor 能解决的。另外卡通风格里的毛发往往不是“写实的复制品”更像插画师用笔触概括出来的毛感。这意味着材质球里的程序纹理不能做得太脏太细要保留一定的概括性。做毛发图层时我会建议先把整体色块和毛流方向定好再往里面加细节。如果一开始就把噪点、污渍、高光全部堆上去效果很容易变得又乱又灰。1.2 SP材质球到底是什么和预设、过滤器有什么关系在 Substance Painter 里“材质球”其实不是单个球体文件而是“智能材质”或“材质层组”的通俗叫法。一个智能材质可能包括几个填充层、几个生成器、若干蒙版和滤镜。你在材质面板里右键图层组选择“保存为智能材质”就可以生成一个可复用的素材。之后拖到其他模型上它会自动匹配模型 UV 和纹理集。这跟 SP 自带的预设材质、在线材质库以及滤镜是不同层级的关系。预设是一整套现成效果滤镜是对当前层做处理智能材质是“能被复用的层组”。自己做的材质球建议用智能材质来存因为后续调整图层参数非常方便不会像合并后的位图那样难改。另外提醒一句SP 这个缩写很容易撞车。搜索“SP 材质球”时偶尔会带出 sp flash tool 之类的内容那是刷机工具跟 Substance Painter 无关论坛里的 SP 板块也要先确认是不是 Substance Painter。本文说的 SP全部指 Substance Painter。2. 制作前先准备模型、UV 和贴图通道很多材质球效果不好不是材质参数问题而是模型和 UV 没有处理好。SP 里的纹理是平铺在 UV 上的UV 方向、面密度、纹理集设置都会直接影响毛发效果。先准备好这些条件再做材质会省很多事。2.1 模型拓扑与 UV 对毛发效果的影响卡通动物的模型不需要特别高的面数但 UV 布局不能乱。毛发方向一般是跟随身体方向的SP 里的方向性滤镜和笔刷依赖 UV 坐标如果 UV 是断裂的、密集程度不均匀毛发条纹就会出现明显拉伸或者接缝。我建议在制作前给模型分好 UV 岛身体、四肢、头部、耳朵、尾巴各分一块。这样在 SP 里可以通过 UV 岛或多边形填充分别给不同部位做蒙版。还要注意 UV 方向尽量让毛发纹理的横向或纵向与模型的自然方向一致。比如四肢的 UV 最好让模型长度方向对应纹理的 Y 轴这样拉丝效果会比较顺手。如果模型是低模也不要太担心。SP 的优势就在于可以通过 Height 和 Normal 在低模表面“骗”出体积感。模型不需要做出每一撮毛的凸起只需要保证大的体块关系正确毛发细节交给材质层来处理。反过来如果模型表面本身有错误的法线或重叠面材质再细也会出现闪烁和撕裂。2.2 贴图通道分辨率和纹理集设置分辨率要根据用途确定。PC 端第三人称角色通常用 2048 或 4096移动端角色1024 或 2048 比较稳妥。SP 会在新建项目或纹理集设置里生成贴图大小如果要做毛发细节分辨率太低会导致拉丝滤镜变成一团糊。具体设置时在“纹理集设置”里确认 BaseColor、Normal、Height 等贴图都开启。默认情况下 SP 会带这些通道但如果你只勾了颜色后面画 Height 不会生效。多象限 UV 还要注意不同象限的比例建议尽量把模型所有部位分布在同一个纹理集里避免拉伸不一致。新建项目时有两个设置会直接影响毛发效果一个是贴图大小要按最终输出需求定另一个是文档使用的基本材质类型可以选择 pbr-metal-rough 或 pbr-specular-gloss一般游戏资产用 pbr-metal-rough 比较普遍。如果你不确定就沿用 pbr-metal-rough后续导出到 Unity 和 Unreal 都方便。2.3 需要的通道BaseColor、Roughness、Normal、Height、Opacity卡通毛发材质最常用的是下面这些通道BaseColor毛发的颜色和花纹分布。Roughness控制粗糙度通常偏高让表面不产生太锐的高光。Normal模拟毛发局部的起伏和方向让表面看起来不是平的。Height高度信息主要配合 Normal 做视觉起伏在部分引擎里也用于视差偏移。Opacity如果要做透明发丝、面片毛发或者边缘碎毛这个通道才有用。在 SP 里Height 和 Normal 可以同时使用。Height 负责宏观起伏Normal 负责细节方向。只看最终效果时Normal 对视觉影响很大Height 在导出后如果引擎不支持视差影响较小。对卡通毛发来说Normal 和 Roughness 的配合比 Height 更关键。因为毛发在实时渲染中的“毛茸茸”感觉很大程度来自于粗糙度变化和法线细节而不是真实几何的高度差。3. 在 Substance Painter 里制作毛发材质球的完整流程下面进入正题。我建议按“底色调校 - 纹理方向 - 细节补充 - 材质保存”的顺序来做而不是一上来就堆滤镜。一个可复用的卡通毛发材质球图层结构尽量清晰这样才能在后面对不同动物模型快速调整。3.1 从空材质开始还是从现有预设开始如果你是第一次做可以从 SP 自带的毛发预设开始作为参考。比如官方材质库里的 Fur 相关预设先把它的图层结构拆开看每一层用了什么滤镜、什么蒙版。不过自带预设的写实感比较强直接用来做卡通猫狗需要大量调整。我个人更建议自己搭一个简单的材质球先新建填充层把 BaseColor 铺成毛发的底色再在它上面叠加花纹和毛流纹理。这样每一步都知道在做什么也方便保存成自己的智能材质。如果只是为了快速出图那直接用预设会更快但可控性差一些。从空材质开始还有一个好处你会被迫理解每一层的作用。以后遇到不同风格的毛发比如三渲二、韩系、Q 版只需要调整对应图层的参数不需要反复去猜预设里的逻辑。3.2 用填充层和渐变做毛色分布第一步是底色。新建一个填充层在 BaseColor 通道选一个接近毛色的基色比如橘猫的底色选浅橙色。第二层做花纹或毛色过渡用蒙版控制范围。比如腹部浅色、背部深色可以在蒙版里用一个渐变黑白过渡决定颜色分布。渐变节点的参数要调得柔和一点。卡通风格的毛色边界不需要像写实那样复杂但也别做成硬切边。我习惯在渐变后加一层极低强度的噪声把边界打碎一点让颜色看起来有一些杂色过渡。这个噪声强度控制在 0.05 到 0.15 左右就够。如果你使用的是带有 ID 贴图或顶点色的模型还可以用颜色选择工具生成蒙版快速选择耳朵、尾巴等区域。没有 ID 图时用多边形填充工具手动框选也很快关键是先把大区域蒙版做出来后面所有细节都可以挂在区域蒙版下面。毛色分布这个阶段不用急着做太细。先用二到三个大色块把整体关系拉开比如背部深色、腹部浅色、尾巴尖深色。如果一开始就把花纹画到每一条纹理里后面调整毛流方向时会非常痛苦。大色块稳定后再用画笔和蒙版加细节。3.3 用程序纹理和滤镜做毛发笔触毛色分布做好后开始添加毛发笔触。在填充层的 BaseColor 或 Normal 通道上加一个纹理节点SP 的内置 Noise 和 Grunge 可以模拟毛发颗粒。重点不是颜色而是给材质增加高频变化。要让“颗粒”变成“毛流”常用方法是在纹理节点后接方向模糊滤镜或者在滤镜里使用方向拉伸。方向模糊的角度要对应毛发生长方向。比如猫的背部毛发是从头向尾延伸角度大致为 0 度或 90 度取决于 UV 摆放。你可以先放一个低数值比如 2 到 4反复看方向不对就调整角度。另一个常用手段是 HSL 或 Levels 滤镜控制纹理的对比度。对比度越高毛流越明显对比度太低毛发效果会被底色吃掉。数值上Levels 的黑色输入可以提高到 0.4 左右白色输入压到 0.7 左右再按实际效果微调。不要一次拉到极端否则毛发会变成刺眼的条纹。如果你需要更强的方向感还可以在滤镜里加一点扭曲或弯曲让毛发不是完全平直的。尤其是猫狗身体侧面毛发会顺着身体曲线变化完全统一的方向会显得僵硬。扭曲强度控制在 0.1 左右看起来不明显但能打破机械感。3.4 用 Alpha 笔刷补充长毛、飞毛细节程序纹理做的是基础毛流真正让材质球有手绘感的是边缘和局部的高光笔触。这里需要 Alpha 笔刷。你可以使用 SP 自带的毛发笔刷或者导入一张画好的发丝 Alpha 贴图。在 Height 通道上用较低的 Opacity比如 20% 到 40%沿身体方向画几笔。目的是让耳朵边缘、尾巴尖、脸颊两侧出现一些微微翘起的碎毛。画的时候要把笔刷的 Brush 和 Flow 调低分多次叠加。一次画太重Height 会过高导出后容易出现明显凹凸。在 Normal 通道上也可以画。只在 Height 上画Normal 不配合视觉上会有点平只在 Normal 上画又缺少体积。两者搭配使用时先用 Height 画大方向再用 Normal 补充细节效果会比较自然。笔刷画完后可以模糊一下边缘。直接在图层蒙版上使用模糊滤镜或者用低不透明度橡皮擦修整。卡通毛发的碎毛不能太锐利否则会像黑色刺一样扎在模型表面。边缘柔和才更像一团毛而不是一根根钢针。3.5 保存材质球智能材质和预设当你把图层组调到满意后右键这个图层组选择“保存为智能材质”给它一个规范的名字比如SC_Fur_Cartoon_Cat。导出时 SP 会生成一个 .spsm 文件里面记录了所有图层、蒙版、滤镜和参数。下次打开其他模型直接在材质面板拖入这个智能材质即可。如果你的公司有统一资产生成规范还可以把 .spsm 放到材质库目录或者通过项目分享给同事。要注意的是智能材质里如果带有自定义 Alpha 笔刷或外部纹理保存时 SP 会提示是否一起打包。选择打包避免换电脑后笔刷丢失。保存智能材质时我建议同时写一个简短的说明文本记录这个材质球适合什么动物、主体颜色、主要参数预设。因为时间一长你很可能忘了“橘猫毛”和“布偶毛”两个材质球的区别。说明文本不参与渲染只用于团队协作和整理。4. 猫狗不同毛发的参数调整思路同一个材质球没法直接套所有动物。橘猫、布偶猫、金毛、柯基毛量、毛长和光泽都不同。这里给出不同毛发类型的调整方向你可以按这个思路微调参数。4.1 短毛、长毛、卷毛、蓬松毛的区别短毛动物比如英短、德文卷毛猫毛流纹理的频率要高一些。把噪声的 Scale 调大纹理细节更碎Height 和 Normal 强度控制在 0.3 到 0.6 之间让表面有一点起伏但不夸张。长毛动物比如布偶猫、金毛需要把噪声 Scale 调低让纹理颗粒变大同时方向模糊的角度值加大让毛流有拉扯感。Height 可以稍微提高一些特别是在尾巴和颈部周围营造厚毛的感觉。卷毛动物比如贵宾犬、德文卷毛猫需要在噪声之后加一个扭曲或波纹滤镜让毛流不朝同一个方向走形成小幅度的卷曲。参数上扭曲强度不宜太大否则会显得脏。先用 0.2 左右的强度测试不够再加。蓬松毛比如博美、银渐层重点在多层叠加。不要试图用一层做出蓬松感可以用两层毛发纹理一层方向一致另一层随机旋转再通过蒙版控制混合区域。每一层的 Opacity 都降低整体过渡更柔和。猫狗之间的差异也要考虑。猫的毛通常更细腻狗的毛更粗更长。同样的 Noise Scale 放在猫身上合适放在金毛身上可能显得太碎。所以每次换模型第一步不是调颜色而是先确认毛发的颗粒尺度是否匹配。4.2 卡通风格的配色、AO、高光和描边卡通风格和写实不同颜色要更干净明度对比更强。BaseColor 里不要堆太多脏色和过深的 AO。SP 自带的 Ambient Occlusion 生成器可以出 AO但强度要降到 0.1 到 0.3 左右否则毛发缝隙会变得太重不符合卡通光影。高光部分毛发通常比较粗糙Roughness 可以设置在 0.5 到 0.8 之间让高光散开。如果要做头部或背部有明显的高光发丝可以单独建一个填充层把 Roughness 降低到 0.3 左右通过蒙版限制范围再配合 Normal 通道做出“某几根毛反光”的感觉。卡通材质还要注意颜色的饱和度。毛发区域不要全部用纯白或纯黑尤其是白色毛发的角色如果 BaseColor 直接给 255 纯白在灯光下会过曝丢失结构。建议白毛给 230 到 245 之间的浅灰白阴影里再压暗一点这样既有卡通感又有体积。描边并不是 SP 材质球的必备项。如果你做的是三渲二风格需要最终有描边可以在模型导出时用 Inverted Hull 做外描边也可以在贴图里画边缘色。SP 里能做的是通过曲率生成器把边缘区域选出来在 BaseColor 上叠加一层深色或者描边色但效果不如几何描边稳定。4.3 通过蒙版分区域控制颜色和纹理同一个智能材质里不同部位的毛发差异需要通过蒙版实现。比如猫的耳朵里侧毛发短、颜色浅尾巴末端毛发长、颜色深。你可以在图层组里建立多个蒙版每个蒙版对应一个区域再在该区域下控制纹理参数。蒙版的来源比较灵活可以用多边形填充工具、颜色选择、ID 贴图或绘制画笔。我习惯先用 ID 图做粗分区再用笔画调整边缘因为卡通模型通常各部位颜色比较清楚ID 图能省很多时间。区域蒙版建立后要给每个部位单独调整滤镜参数不要直接改全局材质层。比如里耳朵区域单独把 Noise Scale 调大唇周区域把 Height 降低这样可以避免“一个参数影响全身”的问题。使用蒙版时要经常开启和关闭蒙版预览确认边缘没有溢到附近区域防止制作后期发现颜色渗透到眼睛或嘴巴周围。5. 常用参数、导出贴图和落地到游戏引擎材质球在 SP 里好看只是第一步。真正落地还要确认参数在引擎里表现一致贴图导出命名正确以及多个模型批量处理时不乱。5.1 关键参数速查表下面是我在卡通猫狗毛发制作中常用的参数范围你可以作为起点再按实际模型调整参数常见范围作用建议Noise Scale0.001 - 1.0控制毛发纹理颗粒大小短毛调大长毛调小模糊/方向拉伸角度0 - 180 度控制毛流方向沿身体长度方向调整方向模糊强度2 - 8毛流拉丝感先从小值开始Height 强度0.2 - 1.5高度起伏卡通风格不宜过高Normal 强度0.3 - 1.0法线细节配合 Height 使用Roughness0.4 - 0.9表面粗糙度毛发一般偏高Levels 对比度0.3 - 0.7纹理明暗对比控制毛流清晰度AO 强度0.1 - 0.3环境光遮蔽卡通风格偏低这些参数不是固定标准。不同版本 SP 的滤镜命名和位置会有差异但逻辑相同先看通道再看滤镜最后调强度。不要因为某个数值看起来“标准”就到处套用实际效果要回到模型的 UV 密度和渲染环境里判断。5.2 导出设置与引擎的贴图组合导出时SP 提供了很多模板比如 Unreal Engine 4/5、Unity HD Render Pipeline 等。导出前先在“导出”界面选择目标引擎模板再确认通道映射。卡通毛发常用的通道组合是 BaseColor、Normal、Roughness、AO 或 ORM 打包。如果你用 Unity可以把 Metallic、AO、Roughness 打包成一张 ORM 贴图注意各平台通道顺序。如果你用 UnrealSP 会生成对应的 basecolor、normal、ORM 等后缀。导出时建议勾选“将填充色设为白色”等选项避免透明区域残留默认黑色。还有一个很容易忽略的点BaseColor 贴图需要 sRGBNormal 和 ORM 需要线性空间。SP 导出的贴图一般已经标注了 sRGB 标志但导入 Unity 或 Unreal 后要检查一下。法线贴图如果被当成 sRGB 读取画面会发灰或产生错误光影。如果材质里使用了 Opacity 做发丝导出时还需要单独确认透明通道。卡通毛发里的透明发丝在引擎里往往需要开启 Alpha Clip 或双面渲染透明度参数也必须提前调好。否则导出后透明区域可能变成黑色团块或者出现明显排序错误。5.3 批量处理多个动物模型让同一个材质球快速复用如果你要做多只猫狗不可能每只从头做材质。正确做法是把第一个做好的智能材质保存好然后在新的纹理集里直接拖入使用。由于材质球内部是程序纹理和蒙版图层的组合它会自动适应新模型的 UV 分布。不过要注意几个问题。第一新模型如果 UV 布局不一样毛流方向可能不对需要微调方向模糊角度。第二不同部位的面积比例不一样Noise Scale 可能需要整体缩放。第三如果模型使用了不同的纹理集比如四个象限复制材质球时要确认每个纹理集都正确识别。批量处理时我建议先跑一个中等体型的模型确认流程再批量复制。如果发现输出贴图命名混乱需要提前在导出模板里设置好前缀和后缀比如T_Cat_Body_BaseColor。等批量导出完成后再抽查法线方向、粗糙度通道和透明通道不要只看 BaseColor。批量任务的另一个关键是“失败重试”。如果一次导出几十个纹理集中途出现内存不足或某个模型 UV 异常最好把日志打开。先看哪一批失败再回到 SP 里修复对应纹理集不要盲目重新导出全部文件。这样能省很多时间。6. 常见问题与排查链路最后说几个做卡通毛发材质球时常见的坑。这些现象看起来是材质问题实际原因往往出在 UV、通道、引擎设置或图层结构上。6.1 为什么毛发纹理看起来像“贴纸”而不是毛发如果材质球一放上去毛发纹理像是贴了一层花纹纸没有毛茸茸的感觉优先检查三点。先看 Height 和 Normal 通道有没有实际参与。SP 预览中如果你只在 BaseColor 上加了纹理没有给 Normal 或 Height 提供信息表面就会是平的自然会像贴纸。再看 Noise 的 Scale如果颗粒太大纹理看起来像大片污渍不像毛发。最后看方向模糊是否生效完全没有方向的颗粒状噪声很难产生毛流感。排查顺序不要倒过来。先确认通道再调 Scale最后调方向。如果顺序反了会浪费很多时间调一个本来没参与渲染的通道。另外SP 预览里的光照角度也会影响判断。如果光照太平Height 和 Normal 的效果会不明显可以旋转环境光再观察。6.2 为什么导出后效果和 SP 里不一样SP 里预览效果和引擎里不一样最常见的原因是导出时通道没有选全或者引擎材质节点连错。比如你在 SP 里用了 Height 做视差但导出到 Unity/Unreal 后材质节点没有接入视差或高度偏移Height 信息完全没有被读取又比如 Normal 贴图的绿色通道方向在 DX 和 OpenGL 之间不同SP 导出模板一般会自动处理但手动导入时可能会错。排查顺序先在引擎里用一个最简单的 Lit 材质只连 BaseColor 和 Normal排除其他节点干扰。再检查贴图导入设置BaseColor 是否 sRGBNormal 是否线性ORM 的通道顺序是否与材质节点一致。最后再看模型 UV 和 SP 预览里的纹理集分辨率有时候是低分辨率贴图在引擎里被放大导致模糊看起来是效果丢失。如果引擎里高光特别脏大多数原因是 Roughness 通道被映射到了错误的通道或者 ORM 贴图的通道顺序和 SP 模板不一致。不要急着改模型先确认导入设置。6.3 其他容易踩的坑命名、模型精度、Unity/Unreal 参数差异命名和目录问题虽然不直接影响效果但会影响批量流程。SP 导出的贴图文件名最好只包含字母、