
1. 为什么我要把ArmorPaint塞进Blender工作流第一次接触ArmorPaint是在三年前的一个独立游戏项目里。当时团队只有三个人美术资源全靠我一个人扛Blender自带的纹理绘制功能勉强能用但图层管理约等于没有画到第三层就开始卡顿笔刷延迟肉眼可见。那会儿我试过不少方案导出UV到Photoshop手绘、用Substance Painter但被订阅费劝退、甚至动过用GIMP凑合的念头。直到在一个开源社区看到有人提到ArmorPaint——一款脱胎于Blender生态、用Haxe和Kha框架写的开源材质绘制工具抱着试试看的心态下载下来结果一直用到了现在。ArmorPaint的核心定位很明确给3D模型做PBR材质贴图绘制。你可以把它理解成一个轻量级的Substance Painter替代品但它的基因里带着Blender那种“够用就好、不搞花哨”的务实气质。它支持Windows、Linux、macOS甚至还有移动端版本安装包只有几十兆启动速度比我打开Photoshop还快。最关键的是它原生支持导入Blender的模型和UV布局导出贴图后直接丢回Blender的Principled BSDF节点就能用整个流程几乎没有摩擦。这篇文章适合谁看如果你是用Blender做游戏资产、独立动画或者3D打印模型的创作者手头预算有限但又需要一套靠谱的贴图绘制工具那ArmorPaint值得你花一个下午认真折腾。如果你已经是Substance Painter老手也可以把它当作备用方案——毕竟开源软件不怕断供项目文件永远在你自己的硬盘上。下面我会从整体设计思路、核心功能拆解、完整实操流程到踩坑记录把这款工具彻底讲透。2. ArmorPaint的整体设计与核心思路拆解2.1 脱胎于Blender生态的基因优势ArmorPaint和Blender的关系有点像Krita和Photoshop的关系——不是替代而是互补。它的开发者Lubos Lenco本身就是Blender社区的重度用户所以ArmorPaint在设计之初就考虑到了和Blender的协同问题。最直接的体现是模型导入环节你不需要把模型导出成FBX再导入ArmorPaint直接支持打开Blender的.blend文件UV布局、法线方向、材质槽信息全部保留。这一点在实际操作中省掉的麻烦比想象中大得多。我试过用其他贴图软件时光是处理Blender导出的FBX就经常遇到法线翻转、UV错位的问题每次都要在导入设置里反复调参数。ArmorPaint直接读.blend文件这些破事基本不会发生。而且它的坐标系和Blender完全一致Y轴向上不用担心模型躺倒或者镜像错误。另一个基因优势是节点系统的思路。ArmorPaint的材质节点虽然不像Blender那么复杂但基本逻辑是相通的你可以在图层上叠加不同的材质节点通过遮罩和混合模式控制每个节点的显示范围。如果你熟悉Blender的Shader Editor上手ArmorPaint的节点系统大概只需要十分钟。2.2 开源模式带来的实际好处开源这件事对工具类软件来说不只是“免费”那么简单。ArmorPaint的源码托管在GitHub上采用zlib许可证这意味着你可以自由使用、修改、分发甚至把它集成到自己的商业项目里。我实际感受到的好处有这么几个项目文件永不过期Substance Painter的.spp文件如果哪天软件停更了你打都打不开。ArmorPaint的项目文件是开放的JSON格式贴图数据以PNG形式存在项目文件夹里就算软件不更新了你手动也能把贴图捞出来。社区驱动的功能迭代ArmorPaint的论坛里用户可以直接提功能需求开发者响应速度很快。比如之前有人抱怨笔刷延迟下一个版本就加入了GPU加速的笔刷引擎。无订阅压力一次下载永久使用。对于独立开发者和小团队来说这笔账算下来很划算。当然开源也有代价。ArmorPaint的界面汉化不完整部分高级功能比如粒子笔刷的文档比较简陋遇到问题需要自己去GitHub的issue区翻答案。但总体来说利远大于弊。2.3 和Substance Painter的差异化定位很多人拿ArmorPaint和Substance Painter比我觉得这个比较本身就不太公平。Substance Painter是工业级标准材质库丰富、智能材质和智能遮罩功能强大适合大型团队协作。ArmorPaint更像是“个人工作室的瑞士军刀”——功能够用、启动快、资源占用低适合独立开发者快速迭代。具体差异我整理了一个表格方便你判断哪个更适合自己的场景对比维度ArmorPaintSubstance Painter授权模式开源免费zlib订阅制安装包大小约50MB约2GB启动速度3-5秒15-30秒Blender协同原生支持.blend导入需导出FBX/OBJ材质库基础PBR材质社区分享数千种智能材质学习曲线平缓Blender用户友好较陡功能繁多项目文件格式开放JSONPNG专有.spp格式移动端支持有iPad/Android无如果你的项目需要大量智能材质和复杂遮罩Substance Painter仍然是首选。但如果你做的是风格化游戏、独立动画或者个人练习ArmorPaint完全够用而且省下来的订阅费可以买好几顿火锅。3. 核心功能细节解析与实操要点3.1 图层系统比Blender强在哪Blender自带的纹理绘制最大的痛点就是图层管理太弱。你只能在Image Editor里新建一张图然后往上画想分层对不起得手动建多张图再在节点编辑器里混合。ArmorPaint的图层系统直接对标Photoshop每个图层可以独立设置混合模式、不透明度、遮罩而且支持图层组和调整图层。实际操作中我通常这样组织图层结构底层基础材质层填充模型的底色比如皮肤的肉色、金属的银灰色中间层细节层叠加纹理、磨损、污渍顶层高光/粗糙度调整层用遮罩控制不同区域的材质属性调整层全局的色相/饱和度/亮度调整方便统一色调每个图层都可以绑定一个遮罩遮罩本身也可以用笔刷绘制。这意味着你可以先画一个粗糙的遮罩然后用柔边笔刷修边缘整个过程非常直观。我试过在Blender里做同样的事需要手动建遮罩图、在节点编辑器里连来连去效率差了好几倍。注意ArmorPaint的图层混合模式里有一个“高度混合”专门用来处理法线贴图的叠加。如果你要画凹凸细节记得把法线层放在高度混合模式下否则法线方向会出错。3.2 笔刷引擎GPU加速带来的流畅体验ArmorPaint的笔刷引擎是我最满意的部分。它用GPU做实时渲染笔刷延迟基本感觉不到。我用的是一台五年前的老笔记本GTX 1050显卡在2048x2048的贴图上画细节笔刷跟手程度和纸绘差不多。笔刷设置里有几个参数值得重点关注流量控制单次笔触的颜料量流量低的时候适合画渐变流量高的时候适合画硬边。硬度控制笔刷边缘的柔和程度画磨损边缘时调到30%左右最自然。抖动开启后笔触会随机偏移适合画锈迹、污渍这类不规则纹理。压感如果你有数位板一定要开启压感笔触的粗细和流量会随压力变化画出来的线条生动很多。我常用的笔刷组合是这样的用一个硬度70%、流量50%的圆头笔刷画基础色然后用硬度20%、流量30%的笔刷叠加污渍最后用硬度90%、流量80%的笔刷勾边缘高光。这套组合基本能应付80%的贴图绘制需求。3.3 材质节点不写代码也能做复杂材质ArmorPaint的材质节点系统是它区别于普通绘画软件的核心。你可以在图层上添加材质节点每个节点代表一种材质效果比如金属、皮革、布料然后通过遮罩控制节点的显示范围。举个例子我要给一把剑画材质。剑刃是金属剑柄是皮革护手是黄铜。操作流程是这样的新建一个金属材质节点设置颜色为银灰色粗糙度0.2金属度1.0用遮罩把剑刃区域涂出来。新建一个皮革材质节点颜色深棕色粗糙度0.8金属度0.0用遮罩把剑柄区域涂出来。新建一个黄铜材质节点颜色金黄粗糙度0.4金属度1.0用遮罩把护手区域涂出来。在每个节点上再叠加一层污渍材质用低不透明度的遮罩随机涂抹增加真实感。整个过程不需要写一行代码所有操作都是可视化的。而且材质节点支持导出为贴图你可以把金属度、粗糙度、法线分别导出成独立的PNG直接丢进Blender的Principled BSDF节点里。提示ArmorPaint的材质节点支持“烘焙”功能。如果你在低模上画了细节可以烘焙到高模的法线贴图上这样在游戏引擎里就能用低模表现出高模的细节。烘焙设置里记得把“抗锯齿”开到4x否则边缘会有锯齿。3.4 导出与Blender的对接细节ArmorPaint的导出功能很灵活你可以选择导出单个通道比如只导出法线贴图也可以选择导出全部通道。导出的贴图格式支持PNG、JPEG和EXR我一般用PNG因为无损压缩而且Blender原生支持。导出设置里有一个“预设”功能你可以把常用的导出配置保存下来。比如我常用的预设是BaseColorsRGB、RoughnessLinear、MetallicLinear、NormalLinear、HeightLinear分辨率2048x2048格式PNG。每次导出只需要点一下预设省去了反复调参数的麻烦。导出后的贴图在Blender里的连接方式很简单打开Shader Editor新建一个Principled BSDF节点然后把BaseColor贴图连到Base ColorRoughness贴图连到RoughnessMetallic贴图连到MetallicNormal贴图连到Normal记得加一个Normal Map节点。如果你导出了Height贴图可以加一个Displacement节点做置换。我实测下来ArmorPaint导出的贴图和Blender的Principled BSDF节点兼容性很好颜色空间不会出错。唯一需要注意的是法线贴图的绿色通道方向ArmorPaint默认是OpenGL格式Y向上和Blender一致不需要翻转。4. 完整实操流程从Blender模型到最终贴图4.1 模型准备与UV展开在把模型导入ArmorPaint之前UV展开这一步必须在Blender里完成。ArmorPaint不会自动展UV它只读取模型现有的UV布局。所以你需要先在Blender里做好UV展开确保没有重叠的面UV岛之间的间距要留够否则画贴图的时候会出现接缝。我的UV展开流程是这样的在Blender里选中模型进入编辑模式按A全选所有面。按U键选择“智能UV投影”角度限制设为66度岛间距设为0.02。进入UV编辑器检查有没有重叠的UV岛。如果有手动调整位置。如果模型有对称结构可以用“镜像”功能只展一半UV另一半镜像过去节省贴图空间。最后给模型添加一个“UV网格”修改器检查UV布局是否合理。UV展开的质量直接影响后续贴图绘制的效率。我踩过的坑是UV岛太小画细节的时候笔刷稍微大一点就画到别的岛上了。所以UV岛的面积尽量占满0-1空间岛与岛之间的间距保持在2-3个像素以上。4.2 ArmorPaint项目创建与模型导入打开ArmorPaint点击“新建项目”设置贴图分辨率。我一般用2048x2048如果模型比较大或者需要画很多细节可以用4096x4096。但分辨率越高显存占用越大我的老笔记本用4096会有点卡所以2048是我的甜点值。导入模型有两种方式直接拖拽.blend文件到ArmorPaint窗口或者点击“导入模型”按钮选择文件。导入后ArmorPaint会自动识别模型的UV布局和材质槽。如果模型有多个材质槽ArmorPaint会为每个材质槽创建一个独立的图层组方便你分别绘制。导入后第一件事是检查模型有没有破面或者法线错误。ArmorPaint的视图里有一个“法线检查”模式开启后法线方向不对的面会显示为红色。如果有红色面回到Blender里修复法线再重新导入。4.3 基础材质填充与细节绘制基础材质填充我通常用“填充层”来做。选中一个图层点击“填充”按钮选择一种基础材质比如皮肤、金属、布料然后调整颜色和粗糙度。填充层的好处是它会自动覆盖整个UV区域不需要手动涂抹。细节绘制是耗时最长的环节。我的操作顺序是大色块用大号笔刷快速铺出各个区域的基础色不用太精细后面会覆盖。明暗关系用低流量的笔刷加深凹槽和阴影区域提亮凸起和高光区域。纹理叠加用带抖动的笔刷叠加噪点、划痕、污渍增加表面细节。边缘处理用硬边笔刷勾勒边缘的高光和磨损让模型更有立体感。整体调整最后用调整图层统一色调微调对比度和饱和度。每个环节之间记得保存项目。ArmorPaint的自动保存功能不太靠谱我遇到过两次崩溃导致半小时的工作白费。所以养成按CtrlS的习惯或者设置每5分钟自动保存一次。4.4 贴图导出与Blender材质连接画完贴图后点击“导出”按钮选择导出预设。如果你没有预设手动勾选需要导出的通道BaseColor、Roughness、Metallic、Normal、Height、Emissive、AO。分辨率保持和项目一致格式选PNG。导出后的贴图会保存在项目文件夹的“textures”子目录里。回到Blender打开Shader Editor按以下步骤连接删除默认的Principled BSDF节点新建一个。添加Image Texture节点加载BaseColor贴图连接到Principled BSDF的Base Color输入。再添加一个Image Texture节点加载Roughness贴图连接到Roughness输入。再添加一个Image Texture节点加载Metallic贴图连接到Metallic输入。再添加一个Image Texture节点加载Normal贴图添加一个Normal Map节点连接到Normal输入。如果需要置换效果添加一个Displacement节点加载Height贴图连接到Displacement输出。连接完成后在视图里切换到“材质预览”模式检查贴图显示是否正常。如果颜色偏暗或者偏亮检查颜色空间设置BaseColor用sRGB其他通道用Non-Color。注意ArmorPaint导出的法线贴图默认是OpenGL格式绿色通道Y向上Blender也是OpenGL格式所以不需要翻转绿色通道。如果你用的是Unreal Engine需要把绿色通道翻转一下。5. 常见问题与排查技巧实录5.1 模型导入后显示异常怎么办这是新手最常遇到的问题。模型导入ArmorPaint后可能出现全黑、全白、破面或者UV错位。排查思路如下问题现象可能原因解决方法模型全黑法线方向错误回Blender翻转法线模型全白材质槽丢失检查Blender里是否赋了材质UV错位UV重叠或超出0-1范围重新展UV确保UV在0-1内破面模型有非流形边在Blender里清理模型贴图模糊分辨率设置过低提高项目分辨率到2048以上我遇到最多的是法线问题。Blender里如果用了“镜像”修改器但没有应用导入ArmorPaint后镜像部分会显示异常。解决方法是在Blender里应用所有修改器然后再导出。5.2 笔刷延迟和卡顿的优化方案ArmorPaint虽然优化得不错但在低配电脑上画高分辨率贴图还是会卡。我总结了几条优化经验降低视图分辨率在“视图”菜单里把预览分辨率调到1024绘制流畅度会明显提升导出时仍然是全分辨率。关闭实时法线计算在“材质”设置里关闭“实时法线”笔刷延迟会降低。减少图层数量图层越多GPU计算量越大。把不需要的图层合并或者把不活跃的图层隐藏。更新显卡驱动ArmorPaint依赖GPU渲染驱动版本太旧会导致性能下降。使用SSD项目文件放在SSD上贴图读写速度会快很多。我实测下来在GTX 1050 16GB内存的配置上2048x2048贴图、10个图层以内笔刷延迟基本感觉不到。如果超过20个图层就开始有轻微延迟了。5.3 导出贴图颜色不对的排查导出贴图后在Blender里发现颜色偏暗或者偏亮通常是颜色空间设置的问题。ArmorPaint导出的BaseColor贴图是sRGB空间Roughness、Metallic、Normal、Height是Linear空间。在Blender里加载贴图时需要手动设置颜色空间BaseColorsRGBRoughnessNon-ColorMetallicNon-ColorNormalNon-ColorHeightNon-Color如果颜色还是不对检查ArmorPaint的导出设置里有没有开启“颜色空间转换”。有些版本默认关闭需要手动勾选。另一个常见问题是法线贴图的绿色通道方向。ArmorPaint默认是OpenGL格式Y向上Blender也是OpenGL格式所以不需要翻转。但如果你把贴图导入到Unreal Engine或者Unity默认DirectX格式Y-向下就需要翻转绿色通道。在ArmorPaint的导出设置里有一个“法线格式”选项可以切换OpenGL和DirectX。5.4 项目文件管理和备份策略ArmorPaint的项目文件是一个文件夹里面包含一个.json文件记录图层和材质信息和一个textures文件夹存放绘制的贴图。这个结构很透明但也很脆弱——如果你不小心删了textures文件夹里的某张图项目就打不开了。我的备份策略是每次保存项目后把整个项目文件夹复制一份到另一个硬盘。定期导出所有贴图到独立的文件夹即使项目文件损坏贴图还能用。用Git管理项目文件.json文件是文本格式可以版本控制但textures文件夹里的PNG文件不要用Git管理太占空间。如果项目比较大可以用“导出项目”功能把所有资源打包成一个.zip文件方便迁移。我踩过的坑是有一次硬盘故障项目文件夹损坏幸好之前导出过贴图重新建了一个项目把贴图导进去花了半小时恢复。从那以后我就养成了定期导出贴图的习惯。6. 我的实际使用体会和几个小技巧用ArmorPaint三年多最大的感受是它把“够用”这件事做到了极致。它没有Substance Painter那么多花哨的功能但核心的贴图绘制流程非常顺畅而且和Blender的协同几乎零摩擦。对于独立开发者来说时间就是金钱ArmorPaint省掉的导入导出和格式转换时间累积起来相当可观。最后分享几个我常用的小技巧用“对称绘制”功能画对称模型在笔刷设置里开启对称设置对称轴为X轴画左脸的时候右脸会自动同步效率翻倍。用“克隆笔刷”修接缝UV接缝处容易出现颜色断层用克隆笔刷按住Alt键取样从旁边区域复制颜色过来接缝就看不出来了。用“填充层”做底色不要手动涂抹底色用填充层一键填充省时省力。导出时用“批量导出”如果你有多个模型需要导出贴图用批量导出功能可以一次性处理不用一个个手动操作。关注GitHub的release页面ArmorPaint的更新频率不低新版本通常会修复bug和提升性能建议每隔几个月更新一次。如果你也在用Blender做3D创作手头又没有Substance Painter的预算ArmorPaint绝对值得一试。它可能不是最强大的贴图工具但在这个价位免费和这个体积50MB下它的表现已经超出了我的预期。