ArmorPaint免费开源实时PBR贴图绘制工具:原理、实操与避坑指南
2026/9/15 4:31:02 网站建设 项目流程

做3D游戏或次世代影视资产的人,对“贴图绘制”这件事一定不陌生。传统流程里,你要在Blender里拆好UV,再导到Substance Painter或者Photoshop里手工画各种通道,最后还要反复导入引擎看效果。这种“盲画”的体验,遇到稍微复杂点的模型就很折磨人。我第一次接触ArmorPaint,是在一个开源渲染器的Demo里看到的,当时心里只有一个念头:这玩意儿怎么这么像Substance Painter?用下来之后我发现,它不只是“像”,它本身就是一个走实时PBR路线的GPU加速贴图绘制工具,而且开源免费、体积小、启动快。所以我想认真聊一聊这个项目,把它的核心原理、实际操作和踩坑经验都摊开来讲,给想换工具链或者找免费替代方案的朋友一个参考。

ArmorPaint适合的人群很清晰:游戏美术、TA、独立开发者,以及还在学习PBR贴图流程的学生。只要你的场景需要画基础色、粗糙度、金属度、法线、高度甚至AO这套东西,它就能派上用场。它解决的问题也很直接:不再需要“保存——切窗口——重新加载——看效果”这种反人类的循环,而是在3D视图里一边画一边看最终效果,所有通道实时反馈。这篇文章我会从项目定位和技术底座讲起,然后把功能层级一一拆开,最后给出一份完整的实操流程和避坑清单,保证你照着走一遍就能上手。

1. ArmorPaint是什么,为什么它值得被认真对待

1.1 项目定位:不是传统PS,而是实时PBR贴图绘制器

很多人第一次打开ArmorPaint,会习惯性地把它当成一个3D版Photoshop。这个类比不能说全错,但它会严重误导你对这个工具的理解。ArmorPaint的核心定位是实时PBR贴图绘制器,它关心的不是一张位图的颜色完美不完美,而是“这一笔下去,这个像素在物理光照下会呈现出什么样子”。

它把模型当作唯一的画布,你在3D视口里直接对着模型下笔,绘制的结果会同时写入到albedo、roughness、metalness、normal、height、AO等不同通道中。这个流程叫做PBR材质绘制。传统思路里,美术往往是先画一张漫反射贴图,再手动去生成别的通道,或者直接在引擎里把大调子调好再回来补细节。而ArmorPaint从设计之初就把这种多通道一体绘制作为核心,所有通道在3D视口中以最终效果呈现,画一笔,光照会立刻响应这一笔的新颜色和新粗糙度。

所以,它适合的并非那种要精修一张UI贴图或者做包装设计的2D场景,而是游戏、VR、影视预览这一类的三维资产制作任务。你不需要再对着视口截图反复切换,你看到的就是你在引擎里最终会得到的东西。

1.2 技术底座:Haxe、Kha、Vulkan,为什么选这条技术路线

ArmorPaint的底层技术栈挺有意思。它采用Haxe语言编写,底层图形API走的是Vulkan和OpenGL,渲染框架是基于Kha构建的。这套组合在游戏开发圈子之外并不算大众,但恰好是它能在“轻量+实时”这两个方向上做到极致的原因。

Haxe是一种可以跨平台编译的语言,它能把同一套代码编译到C++、C#、Java、JavaScript等不同目标平台上,属于“一套代码,到处编译”的路线。ArmorPaint这个项目能在Windows、Linux、macOS多个平台保持接近一致的行为表现,正是得益于这个特性。很多人会担心,用这么一个小众语言写的工具,扩展性会不会很差。实际上ArmorPaint提供了基于JavaScript的插件机制,这跟Haxe本身关系不大,反而降低了很多美术和TA的上手门槛,改改脚本就能定制自己的工作流。

底层渲染选择Vulkan/OpenGL,意味着它的绘制循环是塞进GPU里的。现代显存里存放着当前模型的纹理数据,每一次笔刷落下,实际上是一个shader在一个或几个纹理层上做实时混合计算。这就是为什么ArmorPaint在一张2K甚至4K贴图上绘制时,能保持流畅的实时反馈。实时PBR意味着你看到的始终是光照参与计算后的画面,不是灰度通道拼凑出来的临时图。

