
1. ArmorPaint 1.0 到底是个什么东西ArmorPaint 这个名字如果你不是经常混 3D 纹理绘制圈子可能听起来有点陌生。但如果你做过游戏资产、独立动画、或者给模型画过贴图那你大概率在某个论坛或者视频里见过它——一个开源、轻量、支持 GPU 加速的 3D 纹理绘制工具。从最早的 0.x 版本到现在它已经迭代了好几年社区里一直有人在用也一直有人在等一个“正式版”。1.0 这个版本号对任何软件来说都是一个心理门槛意味着作者认为核心功能已经稳定API 不再随便大改可以拿来干活了。ArmorPaint 解决的核心问题很具体传统上给 3D 模型画贴图要么用 Substance Painter 这种商业软件功能强但订阅费不便宜要么用 Blender 自带的纹理绘制免费但性能和笔刷体验在某些场景下不够顺手。ArmorPaint 走的是中间路线——开源免费但专门为纹理绘制做了 GPU 优化笔刷响应快支持 PBR 材质通道能直接导出到主流引擎。它适合谁独立开发者、学生、小型工作室以及任何想在不增加预算的前提下把模型贴图做得像样的人。我第一次接触 ArmorPaint 是在一个独立游戏项目里当时团队预算紧Substance 的订阅费摊到每个人头上有点肉疼。试了一圈开源方案之后ArmorPaint 的笔刷延迟和图层混合模式是最接近商业软件的。当然它也有自己的脾气比如早期版本对显卡驱动比较挑导入高模的时候偶尔会崩。1.0 版本出来之后我花了两天时间把之前项目里的几个资产重新走了一遍流程下面就把我看到的、试到的、踩到的都摊开来讲。2. 1.0 版本的核心变化与设计思路2.1 从 0.x 到 1.0作者到底改了什么如果你用过 0.9 附近的版本打开 1.0 的第一感觉是“稳了”。这个稳不是界面变漂亮了而是操作逻辑不再有那种半成品的毛躁感。具体来说1.0 在几个关键点上做了收束节点系统的稳定性ArmorPaint 的材质节点系统在 0.x 后期已经成型但节点图稍微复杂一点就容易出现连接丢失或者预览不刷新的问题。1.0 把节点求值的顺序重新梳理了一遍我试了一个大概四十多个节点的材质图反复切换图层和通道没有出现之前那种预览卡死的情况。笔刷引擎的延迟优化这是最直观的。在 0.x 里用大尺寸笔刷在 4K 贴图上画的时候能感觉到笔尖和光标之间有肉眼可见的滞后。1.0 把笔刷的绘制指令做了批处理同样的硬件条件下延迟大概降低了三到四成。我用一块中端显卡具体型号就不说了免得像带货测试2048 尺寸的笔刷在 4K 画布上基本能做到跟手。导出流程的简化以前导出贴图要手动配置每个通道的打包方式1.0 内置了针对 Unity、Unreal、Godot 的预设。你选好引擎它自动把粗糙度、金属度、环境光遮蔽这些通道按对应规则塞进 RGB 通道里。这个改动看起来小但实际干活的时候能省不少重复劳动。作者在发布说明里提到1.0 的目标不是加一堆新功能而是把已有的功能做扎实。这个思路我认同。开源工具最怕的就是功能堆得满天飞但每个都半吊子。ArmorPaint 1.0 的选择是砍掉一些实验性的分支把资源集中在纹理绘制的主流程上。2.2 为什么它选择 GPU 加速而不是 CPU这个问题涉及到 ArmorPaint 的底层架构。纹理绘制本质上是对一张或多张二维图像做实时像素操作每一次笔刷落下都要计算笔刷范围内每个像素的新颜色值然后更新贴图。如果用 CPU 来做好处是兼容性好坏处是并行能力有限尤其在高分辨率贴图上CPU 的吞吐量很快就到瓶颈。ArmorPaint 从早期就绑定了 GPU 渲染管线用计算着色器来处理笔刷的混合和图层合成。这样做的好处是显卡的并行计算单元天生适合这种“对一大块像素做同样运算”的任务。代价是对显卡驱动和显存有一定要求。1.0 版本在显存管理上做了改进官方文档里建议至少 4GB 显存但我实测 2GB 的卡在 2K 贴图下也能跑只是图层多了会开始交换到内存速度下降明显。这里有个经验如果你打算用 ArmorPaint 做 4K 以上的贴图显存是比核心频率更重要的指标。我试过同一张图在两张卡上跑一张核心快但显存小一张核心慢但显存大结果大显存的那张在多层绘制时反而更流畅。原因很简单显存不够的时候驱动会把不活跃的纹理页换出每次笔刷落到被换出的区域就要重新加载那个卡顿是间歇性的比持续低帧率更难受。2.3 开源协议与商业使用的边界ArmorPaint 采用的是开源协议具体条款在仓库里写得很清楚。对于独立开发者来说最关心的是能不能用来做商业项目。答案是肯定的你可以用它绘制商业游戏的贴图导出的资产归你所有。但如果你修改了 ArmorPaint 的源代码并重新分发那就要遵守对应的开源条款。我见过有人在论坛里问“用 ArmorPaint 做的贴图要不要标注来源”这个不需要。贴图是你自己画的工具只是工具。就像你用 Blender 建模模型版权是你的不会因为 Blender 是开源的就要求你开源模型。这一点可以放心。不过有一点要注意ArmorPaint 的某些版本在官方渠道是付费下载的但源代码在仓库里可以自行编译。付费买的是编译好的二进制包和后续更新不是版权。如果你愿意自己折腾编译环境从源码构建完全合法。我自己是买了官方包的原因很简单——编译一次要装一堆依赖时间成本划不来而且官方包在显卡兼容性上做过测试省心。3. 核心功能拆解与实操要点3.1 图层系统和 Photoshop 像但多了材质通道ArmorPaint 的图层概念跟 Photoshop 很像你可以新建图层、调整不透明度、改混合模式、加蒙版。但它比 PS 多了一层维度每个图层可以绑定到特定的材质通道上。比如你新建一个图层可以选择它只影响 Base Color或者只影响 Roughness或者同时影响多个通道。这个设计的好处是你可以在同一个图层堆栈里管理所有通道的绘制而不需要像早期的一些工具那样每个通道单独开一个文件。实际操作中我习惯把 Base Color 和 Roughness 放在同一个图层组里因为这两个通道经常需要联动——比如画一块磨损的金属颜色变暗的同时粗糙度要升高放在一起调整起来直观。注意ArmorPaint 的图层混合模式里有一个叫“Pass Through”的选项它的行为跟 Photoshop 的“穿透”类似但作用范围是当前图层组。如果你发现某个图层组的效果不对先检查这个选项是不是被误开了。3.2 笔刷引擎参数多但常用的就那几个ArmorPaint 的笔刷设置面板乍一看挺唬人什么 Jitter、Scatter、Flow、Alpha Roll一堆滑块。但实际干活的时候你真正需要频繁调的也就三四个Radius笔刷半径这个不用多说。Hardness边缘硬度。画硬表面的时候拉到 0.8 以上画有机体的时候降到 0.3 左右。Flow每次笔刷落下时施加的强度。这个和 Opacity 的区别在于Flow 是累积的你按住不动它会一直叠加Opacity 是单次的上限。Alpha笔刷形状。ArmorPaint 内置了一些基础形状也支持导入自定义的灰度图作为笔刷。我个人的习惯是把 Flow 设在 0.3 到 0.5 之间然后用笔刷的叠加次数来控制最终效果。这样比一次性给高 Flow 更容易控制过渡。另外1.0 版本新增了一个“笔刷预设”功能你可以把调好的参数存下来下次直接调用。这个功能在画同一个项目的多个资产时特别有用能保证笔触风格一致。3.3 材质节点什么时候该用什么时候不该用ArmorPaint 的节点系统是用来做程序化材质的。你可以用节点生成噪声、渐变、遮罩然后把这些信号接到图层的蒙版或者颜色上。这个功能很强大但我的经验是不要为了用而用。如果你只是给一个模型画手绘风格的贴图那图层加笔刷就够了节点反而会增加复杂度。节点适合的场景是你需要生成一些有规律的纹理比如砖墙的缝隙、金属的划痕、布料的编织纹路。这些用笔刷画不是不行但节点做出来的更规整而且改参数就能调整密度和方向。我试过用节点做一个“边缘磨损”的效果用曲率节点提取模型的边缘然后接一个噪声节点打散最后连到蒙版上。这样模型凸起的边缘会自动出现磨损凹下去的地方保持干净。这个效果如果用手画得对着模型一点点描节点几秒钟就出来了。提示ArmorPaint 的节点预览是实时计算的但如果你发现调整参数时预览更新有延迟可以按一下空格键强制刷新。这个快捷键在官方文档里没写是我自己试出来的。3.4 导出与引擎对接通道打包的坑导出贴图是最后一步也是最容易出问题的一步。ArmorPaint 1.0 内置了 Unity、Unreal、Godot 的导出预设但预设不是万能的。不同引擎对通道打包的约定不一样比如 Unity 的 Standard Shader 要求 Metallic 放在 Smoothness 的 Alpha 通道里而 Unreal 是分开的。我踩过的一个坑是用 Unity 预设导出之后发现金属度不对。排查了半天发现是 ArmorPaint 的预设里把 Metallic 和 Smoothness 打包到了同一张图的 R 和 A 通道但我的材质里 Smoothness 是反的我用了 Roughness 的数值。解决办法是在导出前把 Roughness 节点反相一下或者在引擎里把 Smoothness 的输入改成 1 减去 Roughness。这个问题的根源在于不同软件对“粗糙度”和“光滑度”的定义是相反的。ArmorPaint 内部用的是 RoughnessUnity 的 Standard Shader 用的是 Smoothness。导出预设虽然做了转换但如果你在节点里手动改了数值预设的转换就可能被覆盖。所以导出之后最好在引擎里快速预览一下确认各个通道的表现符合预期。4. 完整实操流程从一个模型到最终贴图4.1 准备工作模型导入前的检查清单在把模型拖进 ArmorPaint 之前有几件事必须先做否则后面会出各种莫名其妙的问题检查 UVArmorPaint 依赖 UV 来定位贴图。如果模型的 UV 有重叠画上去的笔触会出现在多个地方。在 Blender 里可以用 UV 检查工具看一下重叠区域尽量展平。确认法线方向法线反了的模型在 ArmorPaint 里会显示成黑色或者光照异常。导入前在建模软件里统一法线。合并材质ArmorPaint 一个项目对应一套贴图。如果模型有多个材质槽要么在建模软件里合并成一个要么在 ArmorPaint 里分别处理。我一般选择合并因为分多个项目管理起来麻烦。导出格式ArmorPaint 支持 OBJ 和 FBX。FBX 对骨骼和动画的支持更好但如果你只是静态模型OBJ 更轻量。我一般用 OBJ导入速度快。注意模型的面数不要太高。ArmorPaint 在绘制的时候会实时显示模型面数太高会拖慢视口。如果模型是雕刻出来的高模先在建模软件里减面或者用法线贴图烘焙不要直接把几百万面的模型丢进去。4.2 新建项目与基础材质设置打开 ArmorPaint新建项目选择导入模型。导入之后你会看到一个默认的材质球。第一步是设置基础材质参数Base Color给一个中间灰方便后面叠加颜色。Roughness根据材质类型定。金属一般 0.2 到 0.4非金属 0.5 到 0.8。Metallic金属材质给 1非金属给 0。不要给中间值除非你在做特殊效果。Normal保持默认的平面法线后面用笔刷或者节点加细节。这些参数可以在右侧的材质面板里调也可以直接连节点。我习惯先在面板里给个大概然后用节点微调。4.3 分层绘制从大色块到细节绘制顺序很重要。我的习惯是底层用大笔刷铺基础色。这个阶段不用管细节把模型的各个区域区分开就行。比如金属部分给深灰皮革部分给棕色。中层加纹理和变化。用噪声笔刷或者节点生成的纹理给表面增加一些不均匀感。这一步的目的是打破纯色的单调。上层画细节。比如边缘的磨损、角落的污渍、表面的划痕。这些用小的硬笔刷配合蒙版来控制范围。调整层最后加一些全局的调整比如整体的对比度、饱和度或者加一层环境光遮蔽的叠加。每个阶段之间我会按 CtrlS 保存一下。ArmorPaint 的自动保存不是实时的崩溃了可能会丢几步操作。这个习惯是从早期版本养成的虽然 1.0 稳定了很多但多按一下不亏。4.4 导出贴图与引擎验证画完之后选择导出。ArmorPaint 会把你用到的通道导出成单独的 PNG 或者打包成一张图。我一般导出 2K 或 4K 的 PNG格式选 8 位因为大多数引擎的贴图导入都支持 8 位16 位虽然精度高但文件大而且有些引擎不支持。导出之后在引擎里新建材质把贴图连上去。重点检查几个地方法线贴图确认引擎的法线贴图设置是“Normal Map”而不是“Default”。有些引擎默认把法线贴图当普通贴图处理光照会不对。金属度/粗糙度确认通道对应关系。如果引擎要求 Smoothness记得把 Roughness 反相。UV 缩放如果贴图在模型上显得太密或者太疏调整材质的 UV Tiling 参数。我在 Unity 里验证的时候习惯用一个中性光照的场景不要用太花哨的环境光否则不容易判断贴图本身的颜色和粗糙度是否正确。5. 常见问题与排查技巧实录5.1 笔刷延迟突然变高这是最常见的问题。原因可能有几个现象可能原因排查方法笔刷延迟持续高显存不足降低贴图分辨率或减少图层数笔刷延迟间歇性高显卡驱动问题更新驱动或切换独显/核显笔刷延迟只在特定图层出现该图层的节点计算量大简化节点图或将该图层栅格化笔刷延迟在模型旋转时出现模型面数过高在建模软件中减面我遇到过一次笔刷延迟突然从跟手变成半秒的滞后。查了半天发现是后台在跑一个视频渲染占用了 GPU。所以排查的时候先看看有没有其他程序在抢显卡资源。5.2 导出的贴图在引擎里颜色不对这个问题通常是色彩空间引起的。ArmorPaint 默认在 sRGB 色彩空间下工作但有些引擎对 Base Color 和法线贴图的色彩空间要求不同。Base Color 一般是 sRGB法线贴图是 Linear。如果引擎里法线贴图显示成偏蓝或者偏紫检查一下导入设置里的色彩空间选项。另一个可能是通道打包的顺序错了。比如你把 Roughness 导到了 G 通道但引擎读的是 B 通道。解决办法是重新导出或者在引擎里用通道拆分节点手动调整。5.3 节点图连接丢失1.0 版本虽然稳定了很多但在极端情况下比如同时打开多个项目或者节点图特别大的时候还是有可能出现连接丢失。我的应对策略是节点图不要画得太散尽量用 Frame 分组。定期保存并且保存多个版本。如果发现连接丢了先撤销一步很多时候撤销再重做就能恢复。提示ArmorPaint 的撤销历史默认是 20 步可以在设置里调高。但调太高会占内存我一般设成 50 步够用了。5.4 模型导入后显示全黑这个一般是法线方向反了。在建模软件里选中模型重新计算法线然后重新导出。如果法线没问题检查一下模型的缩放是不是负数。负缩放会导致面片翻转ArmorPaint 渲染出来就是黑的。还有一种可能是模型的材质槽里有多个材质但 ArmorPaint 只读了第一个。解决办法是在建模软件里合并材质或者删掉多余的材质槽。6. 和其他纹理工具的对比与选择建议6.1 ArmorPaint vs Substance Painter这是最常被拿来比较的两个。Substance Painter 功能更全尤其是智能材质和智能蒙版能快速出效果。但它是订阅制长期用下来成本不低。ArmorPaint 免费核心的绘制功能都有但智能材质这块要靠自己搭节点。我的建议是如果你靠这个吃饭每天都要画贴图Substance 的效率优势值那个钱。如果你是业余项目、学生作业、或者预算有限的独立开发ArmorPaint 完全够用而且画出来的东西不差。6.2 ArmorPaint vs Blender 纹理绘制Blender 自带的纹理绘制这几年进步很大尤其是 2.8 之后。但它的笔刷引擎在 4K 贴图上的延迟还是比 ArmorPaint 明显。另外 Blender 的图层系统是后来加的功能上不如 ArmorPaint 成熟。如果你已经在 Blender 里做建模和渲染不想切换软件那用 Blender 画也行。但如果你对笔刷手感有要求或者需要更复杂的图层混合ArmorPaint 是更好的选择。6.3 ArmorPaint vs Quixel MixerQuixel Mixer 更偏向材质混合和扫描资产绘制功能相对弱一些。它适合做环境材质比如地面、墙壁但不太适合给角色或者道具画细节。ArmorPaint 的定位更纯粹就是纹理绘制所以在这块更专注。7. 硬件配置与性能调优经验7.1 显卡选择显存比核心重要前面提过ArmorPaint 对显存比较敏感。如果你打算长期用建议显卡至少 6GB 显存。4GB 能跑 2K 贴图但 4K 就会比较吃力。核心频率的影响反而没那么大因为笔刷计算是并行度很高的任务中端卡和高端卡的差距在体感上不明显。7.2 内存与硬盘内存建议 16GB 起步。ArmorPaint 本身占的不多但如果你同时开建模软件和引擎内存就容易吃紧。硬盘最好是 SSD因为贴图的读写比较频繁机械硬盘在保存大项目的时候会卡。7.3 软件设置里的性能选项ArmorPaint 的设置里有一个“Undo Steps”和“Texture Cache Size”。Undo Steps 前面说了50 步左右。Texture Cache Size 是控制显存里缓存多少贴图数据的默认值一般够用但如果你显存大可以调高一点减少换入换出。还有一个“VSync”选项建议关掉。垂直同步会限制帧率虽然能减少撕裂但会增加输入延迟。画贴图的时候跟手比画面完整更重要。8. 我个人的使用体会与后续扩展思路ArmorPaint 1.0 给我的感觉是它终于从一个“有潜力的实验品”变成了“可以放心推荐给别人的工具”。当然它还有不完美的地方比如节点系统的文档比较少很多功能要靠自己试比如导出预设虽然方便但遇到非标准流程还是得手动调。但这些不影响它成为一个值得放进工具箱的软件。后续我打算试试用它配合几何节点做程序化的磨损效果把 ArmorPaint 的节点输出和 Blender 的几何节点联动起来。另外社区里有人在开发 ArmorPaint 的插件可以自动生成一些常见的材质比如皮革、木材、金属这些如果成熟了能进一步降低上手门槛。如果你之前因为 0.x 版本的稳定性问题犹豫过1.0 值得重新试一次。如果你从来没接触过纹理绘制ArmorPaint 也是一个不错的起点——免费、开源、社区活跃画错了大不了重来没有订阅费的压力。