
1. 项目缘起与整体设计思路1.1 为什么选择 Substance Painter 做 AAA 武士角色纹理做角色纹理这些年我经手的项目从手游低模到影视级高模都有但真正让我觉得“工具选对了效率翻倍”的还是 Substance Painter 这套 PBR 工作流。这次的项目是一个 AAA 级别的武士角色要求是能在 UE5 里直接跑实时渲染同时还要能输出影视级离线渲染用的贴图。说白了就是一套纹理资产要同时满足游戏引擎和离线渲染两个管线的需求。为什么不用传统的手绘贴图流程因为武士这个题材太吃材质细节了。甲胄上的漆面剥落、皮革绑带的磨损、刀刃上的淬火纹路、布料边缘的毛边——这些东西如果全靠手绘一张 4K 的贴图没有三四十个小时根本下不来而且改一个材质参数就得重画。Substance Painter 的图层化非破坏性工作流让我可以在任何阶段回头调整某个材质的粗糙度或者金属度而不用从头再来。PBR 这套基于物理的渲染理论核心就是把材质的颜色信息和光照响应分开。以前做贴图颜色和光影是混在一起的换个光照环境就得重画。PBR 把 albedo基础色、roughness粗糙度、metallic金属度、normal法线这些通道拆开引擎根据物理公式去计算最终效果。这意味着我做的贴图在任何光照环境下都能保持一致的物理正确性这对 AAA 项目来说太重要了。1.2 整体工作流的阶段划分我把整个纹理制作流程拆成了五个阶段每个阶段都有明确的输入和输出避免返工。第一阶段是资产准备。把高模和低模导入 Substance Painter烘焙法线、AO、曲率、位置、厚度这些辅助贴图。这一步是整个流程的地基烘焙质量直接决定了后续所有纹理的精度上限。第二阶段是基础材质铺设。用填充图层和遮罩把大块的材质区域分出来——金属、皮革、布料、漆面每个区域先给一个基础色和粗糙度不求细节只求整体关系对。第三阶段是细节叠加。这是最耗时的部分用智能材质、智能遮罩、生成器来叠加磨损、污渍、划痕、边缘磨损这些细节。Substance Painter 的生成器系统可以基于曲率、AO、位置等辅助贴图自动生成磨损效果比手绘快得多而且更自然。第四阶段是手工修整。机器生成的磨损有时候会过于均匀或者出现在不该出现的地方这时候就需要用手绘笔刷去修——把不该有的磨损擦掉在关键位置加强磨损让材质有“故事感”。第五阶段是导出与验证。按照目标引擎的规范导出贴图然后在引擎里做最终验证检查法线方向、粗糙度范围、金属度是否正确。注意很多新手会跳过烘焙质量检查这一步直接开始画贴图结果画到一半发现法线接缝有问题只能推倒重来。烘焙完一定要在 Substance Painter 里用默认材质球检查一遍看看有没有明显的接缝、锯齿或者丢失的细节。1.3 为什么这套流程值得参考这套流程的核心价值在于“可复现”和“可调整”。我把每个材质的图层结构都做了清晰的命名和分组任何一个环节需要修改我都能快速定位到对应的图层。比如导演说“甲胄的漆面太新了再旧一点”我不需要重画只需要调整漆面图层的磨损遮罩强度或者叠加一层新的污渍图层。另外这套流程对硬件的要求相对友好。Substance Painter 支持 GPU 加速一张 4K 的贴图在 RTX 3060 上就能流畅编辑。当然如果要做 8K 的影视级贴图建议还是上 12G 显存以上的卡。2. 资产准备与烘焙环节的核心细节2.1 高低模的匹配与命名规范在把模型导入 Substance Painter 之前高低模的匹配是第一个坎。低模是最终要在引擎里跑的模型面数通常控制在 3 万到 8 万三角面之间AAA 主角级别。高模是雕刻出来的细节模型面数可能几百万甚至上千万。烘焙的原理就是把高模的细节“投影”到低模上生成法线贴图。高低模的匹配度直接决定了烘焙质量。我一般会在 Blender 或者 Maya 里先把低模的 UV 展好然后检查高低模的轮廓是否对齐。如果低模的某个部位比高模凸出来太多烘焙的时候就会出现“穿透”或者“阴影”问题。一个实用的技巧是在高低模匹配阶段用半透明的材质叠加显示肉眼检查轮廓偏差。偏差超过低模边长的 5% 就需要调整。命名规范也很关键。Substance Painter 支持按名称匹配高低模如果命名混乱烘焙的时候就得手动指定非常浪费时间。我的命名习惯是低模用_low后缀高模用_high后缀比如samurai_helmet_low和samurai_helmet_high。这样导入的时候软件会自动配对。2.2 烘焙参数的设置与常见坑烘焙设置里有几个参数需要特别注意。抗锯齿Anti-aliasing建议开到 4x 或 8x。武士甲胄的边缘有很多细小的结构抗锯齿不够的话法线贴图边缘会有明显的锯齿。匹配方式Match选择“By Mesh Name”或者“Always”。如果高低模命名规范用 By Mesh Name 更准确。如果模型是合并在一起的就用 Always但需要手动检查每个部分的烘焙结果。射线距离Ray Distance这个参数控制从低模表面向外发射射线的最大距离。设得太小高模的细节投影不过来设得太大会把周围无关的几何体也烘焙进去。我的经验值是低模平均边长的 2 到 3 倍。比如低模边长平均 2 厘米射线距离就设 4 到 6 厘米。忽略背面Ignore Backfaces一定要勾选。武士的甲胄有很多层叠结构如果不忽略背面烘焙的时候会把内层的几何体也投影上去导致法线贴图出现奇怪的凸起。烘焙完成后我会重点检查三个辅助贴图法线Normal、环境光遮蔽AO、曲率Curvature。法线贴图看接缝和细节是否完整AO 贴图看阴影是否合理有没有大块的死黑曲率贴图看边缘是否清晰这直接决定了后续磨损生成器的效果。实操心得如果烘焙出来的法线贴图在 UV 接缝处有明显的亮线或暗线先检查高低模的 UV 接缝是否对齐。如果对齐了还有问题可以在烘焙设置里把“Dilation”参数调大让贴图边缘向外扩展几个像素掩盖接缝。2.3 辅助贴图的生成与验证除了烘焙生成的贴图Substance Painter 还可以根据烘焙结果自动生成一些辅助贴图比如Position位置、Thickness厚度、World Space Normal世界空间法线。这些贴图在后续的材质生成器里会用到。Position 贴图记录了每个像素在模型上的三维坐标可以用来做基于高度的渐变效果。比如武士的甲胄从下往上应该越来越旧就可以用 Position 贴图的 Y 轴来做遮罩。Thickness 贴图记录了模型的厚度信息可以用来做边缘磨损和透光效果。武士的布料边缘、皮革绑带这些地方用 Thickness 贴图做磨损会非常自然。验证这些辅助贴图的方法很简单在 Substance Painter 的视图里逐个切换显示看看有没有明显的错误。Position 贴图应该是平滑的渐变如果有突变说明模型的 UV 有问题Thickness 贴图应该在薄的地方显示为暗色厚的地方显示为亮色。3. 材质分层与细节叠加的实操要点3.1 基础材质的分层逻辑我的图层结构一般是这样的最底层是基础材质层上面是磨损层再上面是污渍层最上面是手工修整层。每一层都用文件夹分组命名清晰。基础材质层又分为几个子层金属层甲胄、刀刃、护手、皮革层绑带、腰带、护腕内衬、布料层内衬、旗帜、绑腿、漆面层甲胄上的装饰漆。每个子层先用一个填充图层给一个基础色和粗糙度然后用遮罩把对应的区域分出来。遮罩的制作方法有几种。如果模型的材质区域是用不同的材质 ID 分好的可以直接用 Material ID 遮罩这是最快最准确的方法。如果没有材质 ID就需要用 Polygon Fill多边形填充或者手动绘制遮罩。Polygon Fill 适合规则几何体手动绘制适合不规则区域。注意基础材质的粗糙度值不要设得太极端。金属的粗糙度一般在 0.2 到 0.5 之间皮革在 0.5 到 0.8 之间布料在 0.7 到 0.95 之间。粗糙度太低会让材质看起来像塑料太高又会失去材质特征。3.2 智能材质与生成器的使用技巧Substance Painter 的智能材质和生成器是效率神器但用不好也会翻车。智能材质本质上是一组预设好的图层和遮罩直接拖到模型上就能用。但预设的智能材质通常是针对特定类型的模型调好的直接套用到武士角色上可能不合适。我的做法是把智能材质当作起点而不是终点。比如我拖一个“旧金属”智能材质到甲胄上它会自动生成磨损、锈迹、污渍。但这些效果是均匀分布的而真实的甲胄磨损应该集中在关节活动处、边缘、经常摩擦的地方。所以我会在智能材质的遮罩上再叠加一层曲率遮罩或者手绘遮罩把磨损集中在正确的位置。生成器里我最常用的是这几个Metal Edge Wear金属边缘磨损基于曲率贴图在模型的凸边生成磨损效果。参数里可以调整磨损的强度、宽度、颜色。武士甲胄的边缘、护手的边缘、刀刃的刃口这些地方用这个生成器效果很好。Dirt污渍基于 AO 贴图在模型的凹陷处生成污渍。武士的甲片缝隙、皮革的褶皱处用这个生成器可以快速做出积灰效果。Rust锈迹基于曲率和 AO 贴图在金属表面生成锈迹。注意锈迹的颜色要偏暖不要太饱和否则会显得很假。Scratches划痕可以基于位置或者曲率生成划痕。武士的刀刃上需要一些细密的划痕用这个生成器配合手绘修整效果很好。3.3 手工修整的关键位置与笔刷选择机器生成的磨损最大的问题是“太均匀”。真实的磨损是有重点的有些地方磨得很厉害有些地方几乎没磨损。所以手工修整这一步不能省。我一般会重点修整这几个位置甲胄的肩部和胸部这些地方经常受到武器撞击磨损应该最严重。我会用笔刷把智能材质生成的磨损在这些区域加强同时把其他区域的磨损擦淡。皮革绑带的边缘皮革的边缘容易起毛、开裂用细笔刷沿着边缘画一些不规则的磨损。布料的褶皱处布料的褶皱处容易积灰和褪色用软笔刷在褶皱的凹陷处叠加一层深色的污渍。刀刃的刃口刃口应该有细密的划痕和轻微的崩口用硬笔刷配合划痕笔刷来画。笔刷的选择上我推荐这几个Hard Round用于精确的遮罩绘制Soft Round用于柔和的渐变过渡Splatter用于不规则的污渍和磨损Scratch用于划痕。Substance Painter 自带的笔刷库已经够用了不需要额外下载。实操心得手工修整的时候把视图切换到“Material”模式这样可以看到最终效果。如果切换到“Base Color”模式你看到的只是颜色看不到粗糙度和金属度的变化容易修过头。4. 导出规范与引擎验证的完整流程4.1 导出参数的配置与通道打包Substance Painter 支持多种导出预设UE5 和 Unity 都有内置的预设。但内置预设不一定完全符合项目需求我一般会自定义一个导出配置。UE5 的 PBR 贴图通道打包规则是Base Color单独一张Normal单独一张Roughness、Metallic、AO打包到一张贴图的 R、G、B 通道。这种打包方式可以减少贴图数量节省显存。导出格式我一般选PNG或者TGA。PNG 体积小但导出速度慢TGA 体积大但导出速度快而且支持 Alpha 通道。如果项目对贴图体积有要求可以用 PNG如果追求导出效率用 TGA。分辨率的选择取决于项目的需求。AAA 主角的贴图一般是 4K4096x4096重要道具可以用 2K次要道具用 1K。如果模型很大比如整个场景可能需要 8K 甚至分块导出。注意导出之前一定要检查 UV 的利用率。如果 UV 有大片空白区域说明 UV 展得不够紧凑浪费了贴图空间。Substance Painter 里有 UV 检查视图可以直观地看到 UV 的分布。4.2 引擎内的验证与常见问题贴图导入引擎后需要做几个验证。法线方向UE5 的法线贴图是 DirectX 格式Y 轴向下Unity 是 OpenGL 格式Y 轴向上。如果法线方向反了模型的凹凸会看起来很奇怪——该凸的地方凹了该凹的地方凸了。Substance Painter 导出的时候可以选择法线格式一定要和目标引擎匹配。粗糙度范围在引擎里用默认的光照环境检查粗糙度是否合理。金属的粗糙度应该在 0.2 到 0.5 之间如果看起来像镜子或者像塑料说明粗糙度不对。金属度金属度只有 0 和 1 两个值中间值只用于过渡区域。如果金属度设成了 0.5引擎会把它当作一种奇怪的半金属材质效果很假。贴图接缝在引擎里旋转视角检查模型表面有没有明显的接缝。如果有可能是法线贴图的 Dilation 不够或者 UV 接缝没有对齐。4.3 性能优化与贴图压缩AAA 项目对性能的要求很严格贴图的大小和数量直接影响帧率。几个优化技巧合并贴图通道把 Roughness、Metallic、AO 打包到一张贴图可以减少贴图数量。如果项目支持还可以把 Base Color 的 Alpha 通道用来存额外的信息。使用贴图压缩UE5 支持 BC7 压缩格式可以在保持画质的同时减少贴图体积。但 BC7 压缩需要的时间比较长建议在最终导出的时候再压缩。降低分辨率不是所有贴图都需要 4K。远处的道具、次要角色可以用 2K 甚至 1K。Substance Painter 支持按 UV 区域导出不同分辨率的贴图这个功能很实用。Mipmap 设置在引擎里正确设置 Mipmap 可以显著提升性能。一般建议开启 Mipmap但法线贴图的 Mipmap 需要特别处理否则远处的法线细节会丢失。5. 常见问题与排查技巧实录5.1 烘焙阶段的高频问题问题一法线贴图出现黑色斑块。这通常是因为高低模的射线距离不够高模的细节没有投影到低模上。解决方法是增大射线距离或者检查高低模的匹配度。问题二AO 贴图出现大块死黑。这通常是因为模型的某些部分被其他几何体遮挡了烘焙的时候没有计算到。解决方法是调整 AO 的射线距离或者在 Substance Painter 里手动修补 AO 贴图。问题三曲率贴图边缘模糊。这通常是因为烘焙分辨率不够。曲率贴图对分辨率很敏感建议用 4K 或更高的分辨率烘焙。5.2 材质制作阶段的典型故障问题一智能材质效果太均匀。这是智能材质的通病。解决方法是在智能材质的遮罩上叠加曲率遮罩或者手绘遮罩把效果集中在需要的位置。问题二图层太多导致软件卡顿。Substance Painter 的图层是实时计算的图层太多会拖慢速度。解决方法是把不需要再调整的图层合并或者用文件夹分组后降低预览分辨率。问题三手绘的磨损看起来不自然。这通常是因为笔刷的硬度和不透明度设置不对。磨损的边缘应该是柔和的笔刷硬度建议在 30% 到 50% 之间不透明度在 20% 到 40% 之间多次叠加。5.3 导出与引擎验证的避坑指南问题一导出的贴图在引擎里颜色偏暗。这通常是因为颜色空间设置不对。Base Color 贴图应该设置为 sRGB其他贴图Normal、Roughness、Metallic、AO应该设置为 Linear。问题二法线贴图在引擎里效果不对。检查法线格式是否匹配DirectX vs OpenGL检查法线贴图的压缩设置是否正确。问题三贴图接缝在引擎里很明显。检查 UV 接缝是否对齐检查法线贴图的 Dilation 是否足够检查引擎的 Mipmap 设置是否合理。问题现象可能原因排查方法解决方案法线贴图黑色斑块射线距离不够检查高低模匹配度增大射线距离AO 贴图死黑几何体遮挡检查模型层叠结构调整 AO 射线距离曲率贴图模糊烘焙分辨率不够检查烘焙设置提高烘焙分辨率智能材质太均匀遮罩分布均匀检查遮罩设置叠加曲率或手绘遮罩引擎内颜色偏暗颜色空间错误检查贴图导入设置Base Color 设为 sRGB法线效果不对格式不匹配检查法线格式匹配引擎的法线格式贴图接缝明显UV 接缝未对齐检查 UV 布局对齐 UV 接缝增大 Dilation最后再分享一个小技巧在 Substance Painter 里做材质的时候经常按CtrlS保存。Substance Painter 的工程文件比较大如果软件崩溃没有保存的话损失会很大。另外建议把工程文件放在 SSD 上加载和保存的速度会快很多。这套武士角色的 PBR 纹理工作流我从头到尾跑了大概三周其中烘焙和基础材质用了五天细节叠加和手工修整用了两周导出和引擎验证用了两天。最终输出的 4K 贴图在 UE5 里跑实时渲染帧率稳定在 60 帧以上画质也达到了 AAA 项目的标准。如果你也在做类似的项目希望这套流程能帮你少走一些弯路。