再说说这套技术路线的收益:启动速度极快,软件体积只有几十MB,没有庞大的依赖服务,导入模型、进入绘制状态也就是几秒钟的事。这在实际工作中真的会改变使用习惯。我见过很多美术朋友宁可少封装几层材质,也要用轻量工具去处理大量资产,ArmorPaint就是干这个的。

2. 核心功能与使用场景拆解

2.1 实时PBR材质绘制:多通道一次搞定

ArmorPaint的绘制系统围绕PBR通道组织。常见的通道包括:

  • 基础色(Albedo/Base Color):定义物体本身的颜色,不含光照信息。
  • 粗糙度(Roughness):控制表面微表面的粗糙程度,值越大表面越不反光。
  • 金属度(Metalness):区分金属和非金属,是PBR流程中非常影响观感的通道。
  • 法线(Normal):记录表面细节的凹凸方向,增加细节层次感。
  • 高度(Height):用于视差和置换,能模拟更强的立体感。
  • AO(环境光遮蔽):模拟物体遮挡产生的接触阴影,为画面增加虚实对比。

在ArmorPaint里,你可以给同一个模型的不同部分,分别指定不同的PBR材质。每个材质下面会自动生成对应的通道图层。绘制时,你可以选择只画颜色,也可以选择同时修改粗糙度和金属度,并实时看到光影变化。这样做的好处很直观:你再也不需要“猜”一张金属度贴图调成什么样,才能在引擎里刚好是那个效果,所见即所得。

举个例子,一个锈蚀金属板。我先用基础色画锈迹,再用粗糙度通道刷上不均匀的高光区域,最后在金属度通道把掉漆的地方擦成非金属。整个过程在3D视口里一步到位,光和阴影跟着每一笔实时变化,做完之后导出的几张贴图在引擎里拼接,效果和你在ArmorPaint里看到的几乎完全一致。这非常节省时间。

2.2 图层系统与程序化纹理:像PS一样管理贴图

ArmorPaint能让你把贴图绘制想象成在用Photoshop处理图层。你可以新建多个绘制图层,设置图层的透明度、混合模式,使用蒙版控制每个图层的显示范围。这意味着你不需要在单个通道上反复涂抹破坏掉原来的效果,你可以为“污迹”“磨损”“颜色变化”分别创建图层,后面不满意就可以单独调整,甚至直接删掉一个图层重新画。

图层和蒙版是实际工作中最常用的组合。比如我的模型上有一面墙,我想在底部加泥土效果。可以新建一个图层,填充泥土颜色,然后给这个图层添加一个蒙版,再使用笔刷在蒙版上限定泥土出现的区域。黑色蒙版隐藏内容,白色蒙版显示内容,灰色则半透明。这样画起来既干净又方便调整,不会画花原来的底色。

程序化纹理也是ArmorPaint的一个强项。它内置了大量可参数化的程序化纹理节点,包括噪波、纹理、网格、布纹等。你可以在一个新图层上接入这些节点,把它们当作智能材质来使用。这相当于用一个可以随时调整参数的“活滤镜”来生成真实细节。如果程序化纹理生成的图案不够个性化,再叠加手绘笔刷去破坏,效果会非常自然。

2.3 材质节点图与智能材质:把Blender节点习惯迁移过来

如果你用过Blender的着色器节点编辑器,那么ArmorPaint的节点图对你来说几乎不需要学习成本。它内置了一套以节点为基础的材质系统,每个材质都由一组节点组成,节点之间用连线决定输出的最终通道。你可以把纹理贴图、颜色、杂色、变形等节点连到输出端,实时调节参数。

节点图的核心价值在于:可以把重复性高、批量化的材质规则模板化为“智能材质”。比如一个“生锈金属”智能材质,内部可以包含金属度、粗糙度的调节参数。当你在同一个项目里给几十个道具使用时,只需要修改智能材质的参数,所有覆盖到的模型会同步更新。这在批量制作资产时非常节约时间。

在实际操作中,我的做法是先在节点图里搭好材质框架,再将手动绘制的图层作为输入连接到框架中,这样既能发挥程序化效率,又能保留手绘的独特性。ArmorPaint的节点图虽然比Blender的着色器简单,但胜在轻量,核心功能完全够用,又不会因为过于复杂而拖慢反馈速度。

