ArmorPaint:开源PBR贴图绘制实战,替代Substance Painter的轻量工作流

发布时间:2026/9/14 19:30:37
ArmorPaint:开源PBR贴图绘制实战,替代Substance Painter的轻量工作流 做 3D 美术或者独立游戏的朋友应该都有类似的体会模型雕刻完、UV 展开好最头疼的就是贴图绘制这一环。用 Substance Painter 确实舒服但订阅价格摆在那里个人项目或者刚入门的同学很难说服自己掏这个钱。我后来换到 armorpaint一用就是两年多现在手头正经项目的 PBR 贴图基本都是它出的。这款开源软件最打动我的地方不是免费两个字这么简单而是它把实时绘制、节点材质、图层遮罩这些核心功能完整地揉进了一个只有几十 MB 的工具里启动快、操作顺手、不联网也能用配合 Blender 的工作流特别舒服。这篇就从头到尾聊聊 armorpaint 怎么上手、核心玩法怎么理解、我踩过的那些坑以及目前这套工作流能帮你省下多少事。1. ArmorPaint 的设计思路为什么我放弃 Substance Painter 转过来了1.1 它走的不是简化版路线而是另一套 GPU 实时方案很多人第一次打开 armorpaint会觉得界面简陋跟 Substance Painter 那套密密麻麻的窗口比起来像个小玩具。但用过一阵就会发现这个软件的核心思路是实时优先——所有绘制结果都基于 GPU 计算你画每一笔视口里立刻就能看到带光照的反馈不是等烘焙、等预览而是所见即所得。它底层用的是自家 Armory 引擎的渲染管线支持 Vulkan、OpenGL、Direct3D 等多种后端。我实测下来在同样一张 4K 纹理上画笔刷armorpaint 的响应速度明显比我在 Substance Painter 里的旧项目要轻快。原因在于它把笔刷的 Alpha、颜色的混合、法线扰动等操作都放在 GPU 的材质节点图里实时计算而不是每画一笔就重新生成一整张图再传回显存。这种架构上的差异决定了它给人的手感非常跟手尤其用手绘板的时候压感反馈很直接。另外armorpaint 的项目文件非常轻。.arm 格式保存的是节点树、图层操作记录和资源引用不是把所有 8K 图层都原样打包。我做过一个完整场景角色的贴图工程文件通常几十 MB 到一两百 MB对比 Substance Painter 那些动辄几个 GB 的工程省心太多了。1.2 核心优势节点材质图层系统智能材质一个都不少先别被开源免费四个字误导这软件的核心功能完整度相当高。我归纳成三块第一是节点材质系统。它内置了一套类似 Blender 的 Shader Node 编辑器可以从零搭建材质支持纹理贴图、程序化噪波、颜色渐变、混合运算、UV 扰动等等。这意味着你不光能画贴图还能用节点程序化地生成大量细节比如金属边缘磨损、锈迹分布、划痕随机角度都能用数学运算算出来省掉无数手动笔刷时间。第二是图层系统。armorpaint 的图层分几种类型绘制图层、填充图层、遮罩图层、材质图层。用过 PS 的人对这套逻辑会非常亲切下面是基础底色上面叠加锈迹再叠一层遮罩决定锈迹出现在哪些区域整个流程非破坏性随时可以回头调整每一层的透明度、混合模式、颜色。第三是智能材质。这个类似 Substance Painter 里的 Smart Material一套材质预设可以带多个图层和遮罩逻辑一键铺到模型上立刻得到一套很丰富的 PBR 效果。社区里有人分享各种智能材质预设也可以自己存。对我来说这几乎是日常出图最快的路径导入模型 → 套智能材质 → 手动画细节 → 导出贴图一个下午能出一套相当能看的材质。2. 从下载到画出第一笔ArmorPaint 的安装与基础实操2.1 下载安装、界面语言与基本环境配置armorpaint 有多个获取渠道。官方网站是 armorpaint.orgGitHub Releases 页面有各平台打包好的二进制Windows 版直接解压就能用不需要安装。Steam 上也有免费版可以下载好处是能自动更新省得自己关注 release。我推荐 Windows 用户优先从 GitHub 的 release 页面下载因为版更及时而且不会有商店层的额外损耗。解压后直接运行 ArmorPaint.exe第一次启动会要求选择图形 API。我试过 Vulkan 和 OpenGL 两个后端N 卡和 A 卡下 Vulkan 的表现都更好打开软件快、视口刷新稳如果你用的是较老的内核显卡或者虚拟机再切到 OpenGL 兼容模式。Linux 下需要确保系统安装了 Vulkan SDK 相关驱动否则可能起不来这个问题后面我在常见问题里还会细说。armorpaint 支持中文界面在 File User Preferences 里切换 Language 为简体中文重启就生效。这个对英文不太溜的朋友是友好但我要说一句很多菜单里保留的英文术语其实更接近行业通用叫法比如 Fill Layer、Mask、Material Layer中文界面后反而容易找不到我建议第一次用可以保持英文或者中英对照着看。提示软件启动时如果弹窗显示 Missing Vulkan library 或者 OpenGL context failed优先检查显卡驱动。把驱动更新到最新版大多数问题都能解决不用急着怀疑软件本身。2.2 导入模型与项目创建了解你的第一个工程启动后默认会加载一个立方体场景。实际使用时我们一般从 File Import Mesh 或者直接把 glTF/OBJ/FBX 文件拖进视口来导入模型。我习惯用 glTF 格式因为 armopaint 对 glTF 的材质槽、UV 集、顶点色支持都比较完整如果模型是从 Blender 导出的记得在导出面板勾选应用修改器和UV 展开免得进入 armorpaint 后修改器还没塌陷导致布线不是最终形态。模型导入后视口里的操作很简单中间鼠标滚轮是缩放按住鼠标中键拖拽是旋转视角Shift中键拖拽是平移。手绘板用户在设置里开启 Pen Pressure压感曲线也可以在 User Preferences 里调。项目创建这一步其实不像 Substance Painter 那样弹出一堆模板armorpaint 的项目就是一块画布——你只要设置输出贴图的尺寸、格式和图片序列通道然后往下走就行。在导入模型的弹窗里有一个很关键的 Resolution 选项默认 2048。这个值决定绘制时每张贴图的像素大小。我的建议是模型精细度一般的话先用 2048 或者 4096不要一开始就上 8K——因为 armopaint 的实时笔刷虽然快但 8K 图层一多显存压力还是很大而且后面导出也会慢。做场景道具 2048 完全够主角或者展示级模型再开 4096。2.3 第一次画一笔创建图层、选笔刷、画上去画之前我们先建一个基础的材质节点。右侧面板默认会有一个 Principled 之类的材质节点树如果你导入的模型自带了材质节点树会自动生成。我们要做的是在节点树里连接一个 2D 纹理贴图让笔刷可以画到它上面。实际操作步骤是这样的在右侧 Node Editor 里确认材质树中有一个 Image Texture 节点如果没有按 ShiftA或在节点编辑器的 Add 菜单里新建 Image Texture然后点击节点的新建按钮设置尺寸就是分辨率。把 Image Texture 的颜色输出连接到 Base Color 输入上顺便把它的 Roughness、Metalness 输出连到对应通道让节点树的基本 PBR 链路通起来。在左侧工具栏选择 Paint 笔刷快捷键 P点击视口上方新建一个绘制图层。在视口里按住左键拖拽就能看到颜色画上去了。颜色可以在左下角的色轮面板选择Alt 键可以快速吸取场景中已有颜色。就这么简单。但这里有个新手最容易搞混的地方绘制图层和直接画在 Image Texture 上有什么区别答案是图层的存在让你可以随时回头调整。直接画在纹理上就像在 PS 里把背景图层涂花改不回来而绘制图层可以调透明度、换混合模式、删除甚至用遮罩控制局部显示。所以我永远建议哪怕只想快速试个色也先建一个 Paint Layer 再动手。3. 核心工作流拆解图层、遮罩、智能材质与贴图导出3.1 图层的类型与混合逻辑别把它想成普通笔刷图层armorpaint 的图层系统比 PS 更贴近材质表现。我把常用的类型做了一个表图层类型作用典型使用场景Paint Layer手动绘制颜色/粗糙度/金属度可以配合笔刷手动画划痕、污渍、局部颜色变化Fill Layer对整个模型表面填充一个颜色或纹理铺底色、大面积底色替换Material Layer覆盖一套独立材质节点可以带自己的纹理给模型不同区域分配不同材质Mask Layer作为遮罩控制上层显示的白色区域限制锈迹只出现在凹陷处、划痕只出现在边缘混合模式上有 Normal、Multiply、Add、Screen 这些基础项跟 PS 理一致。比如在底色上叠一层 Multiply 的脏污纹理就会出现很自然的着色效果在金属层上用 Add 画高光磨损亮部更亮又不会弄脏底色。我经常用 Multiply 配合程序化噪波给木头添加木纹细节完全不手动画纹理全靠节点生成。这里要特别说下 Fill Layer 的用法。在 Substance Painter 里叫填充层armorpaint 里也一样你建一个 Fill Layer给它设置颜色或纹理整个模型就全部填上了。这说明画布是模型的 UV 空间而不是屏幕空间。填完后如果你想让它只出现在局部就给它套一个遮罩——遮罩层是白色的你画上黑色那部分就隐藏这与图层蒙版的逻辑完全一致。3.2 遮罩实战用曲率和环境光遮蔽让细节自动出现遮罩最强大的玩法是和纹理生成器结合。armorpaint 支持在遮罩里直接用节点程序化生成噪声、曲率、AO 等数据用来控制图层显示范围。比如我想让金属边缘有磨损——在 Substance Painter 里需要生成曲率贴图然后做 maskarmorpaint 里可以直接在 Mask Layer 的节点树里加一个 Curvature 结点连到 opacity 或者作为遮罩的输入粗糙金属边缘自动就凸显出来了完全不用手动沿着边缘一笔一笔描。我举一个我实际做过的例子。我做一个旧化铁桶底层是深灰底色Fill Layer 填一个暗金属材质上面加一层锈迹 Fill Layer颜色选橘褐色混合模式 Normal。然后给锈迹图层套一个 Mask Layer在这个遮罩的节点树里添加 Noise 和 Curvature让锈迹集中在边缘和局部凹坑最后手动在 Mask 上用黑色画笔擦掉不需要的部分。整个流程加起来不到五分钟效果比我以前在 Substance Painter 手动画精细多了。提示遮罩上的黑色画笔就是橡皮擦逻辑但它是非破坏性的。所以画坏了不要慌直接用白色画笔重新刷回来就行。我建议平时养成一个好习惯每次手动修改遮罩都单独加一个 Paint Layer 来画不要直接在原有的 Mask 节点上改这样后续调节程序化噪声参数时手动画的部分不会受影响。3.3 智能材质一套预设快速铺满整个模型智能材质在 armorpaint 里的正式名称是 Material Library 里的预设通过界面左下角的库里可以浏览。它本质上是一组图层、节点、纹理的打包组合。你可以从系统预设的内存里拖出比如 锈蚀金属 破损混凝土 皮革 等直接拖到模型上应用。我自己的使用习惯是先用智能材质把大效果铺出来然后在这个基础上调整颜色、增加手绘细节、改遮罩分布。这样一个流程下来哪怕建模本身一般材质也能撑起整个视觉效果这在做概念验证或快速出图时候特别有用。我还会把自己调试好的材质存成智能材质。具体做法是选中材质树根节点在节点编辑器工具栏点 Add to library给它起个名字下次新项目就能直接在库里找到。我存了大概二十多个常用材质预设覆盖金属、木头、塑料、石头类遇到新项目直接套模板再针对性地改参数。这个效率提升是非常夸张的。3.4 节点材质从零搭建一个锈蚀金属的完整节点链我想用一个实际的节点组来说明 armorpaint 的程序化能力。下面这个是我经常用的生锈铁板材质节点链基础颜色一个 Image Texture 加载铁板底色贴图接到 Principled 的 Base Color。锈迹颜色用 Noise Texture 的 Color 输出接到一个 MixRGB 节点把底色和橘褐色混合Mix 系数接到另一个低频 Noise 的输出这样形成大块锈斑分布同时再叠加一个高频 Noise 做细碎锈点。粗糙度把同一个 MixRGB 节点的 Scale 接到后续乘法节点再连接到 Principled 的 Roughness。锈迹区域光照下会显得更粗糙所以颜色和粗糙度可以用同一个 mask 控制。金属度把底色 Image Texture 的粗糙度通道反转后接到 Metalness让铁锈区域金属度为 0非锈区域保持金属。这套节点链的原理其实就一句话让程序化噪声同时驱动多个材质通道保证颜色和粗糙度、金属度的变化方向一致真实感就来了。你手动画也可以达到类似效果但节点的好处是参数实时可调想改变锈迹密度动一个 Noise 的 Scale 就够了不会破坏已经画好的部分。3.5 导出贴图和 Blender、Unity 对接时的关键设置贴图画完最核心的是导出。armorpaint 的导出入口在 File Export Textures。面板里能看到要导出的通道列表Base Color、Roughness、Metalness、Normal、Height、AO、Opacity 等每个通道可以选择导出格式 PNG、JPEG、EXR、WebP 等。分辨率可以选择原始大小也可以输出 2K/4K/8K。我一般Base Color、Roughness、Metalness、Normal 选 PNG无压缩丢失如果要用 AO、Height也 PNG需要 HDR 数据时选 EXR导出后在 Blender 里新建 Principled BSDF把对应贴图按颜色、粗糙度、金属度、法线连进去即可。注意法线贴图的色彩空间要设置为 Non-Color糙度和金属度也是 Non-Color只有 Base Color 保持 sRGB。这一点在 Blender 里连错过大概率颜色发灰或发亮排查挺常见的。跟 Unity 对接时armpaint 导出的贴图已经按 PBR 通道拆好了直接拖进材质面板的对应槽位就行。要注意法线贴图的导入设置Unity 里需要把 Texture Type 设为 Normal Map否则光影是错的。这些虽然不算 armopaint 特有的坑但很多人第一次从 armopaint 导出后在引擎里看效果不对九成都是色彩空间设置问题我先放在这里提醒一下。4. 实操中遇到的坑与排查技巧从卡顿到接缝再到崩溃4.1 视图卡顿、笔刷延迟问题不一定在软件本身armorpaint 以轻快著称但也不是没卡过。我遇到过一次比较严重的延迟4K 底图 多图层 智能材质时笔刷落下去要等半秒钟才出来笔触完全没法工作。排查之后发现原因有三个一是视图里的实时预览分辨率过高。在 Viewport 设置的 Resolution 可以从 0.25 到 1.0调低预览分辨率并不影响最终导出质量只是让你更好操作。我降低到 0.5 后流畅度立刻回来。二是开启了多视图或者同时开了材质预览窗口。这会让显存压力成大建议普通项目只保留单视图配合材质节点编辑器工作。三是电脑没开硬件加速。armorpaint 的实时笔刷本质就是 GPU 计算如果你的电脑显卡驱动有问题或者在虚拟机、远程桌面环境下运行根本吃不到 GPU 加速卡成幻灯片也正常。确认方法很简单看软件左下角是否显示使用 Vulkan/D3D 设备并确认显存占用在任务管理器里正常跳动。另外笔刷延迟还有一个很容易忽略的问题画笔的 Airbrush 模式。如果你不小心开启了持续喷枪效果笔刷即使没有移动也会持续往纹理上叠加颜色看起来就像延迟。在笔刷属性里把 Airbrush 关掉或者降低 Flow 和 Spacing手感会清爽很多。4.2 UV 接缝、拉伸与导出瑕疵的排查思路接缝问题多半不是 armorpaint 的锅而是模型导入前 UV 没有处理好。我踩过最典型的坑是从 Blender 导出一个 UV 没有展开的游戏资产进 armorpaint 后笔刷怎么画都像在抹奶油颜色拉得很开。后来我意识到这是 UV 重叠或者 islands 之间有较大拉伸导致的。解决的办法在 Blender 里给模型执行智能 UV 展开智能项目或手动展开检查棋盘格显示没有明显拉伸再导出 glTF/OBJ。另外注意 armorpaint 的视图纹理显示是基于 UV 的如果你的模型有多个 UV 通道导入时需要选择正确的 UV 集否则画在错误的 UV 上导出当然对不上。导出接缝处出现白线或者漏底色则是纹理边缘 padding 不够导致的。armorpaint 导出面板里有 Dilate 选项可以控制贴图和边缘扩张多少像素。默认值我记得不是很高我习惯调到 8 或者 16接缝问题基本就消失了。特别是在合批压缩后的纹理集中外扩像素低会看到明显接缝调高 Dilate 是标准操作。还有一个细节是如果你用了 Tiling UDIM 工作流armorpaint 也支持多象限纹理但是导出时要注意勾选 UDIM 选项并确认每个 tile 对应的 UV 象限正确。我自己用 UDIM 的情况不多但做高精度角色时确实用过 2x2 UDIMarmorpaint 可以直接管理和导出多张 tile 贴图这一点做得挺完善的。4.3 崩溃与文件保存曾经丢失两小时进度的惨痛教训开源软件稳定性确实比商业付费软件差一些armorpaint 偶尔会崩溃尤其是在切换图形 API 或加载过大纹理的时候。我有一次因为没保存模型材质做了两小时一个崩溃全没了从那以后我对工程文件管理变得格外小心。现在我的操作习惯是这样的每做 20 到 30 分钟按一次 CtrlS这不花多少时间但能救命。每次导出贴图前先另存一个 .arm 版本比如 myproject_v02.arm防止导出过程或后续修改改坏了没法回退。重大阶段比如做完全部智能材质、画完整套细节都另存版本既有递增备份又方便后面对比。另外一个冷知识armorpaint 的自动保存默认间隔是 5 分钟但我建议在 User Preferences 里把自动保存打开并设置 2 分钟。默认的文件位置在项目的同目录或者缓存目录可以在设置里查看具体路径。这样即使崩溃最多丢失两分钟以内的工作内容不会再有两小时白干的事情发生。5. 我个人的一些小技巧与使用习惯到这里核心功能都过了一遍最后分享几个我用 armorpaint 比较顺手的私人技巧不算全面但都是实际体验中沉淀下来的。第一把颜色挑选面板固定在一个方便的位置。armorpaint 默认颜色面板比较小但你可以把它当独立的浮动窗口拉出来配合色环快速取色。我习惯左手拿键盘右手画板Alt 键吸色特别好使整个流程基本不用挪动鼠标到色板区域。第二多用快捷键。armorpaint 的快捷键跟 Blender 很像很多操作可以直接用快捷键触发。比如 B 切换笔刷G 切换填充层M 切换材质层。我是从 Blender 转过来的几乎零学习成本。老手可以专门花十分钟把常用操作快捷键过一遍收益非常明显。第三处理金属材质时我会把 Roughness 和 Metalness 放在同一个绘制图层来控制。实际上 armorpaint 每个 Paint Layer 是可以指定输出到哪个图片通道的。比如画笔的 Metalness 强度设为 1就只画金属度通道设成 -1 就变成刮掉金属度这在做磨损表现时特别方便。你不需要建一大堆图层来分别管理颜色、粗糙度、金属度一个图层就能同时控制多个通道的数值前提是你在笔刷属性或图层属性里把通道开关打开。第四使用摄像头贴花Decal功能。在笔刷工具组里有一个 Project 笔刷可以从视口法线方向投影贴图到模型表面。这个适合做 logo、编号、警示标志这类贴花。我会提前做好带 Alpha 透明的贴图选择 Project 笔刷并加载贴图直接在曲面上一拖就贴好。避免用普通笔刷一笔一笔描边。这些技巧单看都不是什么惊天动地的功能但组合起来日常工作效率提升非常明显。特别是通道控制和图层非破坏性这两点让我回头再用其他软件时总觉得不够自由。armorpaint 这个工具在这两年里逐渐从一个小众实验项目变成了相当实用的 PBR 贴图解决方案至少在我的工作流里它已经完全可以替代商业软件的角色。如果你也是个人开发者、独立美术或学生党想找一款轻量、免费、出图质量能打的绘制软件真的很值得在下一个项目里试试它。