最早接触ArmorPaint是在一个独立游戏项目的贴图环节。进度紧、预算紧,Substance Painter 的授权费用让我犹豫了很久,又不想继续用老办法在 DCC 软件里一层一层手工涂。ArmorPaint 的出现等于给这条流程开了个口子:它独立运行,GPU 实时预览,图层、蒙版、生成器全部可视化,还能直接对接 Blender、Unity、Unreal 这些常用引擎。这篇文章不打算做功能介绍,而是把我从下载软件到跑通一整套 PBR 绘制流程的经验整理出来,涵盖界面逻辑、节点式生成器怎么配、导出有哪些坑。无论你是刚接触贴图绘制,还是想优化现有工作流,都可以照着走一遍。
1. 为什么说 ArmorPaint 值得放进贴图工作流:传统 UV 绘制与节点式绘制的思维差异
先说一个很多人问过我的问题:Blender 自带 Texture Paint,Maya 也有 3D Paint,为什么还要单独装一个 ArmorPaint?
传统 DCC 的贴图绘制,本质上是"画布 + 画笔"。你在模型表面涂颜色,软件把你涂的结果写到对应的 UV 贴图上。这个流程处理纯颜色还好,一旦涉及 PBR 多通道就会很痛苦:Base Color 画一遍,Roughness 单独画一遍,Metalness 又得切出去画,而且每一步都是手工控制,想做个边缘磨损只能用笔刷一点点蹭。效率低不说,不同通道之间的一致性也很难保证。
ArmorPaint 把这件事换了个思路。它把贴图绘制拆成了类似 Photoshop 的图层栈,又在图层上接入了节点式生成器。你在某个图层上添加一个噪声生成器,再给这个图层加一个曲率蒙版,这个程序化效果可以同时驱动 Base Color、Roughness、Metalness 多个通道。这意味着什么呢?意味着你不需要一笔一笔把磨损画出来,而是通过"曲率贴图边缘高亮 + 粗糙度降低"这种逻辑关系,让算法帮你生成细节,并且随时可以回去改参数。
它另一个核心竞争力是实时渲染预览。ArmorPaint 的视口不是简单的"贴图预览",而是基于 PBR 的实时渲染效果。你可以直接看到金属边缘的反射、粗糙度变化对高光的影响,而不是等导出到引擎里才暴露问题。用习惯了以后,你会发现这比在 Blender 里边画边切换视图模式顺滑得多。
我整理了一个比较直观的对比:
| 维度 | 传统 DCC 内绘制 | ArmorPaint |
|---|---|---|
| 绘制逻辑 | 笔刷直接涂抹 | 笔刷 + 图层 + 蒙版 + 生成器 |
| 多通道一致性 | 需要手动逐通道绘制 | 一个程序化节点可驱动多通道 |
| 预览效果 | 非实时光照预览,依赖软件设置 | GPU 实时 PBR 预览,接近引擎效果 |
| 可逆性 | 画错只能后悔一步或局部擦除 | 图层可随时开关、改混合模式、改生成器参数 |
| 学习成本 | 熟悉 DCC 后即可上手 | 需要理解图层与节点逻辑,但规则简单 |
所以 ArmorPaint 更适合什么场景?独立开发者、硬表面道具、风格化场景,以及不想在 Substance Painter 上花预算的人。它的程序化逻辑对硬表面的表现力特别强,因为金属边缘磨损、锈迹、污渍这类效果天然适合用噪声、曲率、AO 这些输入去驱动。我自己的项目里,从一把手枪到一整面墙,基本都是 ArmorPaint 完成贴图,再导出到引擎里用的。
2. 界面和核心操作拆解:从新建项目到第一个程序化纹理
熟悉一个工具最快的方式,是直接上手做一个最简单的东西。我们先用一个带干净 UV 的模型,把 ArmorPaint 从零到出图的过程跑通。
2.1 新建项目与模型导入
打开 ArmorPaint,第一步是 File → New,然后在文件选择器里选择模型文件。它支持的格式包括 OBJ、FBX、PLY、glTF,基本上覆盖了日常工作流。如果是 Blender 用户,最省事的方式是先在 Blender 里把模型和 UV 整理好,然后 File → Export → OBJ,再用 ArmorPaint 打开。
这里有一个很多人会忽略的细节:新建项目时会让你选择默认贴图大小。我建议直接选 2048 起步,根据模型的复杂度和实际需求再往上调。第一次使用不必追求 4096,因为贴图越大,视口实时刷新和笔刷响应都会更吃 GPU。
导入 OBJ 时,轴方向和单位偶尔会出问题。Blender 导出的 OBJ 通常是 Z 轴向上,而 ArmorPaint 默认也是 Z 轴向上,所以一般不会歪。如果模型方向不对,在导入之后可以使用右侧的变换工具调整旋转,不用重新导出。但如果项目已经开始绘制了,尽量别在中途改缩放和方向,否则之前笔刷绘制的密度和方向可能跟着出问题。
2.2 创建材质与 PBR 纹理通道
导入模型后,界面左侧会显示材质列表。一般软件会自动为你创建一个默认材质,你可以直接在这个材质上添加纹理通道。
在右侧的纹理面板里,你会看到类似"Base Color""Metalness""Roughness""Height""Normal"这些选项。ArmorPaint 一开始并不会自动把全部通道都激活,你需要在需要的时候手动添加。比如我的习惯是:
- Base Color:必须加,这个是颜色底
- Metalness:金属材质必加,非金属材质可保留默认 0
- Roughness:必加,控制高光锐利程度
- Height:如果后续想用视差效果就加,否则可以不加
- Normal:法线通道可选,如果不导入外部法线贴图可不加
- Occlusion:AO 通道,烘焙完再挂上去
每添加一个通道,就相当于在图层栈里多了一类可以绘制的目标。后续你新建图层时,可以通过图层属性指定它影响哪个通道,或者同时影响多个通道。
2.3 工具栏、视图和常用快捷键
左侧竖排的工具面板类似 Blender 的工具栏,常用的有选择、笔刷、填充、橡皮擦、克隆、模糊等。默认的笔刷工作流是:左侧选笔刷,右上角调笔刷的大小、硬度、流量,然后在模型表面直接画。
几个高频快捷键先记一下:
- Ctrl + 鼠标左键:在模型表面取色
- [ 和 ]:快速调小/调大笔刷尺寸
- 鼠标中键:旋转视角
- Shift + 鼠标中键:平移视角
- 鼠标滚轮:缩放
- Tab:隐藏/显示左侧工具,方便观察
视图预览模式也值得说。界面上方有一个着色模式切换,类似 Blender 的 Viewport Shading。你可以切到 Lit 看光照效果,切到 Albedo 看纯颜色,切到 Normal 看法线分布。实际绘制过程中,我一般开着 Lit 模式,这样能看到最接近引擎的最终效果。
如果你在某个纹理缩略图上按下 Alt 加鼠标左键,会自动切入 2D 视图,此时能够看到 UV 展开后的平面纹理。这个视图对于检查 UV 接缝、拉伸、以及精确绘制非常有用。
2.4 图层栈逻辑:图层、文件夹、智能材质
屏幕下方是图层面板,这是整个 ArmorPaint 的核心。它和你用过的 Photoshop 图层面板几乎一模一样:
- 新建普通图层:可以在这个层上笔刷绘制
- 新建文件夹:管理成组的图层
- 图层混合模式:Normal、Multiply、Screen、Overlay 等都有
- 图层透明度:可整体调整强度
除了普通图层,你还可以从资源面板拖入"智能材质"。智能材质的本质是一套预设好的图层组合,比如一个磨砂金属材质由底色层、噪声层、边缘磨损层组成,拖到模型上以后你可以继续展开调整每一层。因为软件内置了不少智能材质,新手可以先拖几个上去,观察每层的参数怎么变化,这是理解图层系统最快的方式。
图层右键菜单里还有三个高频操作:添加生成器、添加滤镜、添加蒙版。生成器负责"程序化生成内容",滤镜负责"调色和对比度",蒙版负责"限制显示范围"。三者结合,就构成了 ArmorPaint 的非破坏性程序化绘制流程。
2.5 第一个小练习:用噪声生成器做金属斑驳
纸上谈兵不如动动手。我建议你新建一个图层,然后右键选择"添加生成器 → 噪声"。此时你会看到模型表面出现了一层噪点。接着再右键这个图层,添加"滤镜 → Levels",调整对比度,让噪点变成更清晰的明暗斑块。
然后新建一个图层,把它设为某一类颜色填充,再把上面那个噪声图层的混合模式改成 Overlay 或者 Soft Light。你会看到原来的纯色表面立刻出现了非常自然的金属质感斑驳。
这个练习看起来简单,但它是整套节点式绘制的基础逻辑:生成器负责生产信号,滤镜负责整形,混合模式负责合并,最终作用到材质通道上。后面所有高级效果,边缘磨损、锈迹、污渍,本质上都是这套逻辑的组合。
3. 完整实战:用 ArmorPaint 为硬表面道具做一套 PBR 贴图
接下来,我用一个中世纪的圆盾道具作为例子,把一套完整的 PBR 贴图流程走一遍。从 UV 准备、基础通道设置、程序化磨损,到最终导出的各个环节都会涉及。
3.1 准备阶段的 UV 处理要点
ArmorPaint 的笔刷绘制效果强烈依赖 UV 布局。如果 UV 有重叠,你在模型上画一笔,会在重叠区域同时出现两个笔迹,而且很难擦除干净。如果 UV 翻转,笔刷方向也会镜像颠倒。所以进入 ArmorPaint 之前,先在 Blender 里把 UV 处理好。
核心要求是:
- UV 岛之间不要重叠
- 尽量减少接缝,接缝尽量藏在模型转角、背面等不明显位置
- 避免面片过度拉伸,否则绘制时笔刷会被拉成长条
可以先用棋盘格纹理检查一下 UV,棋盘格在模型上应当是均匀的正方形,如果出现明显拉伸变形,就要回到 Blender 调整。别看这一步简单,它直接决定了你后面画出来的贴图质量上限。
3.2 环境光照与实时预览
ArmorPaint 的实时预览依赖环境光。界面右侧通常有一个环境贴图设置,默认会带一个 HDR 环境。你可以换成自带的其他 HDR 或者导入自己的环境,观察不同光照下金属反射的效果。
实际工作中,我会先放一个比较中性的环境,让高光和反射不要过度夸张,方便观察表面纹理。等贴图画得差不多,再切换到一个产品级 HDR 来检查最终观感。这样做的好处是,避免在某个强阴影环境里把暗部细节画得过亮,换到引擎里一看又脏了。
3.3 基础材质通道设置
给圆盾创建一个 PBR 材质之后,先添加 Base Color、Metalness、Roughness、Normal 四个通道。
为了让后续的绘制工作有条理,我在 Base Color 上建立一个图层,右键添加"填充"生成器,填一个深灰蓝色作为底色。然后在 Metalness 通道上建一个填充图层,设为 1.0,因为圆盾的金属部分整体是金属。Roughness 通道上建一个填充图层,设成 0.6 左右,做中等粗糙度底。
这样做的意义在于:先把材质的基础物理属性定好,后续的程序化图层都在这几层之上叠加。比如磨损只影响 Roughness 和 Base Color,但 Metalness 基本不变。如果一开始不把通道分开,后面很难用蒙版精确控制。
3.4 烘焙 AO 和曲率,作为程序化蒙版输入
ArmorPaint 的"材质逻辑"玩法真正拉开差距的地方,是对烘焙贴图的使用。在顶部菜单可以找到 Bake 相关选项,它能直接基于模型几何生成 AO 贴图、曲率贴图、法线贴图等。
盾牌的边缘磨损是最典型的需求。我先去 Bake 一个 Curvature 曲率贴图,这个贴图会把模型表面"凸起"和"凹陷"的区域用明暗表示出来。盾牌边缘、铆钉周围会显示为亮部,平面的部分为灰部,这正好是磨损最容易出现的区域。
然后回到图层栈,新建一个图层,在生成器里选择"纹理"或"照片"类型,把刚烘焙的曲率贴图作为输入载入。再添加滤镜 Levels,把亮部区域压得更纯白,灰部拉低。这样这个图层的有效区域就集中在模型边缘了。
在这个图层上填充一层比较亮的金属色,混合模式设为 Screen 或 Linear Dodge,再把这个图层的影响通道设为 Base Color 和 Roughness。逻辑上就是:曲率凸起部分颜色更亮、粗糙度更低,形成高光的金属磨损感。
3.5 锈迹与污渍:噪声、渐变和蒙版的组合
边缘磨损做完之后,盾面上通常还需要一点锈迹和脏污。锈迹的思路是:在 Base Color 上新建一个图层,添加 Noise 生成器,通过 Levels 把噪声调成大块的明暗斑块,然后填充一层褐红色的锈色,混合模式设为 Multiply,这样锈色只会在噪声亮部叠加。
这里要特别说一下"蒙版"的用法。如果你希望锈迹只出现在盾面下半部分,可以给这个图层添加一个蒙版,再在蒙版上添加一个 Gradient 渐变生成器,让渐变从下到上由白色过渡到黑色。白色区域可见,黑色区域隐藏,这样锈迹就被限制在盾面下半部分,而且过渡是自然的。
这套操作的妙处在于:所有图层都保留了原始参数,随时可以回来调整噪波的种子、缩放、渐变角度,而不是画错了直接推翻重来。如果找到一个特别好看的效果组合,还可以把整套图层保存成智能材质,下一个项目继续复用。
3.6 手工修补:笔刷、克隆、橡皮擦的使用
程序化流程能解决 80% 的工作量,但完全靠生成器容易让表面显得"太平均"。我看到过一个很典型的彩笔案例:全自动生成的效果虽然看上去精致,但不同位置的磨损强度完全一样,一眼就能看出是程序化做的。这不符合真实使用逻辑,因为任何道具在使用过程中受力的部位都不一样。
所以我通常会在程序化图层的上方,再新建一个手动绘制层。用 Ctrl + 左键在模型上取周围的磨损颜色,用小号、高硬度的笔刷,在盾牌边缘、铆钉周围、握把附近补几笔。这些人工加入的细节,会让材质突然"活"起来。
需要注意一个操作坍陷:如果当前图层的影响通道只设了 Base Color,笔刷画的颜色只会影响颜色,不会影响 Roughness。想要手感真实,建议在绘制边缘磨损时,把图层的目标通道同时勾选 Base Color 和 Roughness,方法是在图层的属性面板里设置需要的通道。这样画一笔,颜色和粗糙度同时变化,效果更统一。
3.7 导出纹理到 Blender / Unity / Unreal
贴图绘制完成后,导出这一步基本没什么风险,但选项容易让人看花眼。
在菜单栏选择 File → Export,会弹出一个目标应用列表:Blender、Unity、Unreal、Godot、glTF 等。你不需要选一个固定的目标,它其实是在帮你自动生成对应的贴图命名规则和目录结构。选择导出路径之后,再勾选需要导出的通道,ArmorPaint 会为每个通道输出一张 PNG。
输出分辨率默认和项目贴图大小一致,也可以单独指定。目前工业界的习惯是 Base Color、Normal、Roughness、Metalness、AO 分开导出。导出的文件命名规则一般是类似于_albedo、_normal、_roughness、_metallic、_ao的后缀。
拿到 Blender 里时,需要注意色彩空间设置。Base Color 改回 sRGB,Normal、Roughness、Metalness、AO 这些数据贴图都改成 Non-Color。这个问题如果你忽略,导出的法线贴图直接会出现发紫、光照不平的视觉 bug。如果用的是 Unity 或 Unreal,也有对应的线性空间设置,照着引擎规范处理即可。
4. 避坑指南:六个真实项目中会遇到的问题与解决思路
用 ArmorPaint 做实际项目时间一长,总会踩到几个固定的坑。这里挑六个对我影响最大的问题,说说现象和排查思路。
4.1 UV 质量决定你的绘制上限
这是最容易被低估的一关。无论生成器配置得多复杂,你的笔刷和程序化细节最终都要映射到 UV 上。UV 有重叠,画一笔就到处乱跑;UV 拉伸,笔刷形状跟着变形;UV 岛之间留白不够,纹理烘焙时边缘会漏色。
建议在 Blender 里就养成好习惯:用棋盘格检查、主动隐藏接缝、保持足够的 UV 边距。另外在 ArmorPaint 的 2D 视图模式下,你也可以直接看到 UV 展开情况,画图之前先切到 2D 视图扫一眼,能省掉很多返工时间。
4.2 GPU 占用与卡顿问题
ArmorPaint 是实时渲染驱动的工具,CPU 在这里作用有限,主要压力都在 GPU 上。如果你的显卡比较老,或者用的是笔记本集成显卡,建议降低视口分辨率和纹理预览质量。我看过部分人用核显跑 ArmorPaint,缩放视图时整个界面像幻灯片一样,但只要不追求 4096 贴图,还是能勉强工作。
我实际项目中的做法是:绘制时用 2048 贴图加遮挡预览(Occlusion Preview)模式,导出前再切换到完整光照模式检查。把视口画质调到中档,笔刷响应速度会大幅提升。
4.3 程序化图层在导出后"变样"了
有些用户反馈:在 ArmorPaint 视口里看效果很好,但导出的贴图到 Blender 里一接,效果对不上。这多半不是引擎的问题,而是程序化图层没有被正确栅格化。
ArmorPaint 里程序化生成的细节是实时计算的,但如果导出时某些图层仍然带着复杂的生成器和滤镜,结果可能与视口不完全一致。我在导出前会先把需要导出的图层右键"应用/栅格化"为位图,确保最终贴图和视口一致。如果某个图层还想继续调整,就先复制一份再栅格化,原图层保留可编辑状态。
这个操作虽然牺牲了一些非破坏性,但换来的是跨引擎的确定性。
4.4 AO 烘焙时出现黑斑与漏光
烘焙 AO 时最容易出现两类问题:一类是模型自身穿插、共面导致阴影计算错误,出现大面积纯黑斑块;另一类是 UV 岛之间没有足够边距,AO 信息泄漏到相邻岛上。
排查方法很简单:先看模型几何,确保没有多余的面穿插,尽量清理内部隐藏面;再看 UV 岛之间的距离,如果边距过小,回到 Blender 重新排 UV。烘焙参数的采样数也别省,我一般用 64 到 128 的采样数,AO 距离调到一个合理的范围。采样太少的结果是阴影噪点明显,后期还得手动降噪。
4.5 免费版与 Steam 版怎么选
很多人纠结这个问题。ArmorPaint 的核心绘制能力、图层系统、导出功能在免费版里都有,并不存在"必须付费才能用"的尴尬。Steam 版多出来的主要是光线追踪预览、视差遮挡映射这类视觉效果增强功能。
如果你的电脑显卡足够好,喜欢实时查看更真实的光线反射效果,Steam 版体验确实更顶。但如果你刚入门,或者主要用于普通的 PBR 贴图生产,免费版已经足够完成大部分日常任务。我自己的建议是:先用免费版跑通整个流程,确认工具适合你,再决定是否升级也不迟。
4.6 与 Blender 联动失败
ArmorPaint 提供的 Blender 联动插件,能让你在 Blender 里启动 ArmorPaint,两个软件之间同步模型、相机和灯光,甚至材质变化也可以实时回传。但这个联动偶尔会失败,常见原因无非是插件版本与 ArmorPaint 版本不匹配,或者本地通信端口被防火墙挡了。
排查思路是:先关闭所有代理类软件,确认 Blender 和 ArmorPaint 版本对应的插件要求;安装插件后,在 Blender 的插件设置里检查启动路径是否正确。如果启动后没有反应,建议直接看控制台 log。多数情况下问题出在路径和版本匹配上。
如果联动实在调不通,也别死磕。用 OBJ 导出 + 贴图导入导出,一样能完成 90% 的工作。联动更像是效率工具,不是必需品。
5. 把这套工具嵌入你的现有流程:与 Blender 实时联动及多引擎输出
ArmorPaint 的定位很灵活,既可以当独立工具,也可以嵌入现有 DCC 流程。最后这部分,说说它在我自己工作流里的实际用法。
5.1 独立运行 vs Blender 插件模式
独立运行适合"模型已经定稿、只需要贴图"的场景。比如我接外包单的时候,经常收到甲方固定的 OBJ 和 UV,我要做的东西就是干净利落地把贴图流程跑完,然后输出贴图。这时候不需要再把文件倒来倒去,ArmorPaint 独立打开就直接开干。
Blender 插件模式则适合创作期的项目。模型改了尺寸、加了细节、换了个 UV 布局,这些变化如果每次都手动重导很麻烦。插件模式可以在 Blender 中实时同步模型修改,省掉反复导入导出的步骤。
5.2 实时同步的实操细节
Blender 里启动 ArmorPaint 插件后,两个软件会建立本地通信。你在 ArmorPaint 里旋转视角、切换材质、绘制贴图,Blender 视口都能同步看到;反过来,在 Blender 里移动模型,ArmorPaint 中的模型也会跟着更新。这种联动在调整姿态、测试不同角度看纹理表现的时候非常好用。
不过有一点需要提醒:联动不是万能的。复杂场景、几十个材质、大量高模细节同时存在时,两个软件之间的数据同步会有一定延迟。我的经验是,一个场景里同时联动一个主要资产就行,不要把整个大场景都丢进去跑。如果遇到卡顿,先断开联动,等模型定型后再重连。
5.3 和 Substance Painter 的定位区别
经常有人问我,有了 Substance Painter 还需要 ArmorPaint 吗?我的看法是,两者并不完全冲突。Substance Painter 的优势在于庞大的智能材质库、行业生态和团队协作,它的智能材质系统非常成熟,上手之后效率确实惊人。而 ArmorPaint 的优势是轻量、资金负担小、启动快、程序化节点直观,而且可以离线使用。
在我看来,ArmorPaint 特别适合小型项目和独立开发者。如果你的项目对贴图实时迭代要求高,希望快速试错,ArmorPaint 比 Substance Painter 更友好。当项目规模变大、团队协作多了以后,再切换到 Substance Painter 也不迟,毕竟两者都是输出 PBR 贴图,思路是相通的。
5.4 长期使用建议:管理自己的程序化资产
用得越久,你越会发现 ArmorPaint 真正值钱的不是软件本身,而是你沉淀下来的智能材质库和笔刷预设。
我在项目的收尾阶段,会定期把做好的材质整理成智能材质,导出保存到自己的素材目录。包括各类金属磨损、锈迹、污渍、边缘磨损,以及配套的滤镜参数。下次开新项目时,直接从资源面板拖出来适配,效率提升非常直观。
另外,笔刷的 alpha 也是值得积累的资源。ArmorPaint 支持导入 alpha 贴图作为笔刷形状,你可以把平时收集的瑕疵、裂纹、刮痕 alpha 放到固定目录,这样绘制细节时不会每次都从零开始。
如果你也想尝试,我建议别一上来就研究高级节点。先导入一个带干净 UV 的模型,按第二章那个小实验跑一遍,你会很快明白图层和生成器的关系,然后再往项目里推。对我个人来说,ArmorPaint 最大的价值,其实是把"画贴图"这件事从一种纯粹的手工劳动,变成了"搭材质逻辑",同样的思路还能复用到下一个项目。