2.4 资源与工程管理:UDIM、多对象与烘焙的配合

ArmorPaint在资产管理上做了不少精巧设计。我特别看重的是它对多对象和UDIM的支持。UDIM是高端CG行业常用的UV展开方式,它允许一个模型使用多张UDIM瓦片去承载不同区域的贴图。ArmorPaint支持UDIM,这意味着影视方向使用高精度雕刻模型、需要超高纹理分辨率的朋友,也可以在它里面完成贴图绘制。

多对象管理指的是你一次可以导入多个模型,分别赋予不同的材质,然后统一处理并最终导出。这与Substance Painter的“纹理集”概念类似。比如一个战场上会有好几块不同状态的路面碎石,你可以一次性导入,给每块石头单独设置材质,然后统一导出为一个纹理集,在游戏引擎里就能获得一组协调匹配的贴图资源。

配合烘焙流程,ArmorPaint还能把高模细节烘焙到低模上。这对于做游戏的优化流程很关键。你可以把高模雕刻出的细节转换为法线、AO、高度贴图,烘焙后回落到低模上,再继续在低模上做后续修饰。这个功能一方面减少了外接烘焙软件的依赖,另一方面也保证了绘制效果与最终运行时一致。

3. 从零到一:一个完整的ArmorPaint实操流程

3.1 准备与导入:模型要处理到什么程度才能进软件

很多人导入模型后发现模型是黑的、笔刷画不上去,八成问题出在准备阶段。ArmorPaint对模型的UV有硬性要求。UV重叠严重的模型,在绘制贴图时会出现一片区域画不上,另外一片区域被重复绘制。所以进入ArmorPaint之前,我建议在DCC软件里先完成UV的展开和排布,确保UV没有重叠、没有超出0-1的方形区域。这个步骤可以快速用Blender或者RizomUV来处理。

模型的格式方面,ArmorPaint支持OBJ、FBX、glTF等常用格式。FBX含有多重材质时,要注意在导入前把材质整理好,或者在DCC软件里先分好材质ID,不然ArmorPaint可能会把多个物体合并成一个物体再赋予一套材质,处理起来很麻烦。我的习惯是尽量使用glTF格式,它在读写PBR材质参数时信息保留最完整。

导入模型后,你会在3D视图里看到模型,并且左侧工具栏会显示默认材质。此时如果模型上是一个通用材质球,建议先给它一个基础PBR材质,避免后续画半天发现不是预期效果。在ArmorPaint的材质库中右键选择一个材质,可以将其应用到模型上,这一步是很多人容易忽略的。

3.2 场景设置与基础绘制:从空白到出效果

一步步来。打开ArmorPaint后,界面分为左右两个主要区域:左边是工具栏,包含笔刷、橡皮擦、吸管、填充、渐变、克隆等多种工具;右边是图层面板和属性面板。顶部菜单栏提供文件、编辑、视图、帮助等基础功能。第一次进入不要被这个简洁的界面唬住,它不比Blender复杂,甚至比很多三维软件更直观。

第一步,导入你的模型,并设置好默认材质。第二步,切换透视/正交视图,用左键旋转视角、中键平移、右键缩放,快速检查模型UV是否正确。UV不正确的话,你会看到笔刷在模型表面出现明显的拉伸条纹,此时应回头调整UV。第三步,在右侧图层面板中创建一个新绘制图层。新建的图层默认显示颜色,你可以选择albedo通道直接绘制颜色。第四步,选择笔刷工具,在左上角属性框里调整大小、硬度、流量、不透明度。在模型上画几笔,你会发现画面实时变化,光照会立刻更新。

这里要特别说一个技巧:蒙版工具几乎可以替代橡皮擦。习惯用PS的朋友,出了错第一反应是切换橡皮擦去擦拭,这种做法在ArmorPaint里不太合理,因为橡皮擦操作会直接破坏掉图层的像素内容。更推荐的做法是在图层上新建蒙版,用黑白色在蒙版里控制图层的显隐。这样你想要调整的时候,只需把蒙版里黑色区域变回白色,就能恢复原来的内容,不会造成破坏。蒙版配合笔刷的软边,能画出非常自然的过渡效果。

