Substance Painter武士角色PBR材质实战:从烘焙到导出的完整工作流 武士刀的刃口泛着冷蓝甲胄的黑漆底上铺满铆钉周围的细碎磨损缠绳的编结纹路从粗糙度贴图里清晰分辨出来——这不是某张宣传图而是我连续很多个晚上对着同一个武士角色硬磨出来的画面。AAA级别的角色纹理项目长就长在这种地方没有捷径可走每一条划痕、每一片甲叶的渐层都要在 Substance Painter 里建图层、补蒙版、调遮罩持续迭代到真正经得起放大看的程度。这篇文章就把我在这种长线项目中走通的 PBR 工作流完整拆一遍从前期规划、烘焙、材质分层逻辑到导出与排查尽量说清楚每一步为什么这么做以及踩过的坑都是怎么填的。这类内容适合谁看如果你正在做次时代角色、影视级 CG 资产或者刚从中小型道具过渡到完整角色的贴图阶段这整套思路基本可以直接搬到你下一个项目里。哪怕你只是刚开始摸 Substance Painter也能在这里面找到一套可以照着走的路径。1. 开工之前先想清楚这单活到底要画什么1.1 武士角色的材质底盘分析武士题材和普通角色最大的区别就是它的材质种类特别杂而且相互之间对比度极高。一块布挨着一块金属金属又连着皮革、漆器、缠绳和金饰每一种材质拿到的 AO、曲率和高度信息都不一样。如果开工前不把材质清单列清楚很容易画到一半才发现某个区域的 PBR 参数根本立不住。我习惯先用一张表把角色身上所有材质区域和参数范围定下来后续每个图层叠加都对照这张表微调材质区域BaseColor 倾向MetallicRoughness 初始参考主要细节需求甲胄铁片深灰、黑褐、深蓝黑0.7~0.90.25~0.45边缘磨损、划痕、掉漆、油污甲胄漆层高光黑、红黑0.1~0.30.1~0.25漆滴、裂纹、光泽衰减、指纹刀刃冷灰、带轻微暗调0.95~10.05~0.15拉丝痕、刃口高光、氧化刀柄缠绳亚麻色、深棕00.7~0.9绳编结、局部破损、油污内衬布料深蓝、深红、紫、白00.5~0.8织纹、褶皱、磨损、尘土皮革绑带深棕、黑棕00.5~0.75毛孔、折痕、边缘磨损金饰与雕件金黄、淡暖黄1金属0.2~0.35贴金块面、高光形状、轻微氧化注意看表格里有个很容易误解的点Metallic 不是说“我想让它变成金属就填 1”它只回答一个物理问题——这个区域是不是导体。刀刃和甲胄铁片是导体但漆层不是布不是皮革也不是。如果一股脑把整个角色都拨到 Metallic 1最后出来的效果就是满身镜面球任何光照下都会闪得非常假。Roughness 则控制微观表面的光滑程度。刀刃要接近 0.1 甚至更低让高光收束成一道锐利的刃口而缠绳和布料要回到 0.7 以上让光散开。很多新手一上来把粗糙度推得很高或很低都是因为不知道 Roughness 的真正作用是在控制高光的“收束半径”。1.2 为什么选定 Metallic/Roughness 工作流而不是 Specular/GlossinessPBR 工作流目前主要有两套Metallic/Roughness金属度/粗糙度和 Specular/Glossiness高光/光泽度。我这次选前者原因很直接——行业里大多数引擎和渲染器默认支持的就是金属度流程Substance Painter 的智能材质、导出预设和第三方资源也基本全部围绕这套体系转。打个比方选工作流就像确认螺丝是公制还是英制。如果你前面不确定后面所有工具、预设、贴图命名全都要跟着绕一圈返工成本特别高。Specular 流程在部分离线渲染器里仍有使用但它在实际资产流转中的通用性不如 Metallic 流程。对于 AAA 级别项目尤其是一个需要多人协作、反复迭代的角色资产Metallic/Roughness 几乎是默认答案。选定之后整个通道结构就固定下来了BaseColor存漫反射颜色金属材质把高光颜色也写进去。Metallic导体区域为 1非导体为 0混合材质允许渐变。Roughness表面光滑程度值越大越粗糙。Normal法线细节来自高模烘焙或程序纹理。AO环境光遮蔽烘焙获得后续叠加在图层底部。Height/Curvature用于子表面散射和遮罩生成日常主要用曲率。1.3 贴图分辨率与 UV 接缝规划这是最容易被拖到后期才后悔的环节。武士角色身上不同区域对纹理密度的需求完全不一样——人眼会盯着刀刃和甲片看但很少会去数绑带内侧有多少像素。所以我实际做的时候会在模型阶段就分配好 UV 岛头部、上半身甲、刀刃、刀柄给到最高密度腿甲、下摆、背侧稍低一档被遮挡的腋下、内衬里侧可以更低。Texel Density纹理密度我一般控制在 1024px/m 以上关键区域做到 2048px/m。比如目标输出是 4096x4096 或 8192x8192 的大贴图就需要把每个 UV 岛尽量铺满这一张图而不是留大片空白。UV 接缝尽量藏到侧面、内侧、头发下面这些不显眼的位置。尤其是刀刃这种长条形硬表面如果 UV 接缝落在刃口正中间后续 Normal 和 Roughness 一旦出现偏移刃口上就会有一条特别明显的“断裂线”返工麻烦不如一开始就规划好。2. 烘焙阶段纹理的骨架不能懒2.1 高低模准备与烘焙前检查很多人一拿到角色就急着进 Substance Painter 开画结果画到一半发现 AO 黑成一团或者 Normal 方向不对这时候再回头改基础等于白画。长线项目里最忌讳的就是基础没打好就往上堆细节。所以我的流程是先在 DCC 软件里把高模、低模、匹配状态过一遍。低模的边缘要尽量贴合高模尤其是甲片边缘、刀刃、颊骨这种硬角区域包裹器Cage才能准确判断高低差。然后检查 UV 有没有重叠重叠区域在烘焙时会被多个面同时覆盖烘焙出的 AO 和曲率会是错误的。投影变形大的区域也要提前展开重调。还有一点容易被忽略模型里不要有距离过近的重叠面或者穿插的次表面结构比如甲片之间的缝隙可以留但不要在两片甲之间夹一个没有拔模角度的小凹槽——这种凹槽烘焙时几乎都会黑成一团。2.2 Substance Painter 烘焙面板的设置心得Substance Painter 的烘焙面板有几个参数我每次都固定调整Mesh Maps 只勾选需要的内容AO、Normal、Curvature、Thickness、Position、ID。不需要的贴图不勾能省下大量等待时间。Normal 格式选 Tangent Space绝大多数项目都认这个如果引擎里法线方向不对再检查 Green 通道是否要反转。AO 开启双通道抗锯齿值按 8x4 或 16x4 来太小容易出现摩尔纹。Curvature 的勾选和对比度我会根据材质细节密度微调甲片密集的角色把曲率半径调小一点避免把每一条凹槽都吃进去变成脏点。参数里有个特别关键但常被忽略的选项是 Thickness厚度贴图。虽然很多项目最终不会导出口径中用到但在 Substance Painter 内部做磨损和污渍遮罩时厚度信息能告诉你哪些地方是薄片、哪些地方是厚块。比如刀刃边缘薄磨损就会先从那里开始甲片接缝处的AO也更深。烘焙完我会单独看一眼 Thickness 灰度图确保甲片和刀刃边缘有明显由厚到薄的渐变。2.3 用 ID 贴图做到材质区域的快速区分一个武士角色身上可能同时有十几种材质如果靠手动选择 UV 岛或者手工框选效率太低。最稳的办法是先用 ID 贴图把材质区域分清楚。做法很简单在导出高模/低模之前用顶点色或者单独的材质 ID 把区域涂好——甲胄一个颜色、布料一个颜色、刀身一个颜色、绳编一个颜色。烘焙时把 ID Map 也一起输出进入 Substance Painter 后就可以直接用“Color ID”选择区域再配合图层蒙版快速创建对应材质的填充层。ID 贴图不需要精细只要颜色之间边界清晰即可。有次我偷懒把甲片和皮绳都涂成相近的暗红色进 SP 后才发现选择区域时怎么也选不准最后只能回头重涂白白浪费了大半天。这种事真是只出一次就知道痛了。2.4 烘焙完成后的三道检查烘焙不是按下按钮就结束我每次会固定做三个检查第一在模型上转一圈看 UV 接缝处有没有明显的颜色断层。如果 Normal 在接缝附近出现明显跳变先检查烘焙设置里的边缘抗锯齿再检查 UV 岛边界有没有足够的 padding。第二看 Normal 方向。在 SP 视口里加载三向光照预览如果角色某些面高光明显不对称、像有半边凹进去通常是 Green 通道方向反了或者包围盒匹配参数没调好。第三看 AO 是否大面积黑成一片。如果甲片之间、布褶深处的 AO 太过死黑多半是高模距离低模太近、AO 采样陷入缝隙出不来。这时把 AO 的采样半径稍微调大一点或者给低模加一点包裹膨胀再重新烘焙。3. 材质核心那些反复叠加的图层与蒙版3.1 黑漆甲胄的四层叠加方案武士甲胄最常见的是黑漆铁片但这个“黑”不是纯黑。纯黑在 PBR 里有个麻烦它几乎不反射任何可见光在大多数光照环境下看着像一块没有体积的人形板。所以我处理黑甲时会用深灰蓝黑作为底然后在上面叠加层次。我个人的四层结构是这样的第一层是底色填充。BaseColor 取偏冷的深灰色sRGB 大约在 #1b1b1e 到 #242427 之间Metallic 设 0.75 左右Roughness 设 0.35。这个阶段不用追求更多细节先把大关系铺对。第二层是曲率磨损层。利用烘焙出来的曲率贴图配合智能遮罩里的“曲率”生成器把边缘高亮提取出来。这里要注意调节对比度让磨损只出现在甲片边缘、铆钉周围和棱角处而不是全部凹槽都泛白。磨损层的 BaseColor 提亮到 #4a4a50Roughness 降到 0.18模拟打磨后露出金属底子的效果。第三层是掉漆与刮痕。掉漆最常出现在被碰撞的位置——肩膀、髋部靠近武器、手指碰触的护手。我习惯用 SP 的画笔遮罩加一张黑掉漆 alpha 纹理然后在上面手动补几条方向一致的刮痕。要把刮痕的粗糙度调低一点因为金属露出来后反而比漆面更光滑。第四层是污渍和灰尘。用 AO 生成器做蒙版把灰尘“锁”在凹陷处和末梢能接触到的地方BaseColor 加深一点Roughness 提回 0.5 左右。这四个图层叠完黑甲基本就有说法了后续微调节奏也就清晰了。3.2 刀刃与高抛光金属的处理方法刀刃在武士角色里是视觉焦点也是最容易做砸的一个金属件。常见的错误是直接把 Roughness 拉到 0.01当成一面完美镜子。结果在渲染器和引擎里刃口高光会碎成一片稍微一旋转镜头就像在闪光弹。我的做法是给刀刃一个很低的粗糙度但不让它归零。典型参数Metallic 0.98Roughness 0.08~0.12BaseColor 用偏冷的灰白但不要把亮度拉满。因为纯白 BaseColor 在金属流程下会让高光异常锐利屏幕上看久了非常刺眼。关键细节在拉丝痕。刀刃的调质纹路应该是平行于刀身方向的我通常用 Substance Painter 里的粒子笔刷配合方向约束让划痕统一沿着刀身方向散布再叠加一层很轻微的 Directional Blur 滤镜去模拟金属拉丝。这样在动态光源旋转时能看到刀身反射一条连续的、略微模糊的光带而不是一片碎裂的闪光。刃口的高光我单独用一个蒙版利用曲率贴图把刀刃边缘提取出来增强它在 BaseColor 和 Roughness 通道的差异。刃口部位 Roughness 可以再低一点高光更锋利再用一层轻微的色彩偏淡蓝灰模拟氧化。3.3 布料、皮革与缠绳的程序化细节布和皮这类非金属材质用 PBR 流程处理时重点不在 Metallic而在 Roughness 和 Normal。武士角色的内衬和下摆往往是深蓝、深红、紫色这些高饱和色如果 Roughness 统一下到 0.6 左右会缺乏层次。我会把它拆成三张细节层底布是平纹织物的纹理。在 SP 里可以直接用内置织物智能材质叠加一个非常细微的程序噪声到 Normal 通道制造织纹感。这个噪声幅度要小不然远远看过去像起了一层鸡皮疙瘩。褶皱和撑开区域。用 AO 或曲率生成蒙版在弯曲处让 Roughness 稍微低一点——因为布料被拉伸的时候表面会变得相对平整高光会比松弛处更集中。这个原理听起来很简单但很多做布的人就是不调这一层导致整块布看起来像一块塑料片。磨损和褪色通常出现在腰部、袖子、下摆的下沿。新建一个填充层用画笔蒙版随意涂抹BaseColor 往灰色方向偏移一点Roughness 稍微提高再叠加一层淡淡的灰尘。注意别把磨损做得太规则真实衣物的破损总是有些随机。皮革的制作思路类似但磨损区域要更集中在折痕和经常弯折的地方。手指按压过的部位、腰带的扣环附近都要比其他地方更光滑、颜色更深。做一个皮革绑定的时候我通常会在 Normal 通道叠加一张细颗粒的毛孔纹理Roughness 也加上相同纹理的轻微扰动这样皮面才不会假到发光。缠绳则是武士刀柄最有辨识度的部分。绳编最大的难点在节奏感一圈一圈的交错要均匀。我建议先给一个方向性重复纹理作为基础再在 Normal 通道叠加织线的高度扰动最后用蒙版把破损区域集中在手握持的地方。如果从头开始一笔一划画绳编不仅慢而且很容易在对称处对不齐后面检查时会非常痛苦。3.4 金饰与装饰浮雕的做法金饰、甲片包边、刀镡这些装饰件对角色整体质感的作用往往比人们预想的更大。金色做得太亮整张脸都会被抢镜做得太暗又看不出是金。我常用参数是 Metallic 接近 1Roughness 在 0.2~0.35 之间BaseColor 不要用纯黄而是用偏暖的淡金黄参考 #d7b06e 一类的色感。纯黄在 PBR 里通常会过曝反而丢了金属颜色。再给金饰表面加一点极其细微的粗糙度变化——用低频噪声扰动 Roughness模拟铸金表面的微颗粒感。有了这个微扰动金饰在逆光下的高光轮廓会有一点真实金属的不规则感而不是一道硬邦邦的直线。装饰浮雕的立体感主要来自 Normal 烘焙。如果高模浮雕本身做得很扎实低模烘焙后 Normal 也够用。如果部分小件没有高模就用 SP 里的高度图生成器叠一层程序浮雕纹理到 Normal 通道。但要注意这种近景纹理不能一直放大看最好和最亮、最暗两个渲染角度对比一下确保浮雕的受光关系是正确的。4. 长线作战环节管理、性能维持与状态保护4.1 图层命名与分组的规范AAA 项目往往不是一个人从头做到尾中间可能换手、回流、修改。Substance Painter 的图层堆叠如果没有规矩后期自己回去都会迷路。我从这个武士项目开始强制自己做两件事每个材质区域一个文件夹每个文件夹内部的小图层命名带上用途。比如一个简单的结构Character/ ├── Armor_BlackBase │ ├── BaseColor │ ├── EdgeWear_Curvature │ ├── Scratches_HandPaint │ └── Dust_AO ├── Weapon_Blade │ ├── Blade_ColdGray │ ├── Blade_GradientRoughness │ └── EdgeSharp_Normal ├── Cloth_Inner │ ├── Fabric_Noise │ ├── Folds_AO │ └── Wear_Edges └── Gold_Decor ├── MetalBase └── Oxidation_Mask这个结构一眼就能看出哪个区域用了什么方式处理后面要用智能材质或导出某区域贴图时直接点文件夹就能定位。表面上看命名麻烦实际上它像项目管理里的模块拆解——数字资产到了一定复杂度可读性就是生产力。4.2 非破坏性习惯智能材质、锚点与实例化长线项目里最怕的是一件事甲方或者艺术指导一句话要求把整个甲胄的颜色从黑蓝改成墨绿。如果你的每个细节都是直接画在像素上的这个改动就要从头来一遍。但如果你用的是图层蒙版填充层改一个底层填充色所有上层遮罩全部自动跟着更新。所以我在这个项目里始终坚持非破坏性原则能用填充层的地方不用直接画笔后续调色只需改填充色。用智能遮罩配合曲率、AO、位置生成器让磨损和灰尘跟随模型自动生成而不是手动一点点涂。用锚点把细节之间的逻辑关系锁住。比如铆钉位置、刀柄缠绳的节距、甲片磨损的分布通过锚点从一个区域取样再驱动另一个区域的蒙版。这样调整锚点源所有关联细节同时更新不会出现某个划痕和铆钉对不齐的问题。锚点可能对新手有点陌生但它在长项目中价值极大。我刚开始做道具时觉得锚点是多余功能后来做一个复杂硬表面载具才发现只有在锚点体系下才能高效地把 AO、曲率、和自定义图案三者绑在一起做磨损。4.3 性能优化与版本管理Substance Painter 里图层一多、贴图分辨率一高操作延迟会越来越大。长时制作过程中最崩溃的不是画不好而是软件卡到什么都点不动。几个实际有效的优化点视口显示质量降到中或低平时预览用细节检查再切到高质量。关闭暂时不用的图层组的预览减少实时运算压力。输出尺寸严格控制。没必要一张 8192 从头用到尾甲片和刀刃特写可以单独出 4096 的局部贴图。尽量用贴图缓存和预烘焙结果不要在着色器里加载过多实时滤镜。版本管理方面建议每个环节完成就另存一个版本。我在这个武士项目里基本上每天收工前都会存一个带日期的版本或者至少存一个“完成材质核心”的快照。软件崩溃是随机事件长周期项目里更要防止意外闪退还丢几个小时的进度。除此之外每完成一个大块区域导出一次 PNG 贴图作为中间存档。贴图格式比 SPP 工程文件更通用也方便丢进引擎或第三方查看器里看最终效果。4.4 定期回引擎或外部查看器校验Substance Painter 的视口渲染其实已经很好了但它默认的光照、曝光和色调映射和最终引擎里的表现往往有差异。尤其金属材质高光强度和环境反射的差异很大。我通常在项目进行到一半时就导出一版临时贴图放到外部查看器比如通用的实时渲染插件或者最简单的加载到游戏引擎里跑一遍。调整点主要集中在高光是否过曝如果刀刃在 SP 里看很润进引擎看像要烧穿那就要把 Roughness 下限提回来一点。暗部 AO 是否太重有些烘焙 AO 在引擎默认曝光下会黑到没有层次。BaseColor 有没有因为环境和引擎的 gamma 精度变化而偏色。这一步很关键因为它能暴露 SP 视口里看不出来的问题。长线角色项目里最消耗情绪的不是技术难点而是做了一大半才发现方向错了。定期去引擎校验本质上是在控制返工范围。5. 导出与避坑速查5.1 导出模板的配置与检查Substance Painter 本身自带一堆导出模板比如常见引擎和渲染器的专用模板但 AAA 项目通常还会用到定制模板。我们需要确认的是贴图命名后缀和颜色空间。以常见流程为例BaseColor、Normal、Roughness、Metallic、AO 这套通道建议导出的命名统一为Character_BaseColor.png Character_Normal.png Character_Roughness.png Character_Metallic.png Character_AO.png颜色空间方面BaseColor 和 AO 一般按 sRGB 处理Normal、Roughness、Metallic 按线性处理。在导出模板里把这几个通道的“Color Space”配置好能省去后续在引擎里挨个设置参数的时间。很多人在这一步出问题导出去之后发现金属度贴图颜色怪怪的其实不是材质做错了是颜色空间标错了。导出前还要检查输出尺寸。一个角色几个 Texture Set 往往各有一张大图如果各导各的没统一后续合批会很痛苦。我在这个项目里固定 4096x4096 作为主贴图尺寸不需要超高清细节的小物就降到 2048x2048。5.2 高频问题速查表整理几个我在武士项目里反复踩过的坑直接给到现象、原因和解决方法现象原因解法甲片边缘高光断掉、像被切一刀曲率遮罩范围过大Edge Wear 吃到非边缘区域下调生成器对比度或限制蒙版到边缘通道法线高光方向左右不对称Normal Green 通道方向与引擎约定不一致烘焙时翻转 Green 通道或直接在引擎里调翻转粗糙度导到引擎后整体变油亮引擎预期 Glossiness你却导出了 Roughness确认导出模板必要时对 Roughness 做反相BaseColor 提亮后像塑料提亮过度把非金属区域推过了降低提亮幅度把更多精力放到 Normal 和 RoughnessAO 大面积死黑看不到细节AO 采样半径太小或者低模嵌入高模增大 AO 采样半径重新调整包裹器刀刃高光闪烁成一片Roughness 过低接近镜面给 Roughness 一个下限比如 0.06~0.15.3 交付前的三分钟自查流程长项目收尾阶段最需要固定的动作就是交付前按清单快速走一遍。我会依次做三件事打开所有 Texture Set按顺序逐张看 BaseColor、Normal、Roughness、Metallic、AO。不是看细节而是快速确认没有漏烘焙、没有大面积错误。有张贴图是空白或全黑一眼就能发现。回到模型旋转到接缝可能比较明显的几个位置——刀柄侧面、甲片间隙、肘关节内侧、脖子后方——确认 Normal 和 BaseColor 在这些位置没有硬切痕。如果接缝处出现明显的颜色跳变先把 UV padding 调大重新烘焙别放给美术后期去修。最后确认导出目录里的贴图命名、尺寸、颜色空间和引擎接入所需一一对应。不需要把每个文件的每个通道都打开核对但只要文件命名一致、尺寸一致后续接入时就不会出现破图。这一套动作每次十分钟不到却能在交付前拦住八成低级错误。写这个角色时我印象最深的不是某个材质节点有多高级而是某天深夜我发现一个甲片边缘的曲率遮罩跑偏了来来回回调整最后发现是烘焙时包裹器设置大了。长时间项目就是这样真正的消耗不是工具也不是硬件是反复。我的建议是把你自己的流程固定成一套清单每次导入模型前先跑一遍基础检查能在后期省掉大量返工。等这个角色做完还可以考虑把同一个 Substance Painter 工程扩展到武士腰间的小道具、刀鞘和单独成一个道具集打包成自己的资产库。以后再接同题材你会发现自己从第三周才开始真正享受雕刻细节的过程。