做游戏美术或者3D内容创作的朋友,应该都经历过这个场景:模型在Blender里建的没问题,UV也拆完了,接下来该画材质贴图了。打开商业贴图软件,功能确实强,但价格和授权对独立开发者来说有点劝退;用Blender自带的绘制模式,又总觉得差点意思。ArmorPaint这个名字在近两年的开源圈里慢慢热了起来,它的定位非常明确——一款脱胎于Blender游戏引擎生态的免费开源材质绘制软件。单看界面,它像个独立的小工具,但用下来你会发现,它把游戏引擎的实时渲染逻辑直接搬进了贴图绘制流程,从材质节点到笔刷手感,处处都带着"引擎原住民"的影子。
这篇文章不打算做成软件手册的复读机,而是站在一个常用Blender、经常要给模型做PBR贴图、也会把素材导进引擎看效果的人的角度,把ArmorPaint的核心机制、实际操作流程、踩过的坑和选型建议一次性说清楚。无论你是刚接触材质绘制的新手,还是已经用惯了付费工具想找个备用方案的老手,这篇文章里应该都有你用得上的内容。
1. ArmorPaint的身世:从游戏引擎里长出来的贴图工具
1.1 它和Armor引擎是什么关系
ArmorPaint和Armor引擎的关系,很多人第一时间搞不清楚。简单说,Armor引擎(又叫Armory3D)是一个以Blender为前端的开源实时3D引擎,用Blender当场景编辑器,渲染、逻辑、物理都靠它自己的运行时跑。ArmorPaint正是同一个开发者Lubos Lenco为了让Armor引擎的美术流程更顺滑而做的配套工具。换句话说,它不是Blender插件,也不是Armor引擎的附属面板,而是一个独立的桌面软件,但它的整个渲染内核和我们熟知的Armor引擎同源。
所以标题里那句"脱胎于Blender游戏引擎"并不夸张。ArmorPaint内部使用的渲染技术栈是Kha/Haxe,底层的图形API支持OpenGL、Vulkan、Metal,这些能力本质上就是一套游戏引擎的实时渲染管线。你可能觉得"贴图工具用引擎渲染"没什么稀奇,但实际体验差别非常大。传统贴图软件画完一张roughness要切到侧视图或者依赖软件里的模拟光照,而ArmorPaint从第一笔开始,你看到的就是带环境光照、带法线干扰、带金属反射的最终效果,相当于你直接在引擎里画贴图。
这个定位决定了它的一系列设计取舍:体积小、启动快、原生支持多平台、对显卡的要求偏向游戏级别而不是专业工作站。我印象里它的安装包只有一百多MB,这在今天的工业级软件里算相当苗条了。它虽然是开源项目,但开发者提供了免费版和商业授权两种模式,个人学习、独立游戏、小型工作室用开源许可基本够用,商用有额外授权条款,这点需要动手做正式项目前看清楚。
1.2 引擎式实时预览为什么值得关注
我见过不少同行第一次打开ArmorPaint时的反应:视口里默认就有一个带环境的球体场景,你选个笔刷往模型上一抹,高光和漫反射立刻跟着光照环境变化,这个反馈速度比很多付费软件还快。原因就在于它的渲染核心跟游戏引擎走的是同一条路径:延迟着色、IBL环境光、多光源支持,这些能力在绘制时就被直接启用了。
这意味着你可以直接把HDR环境贴图拖进场景,或者切换不同的环境预设,观察金属、粗糙、发光材质在真实光影下的表现。很多人在Blender里做完材质放到Unity或者Godot里发现颜色发灰、对比度不对,根源往往就是贴图软件里看到的预览光照和引擎里的光照环境不一致。ArmorPaint用引擎渲染做预览,天然把这个问题消掉了一大半。我自己的习惯是在ArmorPaint里调好材质后导进Godot,效果基本是所见即所得。
另外一个值得提的点是它对低端硬件的容忍度。因为基于Kha,ArmorPaint可以在集成显卡上跑得很流畅,这在贴图工具里不太常见。我曾在办公室一台只有核显的老笔记本上画2048分辨率的贴图,操作依然顺滑,只是大笔刷大面积绘制时会有一点迟钝,关掉视口抗锯齿就能改善。这一点对预算有限的学生党、独立开发者非常友好。
2. 材质通道与绘制模型:理解PBR是打开它的钥匙
2.1 PBR五大通道怎么用
ArmorPaint的核心绘制模型是PBR(基于物理的渲染),这也是目前游戏引擎的主流标准。它把材质拆成5个主要通道:Base Color(基础色)、Roughness(粗糙度)、Metalness(金属度)、Normal(法线)、Height(高度),另外还支持Opacity(透明度)、Emissive(自发光)、AO(环境光遮蔽)这些辅助通道。
很多新手第一次打开会懵:为什么不是直接在模型上画颜色,而是要分这么多层?我用一个生活化的类比解释一下。你想象一块金属的手表表盘和一块磨砂塑料,它们的Base Color可能都是深灰色,但金属表面有强烈的反射、明暗对比,磨砂塑料则是均匀的哑光;要让引擎渲染出"这是金属"而不是"这是塑料",关键就在Metalness和Roughness这两个通道里。Base Color决定颜色,Roughness决定表面是镜面还是磨砂,Metalness决定反射是金属感还是绝缘体感,Normal则负责在平面上骗出凹凸细节。四个通道各自独立,绘制时互不干扰,这就是PBR流程里所谓的"分层绘制"。
在ArmorPaint里,每个图层都可以单独指定要影响哪些通道。你可以在一个图层上只画Roughness,把某个区域的表面从镜面改成磨砂,而完全不影响颜色。也可以建立新图层专攻Metalness,用黑白的Alpha贴图控制金属分布。这个机制和Substance Painter的图层工作流是一个思路,但ArmorPaint把界面做得更直白,新手理解起来更轻松。
2.2 程序化材质与节点系统
ArmorPaint最像Blender的地方,是它的材质节点系统。在Materials面板里,你可以像在Blender Shader Editor里那样拖拽节点,把噪声纹理、颜色渐变、UV变换连起来,生成程序化材质。这意味着你可以不画任何一笔,纯靠节点生成一整张复杂的贴图,然后微调参数看实时效果。
举个例子,你想做一个锈迹斑斑的铁板效果。Base Color里可以连一个锈色渐变,配合一个较大的噪声纹理让锈斑随机分布;Roughness通道里让锈区偏粗糙(roughness值高),铁面偏光滑;Metalness通道里让锈区金属度降低、铁面保持高金属度。这样只要几分钟,一个像样的锈蚀金属就出来了,而且因为噪声纹理是随处可调的,你随时可以改变锈斑大小、密度和颜色,不会像手绘那样改一笔都要重新调。
这里有个经验分享:程序化材质用来定大基调很高效,但太均匀了容易显得"假"。我一般会先用节点系统打底,再手绘一层脏迹、划痕、边缘磨损,让细节变化更丰富。ArmorPaint的图层系统刚好支持这种"程序化图层+手绘图层"叠加的方式,两种手段互相配合,效果比单一方式好一个量级。
2.3 图层、蒙版与滤镜:非破坏性绘制的心法
前面提到很多次图层,这里重点解释ArmorPaint的图层工作流。它的原理跟Photoshop类似:你在一个新图层上刷一笔,不满意可以直接隐藏或删除,不会破坏底下的内容。但这套逻辑放到材质绘制里有一个额外的好处:可以针对单个通道做独立的蒙版控制。
具体操作是这样的:选中一个图层,在右侧面板里可以添加蒙版。蒙版就是一张黑白图,白色区域表示"该图层效果生效",黑色表示"不生效"。你可以用笔刷在蒙版上涂抹,控制这个图层影响的范围。比如你加了一个金属度拉满的程序化材质层,但只想让手柄部分有金属感,那就用蒙版刷出手柄区域的白色遮罩,其他地方保持黑色,完美实现局部金属效果,完全不需要去改原始材质。
ArmorPaint还内置了不少滤镜节点,比如Invert(反相)、Levels(色阶)、Blur(模糊)、Gradient(渐变),它们可以直接挂到图层上,对图层的输出做后处理。这个功能在调整贴图对比度、亮度关系时非常好用,比如你想让Roughness通道整体变光滑一点,直接在滤镜里把Levels的白色端点往下拉即可,比手动刷几百笔高效得多。
3. 完整实操:从Blender模型到引擎贴图
3.1 安装与启动:两个常见坑
ArmorPaint的获取方式很简单,Steam上有免费版,GitHub的Releases页面也有各平台的安装包,Linux、Windows、macOS都支持。下载后解压运行,第一次启动会提示选择图形后端,有OpenGL和Vulkan两个选项。
这里有个坑要先说:如果你的显卡比较老,或者驱动没更新到位,Vulkan后端可能直接闪退或者黑屏。我在一台2015年的笔记本上就遇到过,Vulkan启动后视口全黑,切换到OpenGL后端就一切正常。所以遇到启动问题不要急着怀疑软件损坏,先切换后端试试。另外,Windows下如果缺Vulkan运行库,安装一下最新显卡驱动一般能解决。
3.2 模型导入:UV和三角化
在ArmorPaint里画材质,模型必须有UV。这个步骤通常在Blender里完成:给模型添加UV网格,展开,检查UV岛不要重叠。如果模型是从网上下载的,要先在Blender里打开检查一下UV是否有效,有些改模的模型UV是乱的,直接导入ArmorPaint画出来的贴图会全学化妆。
导入模型时,ArmorPaint支持FBX、OBJ、GLTF等常见格式。需要特别注意的是,它要求模型是三角面(Triangulate)。Blender里导出的FBX默认可能带N-Gon(边数大于4的多边形),这类面在ArmorPaint里会显示异常或者烘焙贴图出错。我的习惯是在Blender里对模型执行一次三角化修改器再导出,这一步可以避免掉后面至少一半的莫名问题。
另外,尽量让模型的不同部分在UV上有足够的留白,不要把UV岛挤得密密麻麻。贴图分辨率虽然是2048的,但UV岛挤在一起容易在笔刷边缘产生颜色渗漏,这个和手绘的Maya、SP在原理上是一样的,UV排得松一点,后面省心很多。
3.3 分层绘制流程
第一次打开ArmorPaint,新建项目时选择导入模型,会弹出UV/着色器相关设置,直接用默认值就可以。进入主界面后,你会看到左侧是3D视口,右侧是工具和面板,中间下方是图层面板。
我的绘制顺序一般是这样:
- 先在LineArt图层(相当于底色层)铺一个整体色调,不用画细节,只定色调方向。这个图层可以看成是所有材质的底色。
- 创建新图层,命名Color,用基础颜色笔刷画出大的色块分布,比如这件武器的护手是深棕色、刀刃是银灰色。
- 再建一个图层,只设置Metalness通道为全开,然后把不需要金属的部分用黑色蒙版遮掉;这一步的目的是快速让金属和非金属区域分开。
- 继续建图层处理Roughness,在金属区域画较低值(偏光滑),在非金属区域画较高值(偏粗糙)。
- 最后建细节层,画磨损、划痕、灰尘,可以用标准的BlendModes(叠加、正片叠底)让细节自然融入底层。
图层面板右上角可以设置每个图层的混合模式(Mix、Add、Multiply等),这功能很关键。比如你在阴暗的金属表面加一条干净的反光亮边,用加色混合会比直接叠上去更真实。实际绘制时,ArmorPaint的笔刷响应很跟手,配合数位板的压力感应,勾线、涂抹边缘都很有手感,这点在我用过的开源绘图工具里算第一梯队。
3.4 智能材质与自动材质演示
如果你不想完全手绘,ArmorPaint里也有类似Substance Painter智能材质的机制,它叫Material Library。你可以直接导入别人做好的材质包,或者使用程序化材质快速往模型上刷。
具体路径是:面板顶部切换到Material标签页,选一个基础材质(比如Metal/Plastic/Wood),然后直接在模型上拖动画笔,笔刷经过的地方就会自动填充该材质的Base Color、Roughness、Metalness全套信息。配合蒙版,你可以很快地给一个机械模型的不同部件赋上金属、塑料、橡胶材质,然后再细微调整。
这个功能的效率非常惊人。我做过一个硬表面道具,大概50个部件,用智能材质+蒙版+滤镜这套组合,从导入到导出2048贴图,总计用了不到40分钟,而同样的活传统单一图层手绘起码要两个小时。当然,前提是你的UV是干净的,模型已经分好部件,否则还是要花时间修接缝。
这里想提醒一句:智能材质是起点,不是终点。直接刷上去的材质往往缺乏区域破损和故事感,需要在材质层之上加手绘细节层,否则容易做出"批量生产的塑料模型"感,细节层是拉开品质差距的关键一步。
3.5 导出贴图:各引擎格式选择
画完以后导出是另一个容易踩坑的地方。ArmorPaint的导出支持多种目标格式,File -> Export里有Blender、Unity、Unreal、Godot、PBR等选项。选不同的引擎,你会发现导出的文件命名和通道组合都不太一样,比如Unity导出的格式偏向Metallic + Smoothness工作流,而Blender和Unreal偏向Metallic + Roughness,这个差异如果你不清楚,导到引擎里效果可能会很奇怪。
分辨率设置建议根据实际需求来:移动端游戏用1024就够,PC游戏至少2048,如果是特写镜头为主的道具,可以到4096。值得注意的是,贴图尺寸必须统一,ArmorPaint默认导出的是PNG,但某些引擎对纹理格式有要求,比如优先用TGA或者带压缩的格式,那你可以在导出设置里调整,或者先用PNG导出,再在DCC工具里转格式。
导完贴图后,一定要做的检查是把模型和贴图一起导进目标引擎跑一遍。除了确认颜色、粗糙度、金属度符合预期之外,还要看是否出现UV接缝、纹理分辨率密度不均等问题。这个环节发现的问题往往比在ArmorPaint的视口里更多,因为引擎的处理和软件预览还是有细微差别。
4. 常见问题与排查技巧实录
4.1 启动闪退、黑屏、菜单显示不全
这类问题在贴图软件的讨论区很常见,ArmorPaint的出现频率不算高,但遇到一次就够头疼。优先检查显卡驱动是否更新,然后尝试切换图形后端(Vulkan / OpenGL)。如果是在Linux下,确认mesa驱动装好了,某些发行版的OpenGL库不全,也会导致界面元素加载异常。
如果切换后端后仍然黑屏,可以试试把视口里的"Auto Refresh"选项关掉,这一步能减少对GPU的持续压力。另外,ArmorPaint默认会缓存OpenGL着色器,第一次运行某个功能时会有几秒的卡顿,属于正常现象,不是死机,耐心等一下即可。
4.2 UV接缝脏、模糊纹理、边缘溢出
这是画贴图最让人崩溃的问题。有时候明明在ArmorPaint里看着挺好,导进引擎一开光照,接缝处的纹理颜色明显发暗或者发亮,像一道线贴在模型上。原因通常有两个:一是UV岛周围没有预留足够的留白,笔刷颜色从UV岛边缘溢出到相邻区域;二是Mipmap采样在接缝处产生了比较脏的过渡色。
解决思路第一步是在Blender里把UV Layout导出,在ArmorPaint的导入设置里勾选"Padding"选项,让每个UV岛向外扩展几个像素。第二步是在画完基本贴图后,把所有图层合并(Flatten),然后对贴图做一次边缘渗色修复,也就是把每个UV岛边缘的颜色向岛内方向扩展一点。ArmorPaint有一些处理工具,但最稳妥的办法还是在Blender里用一张带缝的UV检查贴图,配合抗锯齿扩散。
还有一种情况是贴图本身看起来发虚,尤其是Normal贴图或者Height贴图。这往往是因为导出的通道数值精度不够,或者你在ArmorPaint里将贴图压缩格式设成了低质量的选项。解决办法是在导出时选择16bit浮点模式,特别是Normal和Height,这两个通道对精度敏感,8bit容易带条纹状断层。
4.3 导出后颜色与预期不符
你辛辛苦苦调好的老旧锈金属,导到引擎里却变得发灰、发暗,这个问题我初见时也很困惑。后来发现,根源是色彩空间的转换。ArmorPaint在绘制Base Color时使用的是sRGB色彩空间,但如果导出的PNG没有正确标记色彩空间,引擎会默认按Linear来解析,颜色自然就暗了一层。
解决方法有两个:一是多数引擎导入设置里可以手动指定贴图色彩空间,Base Color选sRGB,Roughness、Metalness、Normal选Linear;二是在ArmorPaint的导出面板里,把Base Color对应的输出选项勾选为sRGB,其余通道选Linear。只要这两个地方保持一致,颜色基本就不偏了。
另外要记住,如果你在引擎里看到的是发灰而不是发暗,多是因为Roughness过高。很多人在软件视口里看不出来,因为软件自带的环境光比较强,但引擎里的默认光照没那么亮,过高的粗糙度会让反射云雾扩散,看起来灰蒙蒙的。这时候需要回ArmorPaint把Roughness通道调低几个灰阶,再导一次。
5. 和商业工具对比:什么场景选ArmorPaint
5.1 功能差异一览
ArmorPaint和行业主流的商业贴图软件(比如Substance Painter)定位相近,但功能成熟度上还是有一定差距。我整理了一张表格,方便大家按需对比。
| 对比项 | ArmorPaint | 商业贴图软件 |
|---|---|---|
| 授权模式 | 免费开源(商用需注意授权条款) | 付费订阅/授权 |
| 引擎预览 | 内置实时引擎渲染,所见即所得 | 有内置预览,但对引擎光照的还原不一定直观 |
| 智能材质 | 有程序化材质和材质库,生态较小 | 智能材质极其丰富,社区素材多 |
| UDIM支持 | 支持但便利性一般 | 支持成熟,大规模高模流程顺手 |
| 烘焙能力(AO/法线) | 基础可用 | 烘焙工具全面,质量较高 |
| 性能表现 | 轻量、启动快、低配友好 | 较重,对硬件有一定要求 |
| 学习成本 | 低,界面直白 | 中高,功能太多需要时间摸 |
坦白说,如果你在大厂做AAA级项目,每天需要处理几百万面的高模和几十个UDIM,ArmorPaint目前还不能完全取代商业工具,尤其在烘焙质量和大型资产流程管理方面,商业工具更成熟。但对于独立游戏、个人作品、风格化道具、原型验证这一挂,ArmorPaint完全够用,而且零授权成本让人心理负担小很多。
5.2 我的选型建议
根据我自己在不同项目里的使用体验,我的选型逻辑是这样的。如果你已经有商业软件的授权,并且团队里大家都很熟练,那继续用就好,没必要为了开源而迁移。如果你是独立开发者或者刚入行的学习者,预算紧张又想走PBR流程,那ArmorPaint完全可以作为主力工具。它的学习曲线比商业软件平缓,图层、蒙版、滤镜这些概念如果你玩过PS或者Blender,基本半小时就能上手。
如果拿Blender用户来说,ArmorPaint更值得一试,因为两者都是开源生态,格式互通性不错,模型导来导去很平滑。你在Blender里做好材质预览效果,到ArmorPaint重绘一遍贴图再导回Blender,你会发现贴图和Blender的Cycles或Eevee渲染器的兼容性意外地好,这大概就是同生态项目的默契。
另外提一点,ArmorPaint还支持插件扩展,社区里有一些不错的brush预设和材质库可以下载,虽然没有商业工具那么庞大的资源站,但胜在纯净无广告,质量也不错。
6. 写在最后:我的实测体会
ArmorPaint不是一个"免费替代品"那么简单,它用引擎渲染做实时预览的思路,在贴图工具里其实很前卫。我自己用下来的感觉是,如果你从零开始用ArmorPaint学PBR材质绘制,会因为实时反馈强、操作直观,学得反而比在功能繁杂的商业软件里更快。画错一个通道,关掉图层就恢复,不存在破坏原始贴图的心理压力。
一个小技巧收尾:当你画完当前版本后,可以把项目文件另存一份,然后给同一模型换一套材质做变体。ArmorPaint的项目文件就是一套材质通道数据,换贴图变体不需要重新建模或重新展UV,直接基于旧项目改几层图层就能快速出第二、第三套材质。对要做多配色方案的道具或者想快速试配色的人来说,这个工作流效率翻倍。
另外,如果你在Blender里用Eevee做项目,可以考虑把ArmorPaint当成材质预览器用,先在ArmorPaint里快速确定材质大方向,再回Blender里精调专用材质参数,这两个软件搭配起来比单用一个要省不少时间。当然,这个组合也有一点学习代价,就是你要接受两套软件的操作习惯,不过跨过最初的两周适应期后,你会发现这套开源流程完全撑得起独立项目的品质需求。