绘制时,我常用快捷键来提升效率:Tab键快速切换3D视图和节点编辑器,F键聚焦当前模型,快捷键复制画笔等可以逛一逛帮助菜单。熟练后,整个绘制过程几乎不需要鼠标点来点去。在procedural图层上,你可以添加程序化纹理来快速增强细节,比如一个墙面可以在几分钟内获得自然的裂纹和污渍分布,然后再用手绘笔刷突出细节。

3.3 导出与导入Unity/Unreal:颜色空间和格式别搞错

绘制的最终目的是要拿到引擎里使用。ArmorPaint的导出模块提供了多种输出预设,包含Unity和Unreal的特定选项。导出时必须注意两个维度:一是选择哪些通道,二是选择哪种输出格式和颜色空间。

打开文件菜单下的导出,你可以在弹出的面板里勾选需要导出的通道。常用的导出组合是Albedo、Roughness、Metalness、Normal、AO和Height。格式一般选PNG,颜色信息使用sRGB,法线和高光相关通道使用线性空间。如果你把这个流程搞反了,到引擎里不管怎么调光照,画面都会发灰或者对比度异常。

导出的贴图尺寸应与你在工程里设置的纹理分辨率一致。ArmorPaint在项目属性中默认设置了纹理尺寸(1K、2K、4K等),这个值涉及显存使用和细节精度,后期导出时无法简单放大。所以项目开始前就要想清楚最终要多大贴图,我一般会按目标平台去设置。如果你不确定,直接设2K,流畅且细节够用。

导出的文件命名也要养成好习惯。比如墙面材质,我通常会导出为wall_albedo.pngwall_roughness.pngwall_metalness.pngwall_normal.png。这点很重要,因为Unity和Unreal的自动识别材质球,很多都依赖这些后缀。工程混乱往往不是工具的问题,而是命名混乱导致的。

4. 常见问题与排查技巧实录

4.1 模型是黑色的、材质球不显示怎么办

这个问题出现频率极高。如果你导入模型后,视口里模型显示为黑色或者完全看不见,第一反应不要慌。有几种可能性:第一种是模型的法线方向反了,可以在视图设置里开启背面剔除检查一下;第二种是材质没有正确赋给模型,右键在材质库中重新指定一个材质;第三种是CPU驱动兼容性问题,比如你的显卡没有启用Vulkan支持,这时可以尝试改回OpenGL运行模式。

更隐蔽的一个问题是UV在0-1范围外。很多DCC软件导出时,UV坐标可能会超出标准方形区域,而ArmorPaint只绘制0-1范围之内的UV区域。如果你在模型表面怎么画都显示不出来,或者只有一小部分区域有绘制内容,去检查UV是否超出边界准没错。

4.2 绘制延迟高、笔刷卡顿怎么办

ArmorPaint的实时绘制高度依赖GPU。如果绘制时出现延迟或卡顿,第一步先在右侧属性面板降低视口分辨率。视口分辨率不等于最终导出分辨率,它只影响你在画的时候的实时反馈精度,一般来说降低到1280x720甚至更低,反馈速度会非常明显提升。

第二步检查纹理分辨率。项目和图层的纹理分辨率设置太高时,显存压力会非常大。例如一个4K材质的模型,配合4K视口渲染,在高面数模型上很容易造成延迟。这里我建议项目分辨率按照目标平台合理设置,不要盲目追求4K,很多中低端显卡在4K贴图环境下会直接变成幻灯片。

还有一点容易被忽略:程序化节点的计算消耗。如果你在一个图层上连接了大量高分辨率程序化纹理,并且参数频繁变动,计算耗时会增加。解决方式是把程序化层“烘焙”成普通位图层,恢复到轻量状态。

4.3 烘焙AO和法线出现黑边或接缝怎么处理

烘焙贴图出现接缝和黑边,是最让新手头疼的问题。产生接缝的原因通常是UV边界处的采样像素不足或模型出现重叠UV。想要消除接缝,我更建议在导出前做好两件事:一是使用图像填充将UV边界向外扩张数个像素,这在很多DCC软件里叫“网格填充”或“像素填充”,可以极大程度减少接缝;二是在烘焙设置里适当增加边缘羽化值。

