尧图精选

Substance Painter武士角色PBR纹理全流程:从烘焙到引擎验证

🕒 发布时间:2026/10/1 8:55:55 📁 来源:尧图网络
1. 从一张白模到能进引擎的武士这套纹理流程到底在解决什么很多人第一次接触AAA角色纹理脑子里想的都是“把材质画好看”。但真正进过项目的人都知道好看只是及格线真正决定这套纹理能不能用的是它在引擎里、在不同光照下、在不同LOD层级上是否依然稳定、统一、可控。Substance Painter之所以成为角色纹理环节的主力工具不是因为它笔刷多花哨而是因为它把PBR工作流里最麻烦的那部分——材质物理属性的分层管理——变成了可视化的图层堆叠。我这次做的是一套武士角色的全套纹理包含盔甲、布料、皮革、金属配件和皮肤几个大模块。整个流程从高模烘焙开始到SP里分层绘制再到导出贴图进引擎验证中间踩了不少坑。这篇文章不打算写成软件说明书而是把我实际走通的这条路径完整拆开重点讲清楚每一步为什么这么做、参数怎么定、哪些地方最容易翻车。如果你正在做自己的第一个PBR角色或者已经做过几个但总觉得“差点意思”那这篇内容应该能帮你省下不少返工时间。核心关键词就几个Substance Painter、PBR、纹理、工作流。我会围绕这四个词把从烘焙到导出的完整链路讲透。先说一个基本认知PBR不是一种画法而是一套描述材质与光交互方式的规则。BaseColor管的是漫反射颜色Metallic管的是这个材质是不是金属Roughness管的是表面微观粗糙程度Normal管的是表面起伏方向。这四张图组合起来才能让引擎正确计算光照。任何一张图出问题最终效果都会崩。所以整套流程的核心目标就是让这四张图在物理上自洽。2. 烘焙之前的模型准备决定成败的隐形环节2.1 高低模匹配度比面数更重要烘焙的本质是把高模的细节投射到低模的UV空间上。很多人以为高模面数越高越好其实不是。真正影响烘焙质量的是高低模的轮廓匹配度。如果低模的剪影和高模偏差太大投射光线就会打偏法线图就会出现黑边、错位、甚至空洞。我的做法是低模做完之后先复制一份用细分或者雕刻的方式做成高模。这样能保证两者的基础轮廓完全一致。高模上再添加盔甲边缘的磨损、布料的褶皱、皮革的纹理这些细节。高模面数控制在低模的20到50倍之间就够用了再高对烘焙结果几乎没有提升反而拖慢速度。注意低模的UV接缝尽量放在视觉不敏感的位置比如盔甲内侧、布料背面。接缝处的烘焙误差是不可避免的放在显眼位置会很难修。2.2 UV展开的密度分配逻辑UV密度不是均匀分配就对了。角色身上不同部位在镜头里出现的频率和面积完全不同。脸部和胸甲这些正面区域UV密度要给足背部、腿部内侧这些区域可以适当降低。我一般用Texel Density来量化单位是像素每厘米。主角色的面部区域我会给到10.24 px/cm以上盔甲主体给到5.12 px/cm次要区域2.56 px/cm就够。这样分配的好处是在有限的贴图分辨率下把像素用在刀刃上。一张4K贴图如果均匀铺满整个角色脸部细节根本不够看。但按密度分级之后脸部单独用一张2K盔甲用一张4K整体效果反而更好。2.3 烘焙参数的实际设置在Substance Painter里烘焙我常用的参数组合是这样的Antialiasing开到4x这个对边缘质量影响很大Match选择By Mesh Name前提是高低模的命名要对应上Ray Distance根据高低模的偏差来定一般先给一个保守值比如0.05烘焙一次看结果再调整。如果出现法线图上有明显的接缝或者错位优先检查三个地方高低模的坐标原点是否一致、UV是否有重叠、Ray Distance是否过大导致投射到了不该投射的面。这三个问题能解决九成以上的烘焙异常。3. 材质分层的底层逻辑为什么你的金属看起来像塑料3.1 PBR通道的物理含义与常见误用很多人做金属材质的时候BaseColor给一个灰色Metallic拉到1Roughness给0.3然后发现渲染出来像塑料。问题出在两个地方一是BaseColor对金属来说代表的是反射率不是漫反射颜色所以金属的BaseColor应该偏亮通常在0.7到0.9之间二是Roughness的数值需要和实际表面状态对应0.3对于抛光金属来说太粗糙了应该给到0.1以下。非金属材质的Metallic必须为0这一点没有例外。我见过有人在布料上给了一点Metallic结果在引擎里布料会反射环境光看起来像锡箔纸。这种错误在SP的视口里可能不明显但进引擎一打光就暴露了。3.2 图层堆叠的顺序原则Substance Painter的图层是从下往上叠加的所以顺序很关键。我的习惯是最底层放基础材质往上依次是颜色变化、磨损、污渍、边缘高光。每一层都用不同的混合模式和遮罩来控制影响范围。基础材质层决定这个区域是什么物质比如铁、皮革、布料。颜色变化层用来打破单调比如在铁上面加一些氧化后的色偏。磨损层用Curvature遮罩来驱动让边缘自然露出底层材质。污渍层用Position或者AO遮罩来控制堆积位置。边缘高光层用Metal Edge Wear生成器模拟金属边缘被磨亮的效果。这个顺序的逻辑是先定物质属性再定视觉变化最后定表面状态。如果顺序反了比如先画了污渍再改基础材质污渍的颜色就会不对。3.3 遮罩的精细控制技巧遮罩是SP里最强大的功能但也是最容易用滥的。新手喜欢直接用生成器的默认遮罩结果就是所有边缘磨损长得一模一样。我的做法是生成器只用来打底上面再叠手绘遮罩来打破规律。具体操作是先用Metal Edge Wear生成一个基础磨损遮罩然后新建一个Paint图层用软笔刷在遮罩上手动擦除一些区域让磨损变得不均匀。再叠一个Fill图层用Cloud 2纹理做遮罩给磨损区域增加随机性。这样三层叠加之后磨损就不会有那种“程序生成”的机械感。提示遮罩上的手绘痕迹不需要很精细大块的明暗变化就够。SP的遮罩是灰度图白色完全显示黑色完全隐藏灰色是半透明过渡。4. 盔甲与布料两种典型材质的完整绘制路径4.1 金属盔甲的分层实战武士盔甲的主体是铁质表面有漆层边缘有磨损露出底铁缝隙里有污垢。这个材质的复杂度在于它有多层结构每层的物理属性都不同。我的图层结构是这样的最底层是纯铁材质BaseColor给0.75的灰Metallic为1Roughness为0.15。往上一层是漆层BaseColor用深蓝或者黑色Metallic为0Roughness为0.4。漆层用Mask Editor控制范围边缘用Curvature遮罩做出漆层剥落的效果。再往上是磨损层露出底铁用Metal Edge Wear驱动。最上面是污垢层用Dirt生成器配合AO遮罩堆积在缝隙和凹陷处。这里有个细节漆层剥落的地方底铁的Roughness应该比周围略高因为暴露出来的铁表面通常有轻微氧化。我会在磨损区域叠一个Fill图层只改Roughness通道给到0.3左右。这个微调在视口里可能看不出来但进引擎后金属的反射质感会真实很多。4.2 布料褶皱的纹理表达武士的布料部分主要是内衣和绑带材质是粗棉布。布料的难点在于它没有金属那种强烈的反射变化全靠BaseColor和Normal来表现。如果只给一个纯色看起来就是一块纸板。我的做法是BaseColor用两层叠加底层是基础色上层用Fabric纹理做遮罩叠加一层略深或略浅的颜色变化模拟织物的经纬纹理。Roughness给到0.8左右布料几乎没有镜面反射。Normal通道用SP自带的Fabric Normal贴图强度不要给满0.3到0.5就够太强会显得像塑料压纹。绑带和内衣的接缝处我会用Alpha笔刷画一些线迹配合Normal通道做出轻微的凹凸。这个细节在近距离镜头下很加分但要注意线迹的密度要和布料纹理匹配太密会显得脏。4.3 皮革配件的做旧处理武士的皮带、刀鞘绑带这些皮革件做旧的核心是“使用痕迹的合理性”。新皮革是均匀的旧皮革会在弯折处颜色变浅、在边缘处磨损、在接触皮肤的地方有油脂光泽。我的处理方式是BaseColor用深棕色打底叠一层Noise遮罩用略浅的棕色在弯折区域做颜色变化。Roughness在弯折处给低一些模拟油脂光泽其他区域给0.6左右。边缘磨损用Curvature遮罩露出底层更浅的皮革颜色。最后叠一层Dirt堆积在缝线和铆钉周围。注意皮革的做旧不要用金属磨损那套逻辑。金属磨损是露出底层材质皮革磨损是表面颜色变浅、纤维暴露两者的视觉表现完全不同。5. 导出设置与引擎验证最后一步最容易翻车5.1 导出配置的通道对应关系Substance Painter的导出预设需要和引擎的材质输入对应。Unity的Standard Shader和Unreal的材质节点对通道的命名和打包方式不一样。我一般用SP自带的Unreal或Unity预设但会检查几个关键点。BaseColor导出时如果引擎需要Alpha通道要确认Alpha来源是否正确。Metallic和Roughness在Unreal里是打包在一张贴图的R和G通道在Unity里是分开的。Normal图要确认是DirectX还是OpenGL格式这两个格式的绿通道是反的用错了法线方向会颠倒。我习惯在导出前先建一个导出配置把所有通道的命名和打包方式确认一遍然后保存成预设。这样下次做类似项目可以直接复用不用每次重新设置。5.2 引擎里的验证流程贴图导入引擎之后不要直接看最终效果要逐个通道验证。先只看BaseColor确认颜色和SP里一致。再只看Normal确认法线方向正确。然后单独看Metallic和Roughness确认数值范围合理。我常用的验证方法是在引擎里放一个中性HDRI环境光不加任何方向光先看材质的反射表现。金属应该有清晰的环境反射非金属应该有柔和的漫反射。如果金属看起来像塑料检查Metallic通道是否被正确读取。如果布料看起来像金属检查Metallic是否误给了非零值。5.3 常见导出问题与修复最常见的问题是颜色偏差。SP的视口用的是sRGB色彩空间引擎里如果色彩空间设置不对贴图会偏亮或偏暗。解决方法是确认导出时BaseColor是sRGB格式其他通道是Linear格式。第二个常见问题是法线接缝。如果UV接缝处的法线在引擎里出现明显的硬边检查烘焙时的Ray Distance和Antialiasing设置。有时候需要在SP里用Normal通道的模糊工具手动柔化接缝区域。第三个问题是贴图尺寸和内存。4K贴图在PC上没问题但如果项目要上移动端需要降到2K甚至1K。降分辨率之前先在SP里用Texel Density视图确认哪些区域的密度可以压缩避免降完之后脸部糊成一片。6. 我在这个项目里踩过的坑和总结出的经验第一个坑是烘焙时的命名匹配。我一开始高低模的命名不一致导致SP无法自动匹配烘焙出来的法线图全是错的。后来统一了命名规则用“MeshName_Low”和“MeshName_High”的格式问题就解决了。这个细节看起来很小但排查起来很费时间。第二个坑是金属材质的Roughness给值太随意。我一开始凭感觉给0.3、0.5结果进引擎后发现金属的反射要么太模糊要么太锐利。后来我查了实际金属的粗糙度参考值抛光钢是0.05到0.1拉丝钢是0.2到0.3铸铁是0.5到0.7。按这个参考来给值效果稳定很多。第三个坑是遮罩的过度使用。我一开始每个图层都用生成器遮罩结果整个角色的磨损看起来像同一个模子刻出来的。后来改成生成器打底加手绘遮罩磨损的随机性和自然度提升很明显。手绘遮罩不需要很精细大块的明暗变化就能打破程序感。第四个坑是导出后的引擎验证。我有一次直接看最终效果觉得没问题结果进引擎后发现法线方向反了。后来养成了逐个通道验证的习惯虽然多花几分钟但能避免大返工。这套流程走下来我最大的体会是PBR纹理的核心不是画得多好看而是每个通道的物理属性是否自洽。BaseColor、Metallic、Roughness、Normal这四张图之间的关系比单张图的质量更重要。SP的图层系统本质上是在帮你管理这些关系理解了这个逻辑工具用起来就顺手了。最后分享一个小技巧在SP里建一个自己的导出预设把常用的通道配置和命名规则存进去。下次开新项目直接调用能省下不少设置时间。另外养成在SP里用不同HDRI环境光检查材质的习惯不要只在一个光照环境下看效果。金属和布料在不同环境光下的表现差异很大多检查几个环境能提前发现很多问题。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →