做材质贴图这么多年,我见过太多新人把时间花在找笔刷、调参数上,结果做出来的东西还是一股“塑料味”。问题往往不在手,而在眼睛。之前听《最后生还者》美术方向的公开分享,里面反复强调一个观点:真正决定材质质量的,是参考图分解能力和对老化逻辑的理解,不是软件操作熟练度。这套思路我后来在自己的项目里反复验证过,确实管用,而且能让你从“照着画”变成“知道为什么这么画”。这篇文章就把我吃透这套思路后的完整流程整理出来,从读参考图开始,一直到引擎里验证,全程可复现。
1. 参考图分解:从“看个大概”到“读出数据”
很多美术拿到参考图的第一反应是“这图真好看”,然后就开始凭感觉画。这样做的结果是,颜色大方向对,但材质却经不起光照变化,换个环境就假了。参考图不是用来“欣赏”的,它是一组数据,需要你把它拆开来读。
1.1 先分清两种参考图:视觉参考与物理参考
我在给学生和新人改图时,第一条建议永远是先给参考图分类:视觉参考和物理参考。视觉参考负责定调子,它告诉你看这张图时的情绪、氛围、整体色感,比如整座城市被植物吞没的那种荒芜感。物理参考则负责定数据,它记录的是具体材质在具体光照下的真实反应,例如一块锈穿了的铁板,边缘亮部怎么反光,锈蚀区域的颜色偏红还是偏灰。
这两类参考图的使用方式完全不同。视觉参考适合挂在PureRef里作为全局氛围的锚点,物理参考则需要你放大到100%,一像素一像素地读。混用是最常见的翻车原因——用氛围图去推理颜色,用物理图去决定情绪,两边都得不到有效信息。
1.2 四个必读维度:颜色、高光、粗糙度、形变
物理参考图能读出四个核心维度。第一个是颜色,注意我说的不是“找个吸管吸一下颜色”那么简单,而是找出颜色的分布关系——基底色在哪里,色偏出现在哪一区域,污渍叠上去之后饱和度往哪个方向偏移。第二个是高光,高光形状是锐利还是模糊,边缘有没有拖尾,直接告诉你表面是光滑还是有微起伏。金属的高光还带有固有色,而非金属的高光是白色,这是一种快速的物质属性判断。
第三个是粗糙度分布,这是最容易被忽略但影响最大的维度。参考图里磨得发亮的地方粗糙度低,氧化发乌的地方粗糙度高,同一个表面上往往是两种状态并存且过渡自然。第四个是形变,也就是表面起伏——裂纹延伸的方向、漆膜卷曲的边缘、锈蚀侵蚀出的凹陷。这些信息要变成法线贴图和高度贴图里的细节。读图顺序建议固定:先颜色,再高光,再粗糙度,最后形变,长期按这个顺序做,观察力会提升得非常快。
1.3 把观察结果变成“图层清单”
参考图读完之后,输出物不应该只是脑子里的感觉,而是一张可以执行的清单。我习惯叫它“材质词汇表”,就是用表格写清楚:在参考图里看到什么现象,对应在SP里用什么方法做,最终影响哪个通道。
举几个例子来说更直观:
| 参考图里的现象 | 制作手法 | 主要影响通道 |
|---|---|---|
| 板材中心的锈斑呈絮状蔓延 | Rust生成器叠加Perlin噪声 | 颜色、粗糙度 |
| 角部漆层磨掉露出金属底 | Edge Wear生成器配合曲率 | 颜色、粗糙度、金属度 |
| 漆膜沿划痕起皮卷边 | Cracks生成器配合手绘遮罩 | 法线、颜色 |
| 雨水沿接缝流挂形成深色痕迹 | 手绘遮罩加Flow Map | 颜色、粗糙度 |
| 水平表面积灰、垂直面干净 | Dirt生成器配合世界空间法线 | 颜色、粗糙度 |
做完这张表,你对用什么工具、按什么顺序做就已经心里有数了。
提示:材质词汇表还有个额外作用,就是用来和团队协作。你把这张表发给TA或下一个环节的同事,大家不用猜你做了些什么,资产交接效率会高很多。
2. 有机表面老化的底层逻辑:老化不是做旧
标题里“有机表面老化”这个词,很多新人会误解成“把表面做得脏一点”。我见过最多的作品,就是拿一套基础材质加上污渍、锈斑、磨损,就号称做旧了。但真正能骗过眼睛的老化,遵循的是完整的时间和物理逻辑。
2.1 工业老化和有机老化是两套逻辑
游戏中常见的老化大致分两类。一类是工业老化,它的驱动力是几何接触和机械应力,磨损集中在边缘、把手、台阶这些会被反复摩擦的位置,模式化、规律性强,做起来相对简单,新手练手也非常快。
另一类就是标题里强调的有机老化,驱动力是生物活动和自然环境:霉菌、苔藓、水流侵蚀、植物根系撑裂混凝土。参考《最后生还者》里面满城的绿植和苔痕,就能直观理解这个方向。为什么很多美术做不好有机老化?因为试图用工业老化的思路去做有机老化,结果做出来的苔藓像颜料泼上去,水流痕迹像画笔拉的直线。两类老化的决定因素不同,一个由几何接触决定,一个由流体路径和生物习性决定,表现出来就是规律性vs“有逻辑的随机”。
2.2 老化的时间层次:基底、破坏、修复、二次破坏
真实世界的老化很少是一轮游戏。一块铁皮场景道具,先是出厂时的完整漆面作为基底;然后风吹日晒,漆膜开裂,这是第一轮破坏;雨水从裂纹渗入,接触金属基体后开始锈蚀,这是材料的化学反应;锈蚀膨胀又把周围的漆皮顶起来,部分脱落,露出更底层的金属,这就是二次破坏;与此同时,灰尘不断在凹陷处累积,鸟类和微生物在角落留下痕迹,这是某种意义上的“修复”。
在贴图流程里,时间层次必须转化为图层顺序。每一层就是一个时间事件,所有图层合在一起就是折叠的时间线。Base Layer是出生状态,往上一层是第一批破坏,再往上是污渍,再往上是局部修复,最上面是最后的新印记。一旦这个顺序乱了,比如新锈画在旧灰上面还没什么关系,但划痕叠在锈蚀之后露出崭新金属,物理时间就错了,视觉上自然就会觉得哪里不对劲。
2.3 老化方向也有物理规律
老化不是均匀撒在表面上的,它遵循重力、水流、风、光照这些物理因子。灰尘受重力和空气扰动控制,决定了水平面与凹陷处积灰多、垂直面与迎风面干净;水流受重力和表面张力控制,会在缝隙深处渗透、在边缘处滴落、在流速慢的地方留下水渍;苔藓需要水分和基质,所以偏爱常年潮湿的阴面和排水不畅的角落。
明白这些规律之后,你在做遮罩时就不是“随便刷个脏渍”,而是会思考:这个面朝上还是朝侧面?雨水从哪个方向来?哪个角落长期不通风?这些都可以用SP里的World Space Normal、Position、AO这类生成器来量化控制。
3. 全流程实操:一块废土金属板的5层老化是怎么做出来的
理论铺垫够了,直接进入完整的实操。这个案例我用一个废弃工厂里的金属板来做示范:它经历过漆面完整、自然老化、雨水锈蚀、苔藓滋生这几个阶段,是非常典型的有机老化样本。
3.1 前期准备:UV分配、贴图分辨率与烘焙清单
进入SP之前,先解决资产本身的问题。UV要尽量摊平、密度均匀,因为后期所有遮罩都和UV空间息息相关,如果密度不均,在SP里生成的纹理大小看起来就会不一致,这种错误后期极难补救。贴图分辨率根据资产在镜头里的占比来确定,一般经验值是:小道具512到1024、中型资产2048、大型建筑或地形4096,我习惯用2048来做案例中等大小的板材。
模型准备阶段建议烘焙的贴图清单如下:
| 烘焙贴图 | 用途 |
|---|---|
| Normal | 法线细节,最大程度还原高模起伏 |
| AO | 接触阴影和控制污渍分布 |
| Curvature | 控制磨损、边缘高光 |
| Thickness | 控制锈蚀穿透和次表面效果 |
| Position | 控制高低区域的质感分布 |
| ID | 区分不同材质区域,便于分层 |
这一套烘焙完之后,在SP里新建项目时直接导入Mesh Maps,后面所有生成器都能直接调用,效率高很多。
3.2 图层结构:先生成器“撒网”,再手绘“收网”
进入SP之后,我强烈建议养成一个固定习惯:先利用生成器和遮罩把60分的底子快速铺出来,剩下40分的个性和细节留给手绘。反过来做会非常累,而且容易失控。这套案例我采用了五层结构。
第一层是基底材质层,新建一个Base Layer,设置成金属材质,金属度拉到1,基础颜色用灰绿色,加一点冷暖变化。这一层不能糊弄,它决定了你所有老化图层叠加之后的最终走向,如果基底本身就是凭感觉乱选的颜色,后面怎么做都是错的。第二层是灰尘底层,使用Dirt生成器,遮罩混合模式设置为Global,在遮罩属性里添加World Space Normal,让朝上的面允许出现灰尘,朝下的面直接抹掉这部分效果。数值上强度给到30左右,让灰尘处于若隐若现的状态。第三层是边缘磨损,调用Edge Wear生成器,通过调整Radiux参数控制磨损范围扩大一些,让磨损不是贴在边缘上的“一条线”,而是往内侧自然过渡的区域。给磨损层加Noise节点,用Fractal模式增加边缘破裂感,避免磨损边缘过于整齐像矢量图。
调完这一层后,效果已经比很多新手直接画出来的要自然了。但它还没有性格,真正的重点是后面两层。
3.3 锈蚀和苔藓:有机老化的灵魂
第四层处理锈蚀,这也是这个案例里最花心思的一层。使用Rust生成器作为基础,在遮罩里继续累加两层噪声:第一层Perlin噪声做大块锈斑的蔓延分布,第二层再加一个高频小尺度噪波,让锈斑边缘产生毛绒和颗粒感。更重要的一步是,在遮罩属性里加入Position作为输入,让低洼处更容易堆积锈迹,模拟积水停留的状态。颜色上不要把锈做成一整片深棕色,参考真实锈迹的话会发现锈是有分层和色彩过渡的,中心偏深红棕,边缘偏黄褐。我用一个Gradient Map来映射出这种色彩过渡,效果非常自然。粗糙度顺势上调到0.7以上,同时把金属度降到接近0.6,因为锈蚀区域的金属属性已经被氧化破坏。
第五层是苔藓和植物入侵,这是《最后生还者》风格里最出效果的一层。用Alpha属性偏植物的Hand Paint风格笔刷,先画大面积苔藓分布,集中在板材底部、缝隙、常年潮湿的防护区。苔藓的颜色不能是均匀的草绿,应该分两到三个层次:底层大面积暗绿褐色,中间标准苔藓绿,高光处偏黄绿。材质属性上苔藓区域粗糙度直接拉满到1.0,因为苔藓是极粗糙、几乎无镜面反射的表面。法线通道上额外添加一层细碎噪点,让苔藓看起来有毛茸茸的微起伏,这一点细节对真实感的提升非常明显。
3.4 多通道联动:颜色、粗糙度、法线、高度的最终匹配
表面上看,贴图工作流是各通道各画各的,但真正的高手在做老化时会做通道联动。生锈区域的颜色饱和度变化、粗糙度升高、法线增加颗粒感,三者在空间上严格对应。磨损刮痕处的颜色变亮,粗糙度降低(抛光感),法线有明显的方向一致性,金属度也恢复到裸露金属的属性。苔藓区域颜色变化复杂但粗糙度永远是高位,法线有小尺度毛绒质感。
整理成通道匹配表:
| 老化类型 | 颜色通道 | 粗糙度通道 | 法线/高度通道 |
|---|---|---|---|
| 磨亮磨损 | 变亮、饱和度降低 | 明显下降 | 轻微凹陷、方向性 |
| 锈蚀 | 偏红棕、饱和度下降 | 明显上升 | 粗糙颗粒、凹凸 |
| 积灰 | 偏灰、亮度下降 | 上升 | 微小无方向噪点 |
| 苔藓 | 多层级绿褐色 | 拉到最大 | 毛绒微起伏 |
| 水流痕迹 | 深色色带、饱和度低 | 上升 | 几乎无高度变化 |
每一次在颜色通道里做一笔,我都会检查粗糙度通道是否跟着匹配。这一点在最终出图时的效果差异巨大,否则会出现颜色上是锈蚀,高光却是全新金属的荒谬情况。
3.5 导出与引擎验证
SP里做完后,如果急着直接出图,那就浪费了这套流程一半的价值。SP内置的Iray渲染器和一些HDR环境可以大致预览效果,但引擎里才是最终战场。导出时用SP默认的PBR Metal/Roughness预设即可,但要注意两个细节:颜色贴图(Base Color/Albedo)使用sRGB色彩空间,其余粗糙度、金属度、法线、AO全部使用Linear色彩空间;法线贴图导出时要注意轴方向设置。
进入引擎后,我会在三个不同光照环境下检查材质——正午强光、黄昏暖光、阴天冷光,看它在这三种环境下是否都能保持材质识别度。常见的问题是多通道不匹配的材质在某个特定光照环境下会“穿帮”。如果正午阳光下金属板反光看起来像塑料,多半是粗糙度通道的对比度太弱导致的。
4. 常见问题与排查技巧实录
做老化材质过程中踩过的坑,我挑几个频率最高的整理成实录。每一类后面都附上排查思路和解决办法,方便遇到问题时直接对照处理。
4.1 Substance Painter 材质丢失与资源路径失效
在项目分享里反复出现的一个坑是SP的材质库路径失效。特别是你换了电脑、迁移过资源库目录、或者更新软件版本之后,打开以前的文件经常会发现一堆材质变成黄色的感叹号,材质球变成灰色不起作用。原因很简单:SP在很多情况下记录的是资源文件的绝对路径,路径一旦变动它就找不到原来的.spexp资源了。
解决办法有两种路径。一种是Edit > Preferences > Substance Painter > Library设置,把资源库路径重新指向到你迁移后的文件夹;另一种更稳妥的方法,是使用File > Import Resources把项目中用到的智能材质、Alpha、笔刷全部直接导入当前项目,让资源不再依赖外部路径。我个人的习惯是,凡是跨机器协作的项目,就把所有外部资源在第一次入库时就导入项目,杜绝后续依赖外部路径的机会。
4.2 3D Max 贴图丢失怎么重新导入
建模和贴图之间来回修改时,3D Max丢失贴图是高频问题。文件移动后打开模型,材质球和视口里全部变灰,非常影响效率和心态。解决办法:打开文件时如果弹出“缺少外部文件”提示,直接按Shift+T打开Bitmap/Photometric Paths编辑器;在这里可以批量选中所有丢失的贴图,点击右下方的“Set Path”重新指定为新的贴图目录,方法非常快。如果是模型文件里已经丢失贴图且没有弹出窗口,也可以从Rendering菜单下打开同样的路径管理工具。
一个长期经验是:和SP类似,在Max里如果贴图和场景文件放在同一个根目录下,并确认勾选了File > References中的“相对路径”,以后整个文件夹一起移动就不会丢贴图。这个建议配合规范的文件夹结构,能省掉日后大量的修补时间。
4.3 引擎里颜色不对、反光发闷
出现“SP里好看,引擎里颜色不对”时,我建议用排除法逐一排查三个主要嫌疑。第一个是色彩空间设置错误,常见于Base Color贴图忘了设为sRGB,或粗糙度、金属度误设为sRGB,这两种错误会造成亮度急剧下降或者反光范围完全失真,排查方式就是逐个检查贴图导入设置里的色彩空间选项。第二个是压缩格式破坏通道,像法线贴图如果被强制压缩成BC1格式,细节会大量丢失且出现锯齿;正确方案是法线使用BC5或ASTC高精度格式,颜色贴图根据平台选择BC1或ASTC。第三个是法线轴翻转,在引擎里呈现出凹凸效果刚好反了,灯光移动时非常明显,这个检查一下导入设置的Green通道或法线方向选项即可解决。
4.4 Unity双面显示与视差材质等特殊需求
做植被或布料等薄片类资产的老化材质时,经常遇到双面显示的需求。默认Unity Shader是单面渲染,转过来就看不到另一面的材质和老化痕迹了,通过改用带Cull Off的Shader可以解决,例如Legacy Shaders里通常自带双面版本,或者自己写Shader时把Cull Off加上。要注意的是双面渲染会增加像素填充率开销,叶片、布料可以接受,大面积墙体尽量别用。另外用了转双面的材质时,很多老旧Shader不支持正面和反面使用不同的贴图偏移,通常需要正反两面共用一套老化贴图,设计时要留意老化效果不会出现方向性穿帮。
视差材质我一般用在老旧墙体的砖缝效果上,它利用高度图在采样颜色时做视差偏移,视觉效果比单纯法线更立体。但做了老化的墙体上使用POM时要注意:UV接缝处容易出现偏移拉伸穿帮,硬边转角处明显失真。这个问题的解法是尽量把视差强度降低,并在接缝处做遮罩过渡。视差材质必须有高度图支持,如果只导出了颜色和法线,视差效果是无效的。
4.5 材质基础没问题的前提下,塑料感从哪来
这个问题出现的频率非常高,排查优先级我建议从粗糙度开始。塑料感的本质是过渡均匀的高光和偏平的反射,这通常意味着粗糙度通道对比度不足,细分的地方是光滑区和粗糙区没有明显的层次对比。可以把粗糙度层的对比度通过Curve节点拉高,让亮区更亮、暗区更暗。第二步进行颜色饱和度调整,真实老化材质的饱和度往往是偏低的,纯净高饱和的颜色在场景中格格不入。第三步检查法线强度,法线强度过弱会让表面失去微小的体积起伏,在PBR管线里显得“平”;适度提高法线强度,尤其在锈蚀和苔藓区域,效果会立刻不一样。
4.6 水渍流动与Flow贴图的使用场景
水流痕迹是老化材质里很出效果的元素。如果项目管线支持Flow Map,可以在SP里使用带有方向信息的Flow Map工具配合纹理偏移来做动态的水渍;如果不支持,手绘遮罩配合粗糙度变化一样能模拟出相似的结果。我通常优先检查项目管线里是否有现成的Flow Shader,如果没有,就不要为这一个细节去额外写Shader,手绘遮罩的性价比会更高。说到底Flow Map只是手段,你要实现的是“水顺着表面流下来的方向性痕迹”,这个结果手绘也能做到,只是效率略低。
最后说句心里话。材质贴图做到最后,拼的不是软件技巧,是观察力。两者的区别在于:技巧让你完成一张贴图,观察力让你理解这张贴图为什么能骗过眼睛。把这套参考图分解和老化逻辑的流程走几遍,慢慢养成先思考后动手的习惯,你会发现自己做出来的材质不再是“画出来的”,而是“长出来的”——这两个境界之间的距离,就是你和顶级的差距。