如果烘焙完成后接缝依然存在,可以回到ArmorPaint中,用一个柔和的修复笔刷在接缝处沿着边缘手动补几笔。这听起来笨,但处理个别顽固接缝时往往最有效。遇到黑边问题,多半是法线或AO通道贴图在边缘出现了纯黑或纯白跳跃,可以调整烘焙采样偏移值,或者用图像编辑器的曲线工具压暗边缘。

我也建议你在烘焙前先确保模型本身没有焊接问题,比如重复顶点、交错面。一个模型法线都是乱的,烘焙出来自然到处黑。先修复高模和低模之间的匹配关系,再谈烘焙参数。

下面整理一份常见问题速查表,方便大家快速定位问题:

现象可能原因排查/解决方案
导入模型后显示为黑色法线反向、材质缺失、GPU驱动不兼容检查法线,重新指定材质,切换OpenGL模式
笔刷画不上贴图图层被隐藏/锁定、蒙版为全黑、笔刷不透明度为零检查图层状态,清除蒙版,重置笔刷参数
绘制出现拉伸UV重叠或超出边界回到DCC软件重新展开UV,确保UV在0-1范围
视口操作卡顿视口分辨率或纹理分辨率过高、显卡驱动过旧降低分辨率,更新驱动,减少程序化节点层级
烘焙出现接缝/黑边UV边界采样不足、UV重叠、高模低模不匹配调整烘焙采样、扩张填充像素、修复模型匹配
导出的法线贴图在引擎中发灰法线空间不一致确认Unity/Unreal预设是否选择正确,检查法线贴图压缩设置
导出后颜色与视口不一致颜色空间设置错误Albedo使用sRGB,其他PBR通道使用线性空间导出

4.4 一些让我提高效率的独家技巧

分享几个我实际使用中总结出来的细节。第一,程序化纹理不要直接堆在默认图层上,而是单独建一个图层,并且把它设置成“填充图层”。这样你可以随时关闭这个图层看整体效果,对细微调色非常有用。第二,ArmorPaint支持直接拖拽图片进入视口,这可以用来做细节投影,简直不要太方便。比如我想在枪械模型上做一个编号标签,直接把做好的红色数字图拖到模型表面,配合锚点调整位置和角度就行。

第三点是关于版本更新的心态问题。ArmorPaint迭代速度很快,新版本有时会改变快捷键和界面布局,千万不要因为升级后界面变了就焦虑。去设置里看看有没有旧版UI选项,或者直接上手习惯新布局,通常新布局都是更合理的。第四,多去浏览项目自带的材质库和官方社区作品,里面有很多可复用的智能材质节点,能帮你快速补充细节。我刚接触时很喜欢自己从头搭材质,后来发现直接在库里找个接近的材质再修改,效率至少翻倍。

5. 我给新人的几条实用建议

如果你正准备开始用ArmorPaint,我个人建议从一个小场景开始,而不是一上来就导入高精度的角色模型。先从一块石头、一把小道具练起,把图层、蒙版、程序化纹理、导出这套流程跑通,再去挑战多材质、多对象的大型资产。毕竟贴图绘制工具的上手逻辑和雕刻软件是有差异的,小场景更容易让你理解通道、图层和节点之间的关系。

还有一点我自己踩过坑之后才明白:ArmorPaint虽然拥有实时PBR绘制能力,但它依然有它的边界。极复杂的智能材质网络、超高分辨率的UV填充,以及超大规模场景管理,这些更多还是要靠Substance Painter或者Mari这种重型工具来解决。ArmorPaint最擅长的是在一个明确可控的资产范围内,用轻量、高反馈的方式完成绘制。把这层定位找准了,你就能在每个项目里选对工具,避免跟软件较劲。

我的个人习惯是,在正式绘制之前把所有模型UV检查一遍,把材质命名和纹理集分组预定义好,这部分准备能帮我省下后面的数小时。这种经验听起来简单,但很多新人往往跳过,被各种贴图错位折磨到怀疑人生。ArmorPaint是一个值得投入时间研究的工具,它背后代表着开源工具在PCG和美术流程里越来越强的存在感。希望这篇文章能帮你在项目里真正用起来,少走一些我走过的弯路。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询