写材质贴图这几年,我换过不少工具:PS手绘没有3D视图实时反馈,Quixel Mixer功能不错但商业授权要求绕来绕去,Substance Painter个人版一年上千块咬咬牙也忍过。后来在一个Blender社区帖子里看到有人提ArmorPaint,说它是“开源界的SP”,还是Armory游戏引擎作者做的。我抱着试试看的心态下载,结果一个晚上就用它把一堆老模型的贴图全部重画了一遍。这软件不依赖Blender也能独立跑,但跟Blender的工作流又衔接得非常顺,项目可以直接导入导出,材质绘制全程实时预览PBR效果,性能轻到离谱。这篇文章我想把它从安装到导出、从图层逻辑到避坑经验完整拆一遍,给正在Blender里做模型又苦于贴图效率低的朋友一个靠谱的参考。
1. 它与Blender的真实关系与核心设计
1.1 不是“Blender游戏引擎”,而是Armory引擎的配套小兄弟
先纠个概念。标题里那句“脱胎于Blender游戏引擎”,在中文社区里传播得很广,但它其实是个误传。Blender本身并不是游戏引擎,ArmorPaint的真正来源是Armory 3D引擎——这个引擎的编辑器深度内嵌在Blender中,用户在Blender界面里完成场景搭建、逻辑编辑、打包发布,所以才会有“Blender游戏引擎”这种叫法。Armory引擎的作者叫Lubos Lenco,他为了补全引擎的美术工作流,开发了ArmorPaint作为配套材质绘制工具。它一开始和Armory引擎强绑定,后来因为太好用,作者干脆把它独立出来开源,现在依然保持活跃更新,代码完全开放。
这个定位对Blender用户来说意义很大:你在Blender里建模、展UV,模型导进ArmorPaint画贴图,再把贴图导回Blender接入Principled BSDF,整个过程一点不别扭。哪怕你完全不用Armory引擎,ArmorPaint也可以作为Substance Painter的免费替代品,单独配合Blender、Unity、Godot等任意工作流使用。它不需要联网验证,没有许可证弹窗,下载即用,这一点对学生党和小团队特别友好。
1.2 轻到不像图形软件的技术选型
ArmorPaint之所以启动快、操作跟手,核心在于它的渲染管线完全跑在GPU上,底层对接Vulkan、Metal、DirectX 12,用Rust作为宿主语言,内部脚本体使用Iron语言。传统2D绘图软件是“CPU算好像素再贴上画布”,每一步修改都要等待CPU处理,模型面数一高就卡;ArmorPaint的思路更像是“GPU实时驱动一块电子画布”,画每一笔时,着色器直接在显存里把光照、阴影、材质参数一起算出来,视图里立刻看到结果。你旋转模型、切换图层、调整滤镜,几乎没有等待感。
这种架构带来的直接好处有两个:一是安装包只有几十MB,打开工程秒级加载;二是滤镜也走GPU计算,比如高斯模糊、噪波、腐蚀这些操作在传统软件里要等进度条,在ArmorPaint里刷一下就好了。这对需要高频迭代材质效果的生产流程来说,效率提升不是一星半点。当然代价也有,它对显卡有一定要求,核显跑小物件还行,上4K画布加密集绘制就能明显感到掉帧。
2. 安装方式、硬件要求与Blender前期准备
2.1 三条获取途径
ArmorPaint的获取渠道不复杂,但不同渠道适合不同人群。
- GitHub官方仓库的Release页面:完全免费,提供Windows、Linux、macOS三个平台的压缩包,更新最及时。
- Steam商店:价格不高,本质是赞助开发,支持自动更新,介意GitHub下载慢的可以走这里。
- 部分Linux发行版的软件源:便利,但版本可能滞后,不太建议依赖。
我自己习惯用GitHub Release包。以Linux平台为例,下载带Linux后缀的压缩包后,打开终端进入下载目录,执行:
unzip ArmorPaint_Linux.zip sudo chmod +x ArmorPaint ./ArmorPaintWindows用户更简单,解压后直接双击exe即可。macOS用户第一次打开时需要在“系统设置-隐私与安全性”里允许应用运行,因为没有帮它做苹果开发者签名。另外需要注意一个细节,首次启动会在用户目录生成一个配置文件,用于记录画布分辨率、输出路径等偏好,不要随手删掉。
2.2 硬件门槛与驱动检查
ArmorPaint对显卡有硬性要求,因为它本质上是一个GPU驱动的工具。我整理了比较实际的参考标准,给还在犹豫配置的朋友做个对照。
| 部件 | 建议要求 | 说明 |
|---|---|---|
| 显卡 | NVIDIA 900系列/AMD GCN及以上 | 支持Vulkan或Metal的独显,旧卡容易启动黑屏 |
| 显存 | 4GB起步,8GB舒服 | 4K画布加多图层通常占用3-5GB显存 |
| 内存 | 16GB | 8GB也能跑,但加载大模型和多张4K贴图会紧张 |
| 驱动 | 保持最新 | NVIDIA用户尤其要更新,Linux用户额外确认装了Vulkan驱动 |
如果启动时闪退或黑屏,九成是Vulkan驱动问题。Windows下装一遍最新的显卡厂商驱动基本能解决;Linux下先确认系统装了mesa-vulkan-drivers或NVIDIA的Vulkan支持包。可以打开终端直接运行ArmorPaint看日志输出,它会提示检测到哪个GPU、哪个后端初始化失败,这个信息比乱猜管用得多。
2.3 Blender建模后的UV与导出规范
模型导入ArmorPaint之前,Blender这一侧的准备工作决定后边绘制能不能顺利进行。现实里很多人画到一半发现贴图花掉,多数不是ArmorPaint的问题,而是UV没处理对。
第一,UV尽量手动展,不要迷信智能UV投射。智能投射适合快速预览,但生成的UV岛形状和接缝位置完全随机,绘制时画笔跨接缝就会出现不自然的纹理断裂。手动展UV时,接缝放在模型的隐蔽处,比如刀背、底部、衣服内侧。展开后逐个uv岛检查分辨率比例,同区域面积与UV岛大小要匹配,否则贴图会“上密下疏”。
第二,检查有没有重叠的UV岛。UV重叠在绘制时会直接串色,比如刀柄的贴图画到刀刃上,排查非常痛苦。在Blender的UV Editing工作区,打开“显示重叠”选项,或者用菜单里的“UV-检查重叠”辅助确认。
第三,导出格式我建议用FBX或glTF,OBJ也可以但材质属性携带较少。导出前记得全选对象,Ctrl+A应用全部变换,尤其要应用缩放,否则模型导入ArmorPaint后可能出现烘焙法线方向错误。建模时避免太多四边以上的多边形面,ArmorPaint的绘制细分为三角面计算,ngon太多会在法线、接缝处出现异常笔迹。
第四,ArmorPaint支持“纹理集”,可以给模型的不同材质区域分配不同分辨率的贴图。所以导出前在Blender里给刀身、刀柄、皮绳分配不同的材质命名,导入ArmorPaint后就能按材质拆分成纹理集,刀身用4K、刀柄用2K,避免所有贴图挤在一张图里浪费显存。
3. 核心功能拆解:图层、画笔、滤镜和遮罩
3.1 新建工程与规格选择
打开ArmorPaint,第一步是新建工程。界面中间会出现模型加载区域,右侧有创建面板:材质类型默认是PBR,你可以在里面选金属/粗糙度工作流还是镜面反射工作流,图形学里常说PBR无非是这两套模型,ArmorPaint默认推荐金属/粗糙度,这也是Substance Painter和Quixel等主流工具的通用设置,游戏引擎里的贴图导入模板基本都认这套,所以保持默认即可。
接下来是画布分辨率。这是新手最容易失控的选项:一上来就选8K,显卡立刻开始喘,图层多了之后交互明显卡顿。我更建议按实际需求走:需要特写镜头的主要角色用4K,中远景道具用2K,土块石头这类小物件用1K足够。分辨率在项目创建后也可以在“图像”面板里重新修改,但改动后之前画的细节会重新采样,所以最好的习惯仍是开始前就想清楚输出规格。
工程还有个项目输出目录选项,导出贴图时默认写到这里。很多人最后找不到贴图文件,就是因为没注意这个路径。建议每次建工程时直接指定到一个明确的文件夹,比如E:\armorpaint_exports\{项目名}\,避免后续翻系统目录。
3.2 图层系统:把PS的思维搬到3D画布
ArmorPaint的图层逻辑跟Photoshop非常像,但有本质区别:它的每个图层可以是一个完整的材质通道集合,而不单是一张颜色图。也就是说,一个图层上可以同时管理基础色、粗糙度、金属度、法线、高度等通道,你可以单独点亮某个通道来绘制,也可以一起画。
在“图层”面板里,从上到下的堆叠顺序就是显示优先级。新建图层后,可以选择为这个图层分配“材质通道”,比如新建一个“锈迹层”,在层属性里勾选Base Color并设定一个橙褐色,再勾选粗糙度通道把数值拉到0.8左右,这样笔画过的地方不仅颜色变了,粗糙度也一起变化,非常接近现实中铁锈的质感。
图层还支持混合模式,Normal、Multiply、Add、Subtract这些PS用户再熟悉不过的选项都在。画基础色时多用Normal,叠加污渍、阴影效果时用Multiply,提亮或补充反射细节用Add。把材质叠加当成“图层混色+通道变化”的复合操作,是理解ArmorPaint绘制逻辑的关键。
材质堆栈里的滤镜层更像是“程序化生成器”。比如给整个模型加一个“曲率遮罩”滤镜,它会自动把模型棱边和凹陷区域算成蒙版信息,用于生成磨损边缘;加一个“环境光遮蔽”滤镜,可以通过烘焙AO来画阴影沉淀。这些滤镜不是烧录在贴图上的,而是实时计算的,这意味着你可以随时调整参数,导出时再统一烧录。
3.3 三种绘制方式与实用快捷键
ArmorPaint的绘制方式核心有三种,它们的用途完全不同。
- 直接颜色绘制:用画笔直接在模型表面涂色,适合补细节、画手绘花纹。画笔面板里可以调尺寸、流量、硬度、间距,还支持压感。
- 纹理笔刷:把一张外部图片作为笔画投射到模型表面,适合画布纹、划痕、泥点。笔刷纹理的Tile值可以控制重复密度,Y轴随机等参数可以做自然散布。
- 投影绘制:在相机方向把当前2D画笔或图像直接“砸”到模型上,类似贴花。注意投影绘制会沿当前视角拉伸,视角越偏,纹理变形越明显,所以画贴花时要尽量从正上方/正面绘制。
个人经验里最常用的几个操作:左键绘制,Ctrl+Z撤销;按住鼠标中键或Alt+左键旋转视角观察效果;在画布上按S调节笔刷大小,Shift+S调节笔刷硬度。更多精确参数在左侧笔刷面板里都有数字输入框,直接输入数值比拖滑条更可控。图层蒙版的编辑方式和绘制一样,区别在于用黑/白控制区域。如果蒙版全黑,怎么画都画不上内容,这是新手卡壳第一名的问题——排查时先点开图层确认蒙版是不是一片深黑。
3.4 滤镜:程序化纹理的瑞士军刀
滤镜在ArmorPaint里地位极高,它能生成复杂、自然、可随机化的纹理,完全替代手工一点点涂的效果。常用滤镜我直接按使用频率列一下:高斯模糊、噪波、腐蚀、色阶、UV遮罩、曲率遮罩、AO遮罩、边缘磨损。
磨损效果是PBR材质里出效果的大头。传统手涂要沿着棱边一笔笔擦,费时还容易不均匀;ArmorPaint里给图层添加一个“曲率遮罩(Curvature Mask)”,系统直接根据模型几何计算出凸边和凹边信息,生成白色区域覆盖棱边,再通过阈值参数控制磨损宽度,这样金属层在棱边处“露底”的效果几秒钟就出来了。如果要磨损显得自然,再加一个高斯模糊滤镜调整遮罩边缘软硬,不要让白线像刀切的一样生硬。
噪波滤镜的用途更广。给一张灰白色基础色图层加一个低频率噪波,再配合图层混合模式Multiply,可以给模型的底色制造不均匀斑驳感,这是任何纯色材质显得“真实”的底色手段。噪波参数里有种子值,每次随机都不一样,找到顺眼的可以固定种子然后继续调整其他参数。这个概念理解之后,你画贴图的思维会从“画一笔是一笔”升级成“设置规则让软件帮我生成”。
4. 实操案例:给一把战术短刀做全套PBR贴图
4.1 模型准备与导入
为了把流程串起来,我拿一把很基础的战术短刀做演示:刀身、刀柄、刀鞘三块区域,金属和非金属都有,足够覆盖PBR核心知识点。模型在Blender里做好后,手动展好UV,接缝放在刀脊中间和刀柄底部,导出FBX,勾选仅导出选中物体,应用变换。导入ArmorPaint时,打开一个4K工程,把FBX拖拽到窗口中央,几秒后模型就出现在视图中。
导入成功后第一件事,不是画,而是到“纹理集”面板确认系统按材质拆分的纹理集是否正确。刀鞘、刀柄如果有多个材质,默认会生成多个纹理集,每个纹理集可以单独指定分辨率。我在这里把刀身设4K,刀柄刀鞘设2K,全部展开后显卡负载也比较均衡。
4.2 金属与非金属的材质分区
在图层面板新建一个图层,命名为“刀身金属”,选择通道类型为“金属度”,用填充滤镜把金属度值填到1.0。此时刀身并没有变成闪亮的银色,因为你还缺“粗糙度”通道的配合。再新建图层“刀身粗糙度”,填充一个偏低的粗糙度,比如0.15,金属立刻有了点镜面感。PBR的本质就是用这两条通道决定反光强弱和散射方式。
接下来处理刀柄和刀鞘的非金属部分。新建图层“刀柄材质”,在通道里同时勾选Base Color、Roughness、Metalness。Base Color填一个暗棕色,粗糙度拉到0.8,金属度填0。刀鞘同理,但颜色可以偏军绿、粗糙度可设为0.6左右。最难处理的其实是“哪些像素属于刀柄”这个区域信息,ArmorPaint支持用蒙版(Mask)来定义图层的生效范围:选中刀柄材质图层,在杂项里找到遮罩(Mask),进入遮罩编辑,把模型其余部分涂成黑色。用相机正视角配合画笔,把遮罩涂好,这一步完成后,不同材质区域的PBR基础参数就各自独立了。
4.3 磨损、锈迹和污渍的层次处理
基础材质立住后,开始叠细节。我给刀身加“刀刃磨损”效果:新建图层,勾选金属度通道,金属度值与基础层保持1.0,此时不用填充整层,而是利用遮罩里的曲率蒙版自动包裹。做法是选中该图层,添加遮罩,选择“曲率遮罩”类型,勾选“凸边”,再把阈值调节到刚刚包裹上刀刃与刀脊边缘的程度。这个遮罩默认正好在模型棱角处产生白色,即磨损刮擦区域,和高斯模糊联用后自然很多。
锈迹的做法更灵活:新建图层“铁锈斑”,Base Color选暗橙褐,粗糙度0.9,金属度0。给它添加一个“噪波”滤镜,随机度调高一点,让橙褐色散布于刀身边缘和凹陷处,再使用混合模式Multiply控制显色浓度。如果觉得锈迹太多,可以把图层的不透明度降到40%左右;再给它加一个色阶滤镜,把噪波灰度分布压到极窄范围,锈迹就变成稀稀落落的斑点,而不是大片覆盖。
刀柄底部容易积灰。新建图层“泥垢”,Base Color选深咖啡灰,粗糙度1.0,不用全部铺满,直接选一个Alpha为随机颗粒的笔刷,在刀柄底端点扫几下,再把图层不透明度调到20%模拟薄薄一层灰,不需要精细控制,自然散落就行。这样一套下来,模型已经不再是单调的基础色,而是有材质层次、磨损语感和环境故事的道具了。
4.4 烘焙与回传Blender渲染
贴图画完之后,进入烘焙步骤。点击界面中的“烘焙”面板,ArmorPaint可以烘焙环境光遮蔽(AO)、曲率、世界法线等多张辅助贴图。烘焙前确认项目里已经勾选“世界空间”还是“切线空间”——导入Blender的法线贴图通常默认切线空间,如果选错,渲染后法线方向会整体偏移,模型表面像蒙了一层奇怪的光泽。烘焙分辨率可以和画布保持一致,4K足够。
烘焙完成后,点击“导出”面板,主要贴图通道基本以Base Color、Roughness、Metalness、Normal、AO为主。导出命名时推荐加统一前缀,比如sword_baseColor.png、sword_roughness.png,方便回到Blender里连接。注意导出前检查贴图色彩空间:Base Color是sRGB,Roughness、Metalness、Normal、AO这些数据贴图要设为Non-Color,否则颜色会被误解码,导致粗糙度、金属度看起来不对。
回到Blender新建一个Principled BSDF材质球,按节点顺序连接:BaseColor接到Base Color,Roughness接到Roughness,Metalness接到Metallic,Normal贴图经过一个Normal Map节点再接到Normal,AO可以接到Ambient Occlusion节点用来丰富接触阴影。切换Cycles或Eevee渲染,短刀完整的PBR质感立刻呈现。这时候你回看整个流程,会发现真正花时间的其实是材质分层思路,而不是软件操作。
5. 常见问题与排查技巧实录
5.1 启动、性能与显示异常
平时被问得最多的问题是“打开后黑屏”和“画起来卡”。黑屏基本是显卡API初始化失败,优先排查Vulkan驱动;如果电脑有多块显卡,比如笔记本核显加独显,ArmorPaint可能默认选到核显上,需要手动在图形设置里分配高性能GPU。还有少数N卡用户遇到“创建Vulkan实例失败”,多半是驱动停留在远古版本,更新后就正常了。
绘制卡顿的原因相对集中。第一是画布分辨率过高,4K配8G显存已经比较勉强,还要开多个滤镜和光影烘焙,掉帧是必然的;第二是模型面数太高,比如从ZBrush导出的千万面雕刻模型直接拉进来画,再轻的渲染管线也顶不住。建议绘制用的低模控制在三五十万面以内,法线等细节让烘焙解决。另外打开“视图”面板里的“降低分辨率显示”选项,可以在保证最终导出质量的前提下减轻交互压力。
5.2 绘制结果与导出文件问题
画笔画不上、导出的贴图找不到、法线贴图颜色诡异,这三个问题的成见都比较固定。
画笔画不上,检查顺序应该是:图层是否显示且锁定图标未开启、遮罩是否为全黑、当前绘制通道是否正确。有一次我画了半天没反应,才发现是在Metalness通道里画颜色,不看显示效果当然觉得“没画上”,其实数值已经变动了。
导出贴图找不到,直接打开工程创建时指定的输出目录,或者点击界面右上角的设置图标查看项目路径。如果修改过输出目录但没重新指定,导出文件还是会写到旧路径。还有一个技巧:导出面板里有“仅导出可见图层”选项,如果导出后发现贴图缺了某个通道,优先检查是不是图层被隐藏了。
法线贴图“发蓝发紫比较正常,发绿发红基本是色彩空间错误”。在Blender里把法线贴图的色彩空间从sRGB改成Non-Color,问题立即消失。另外如果法线效果太强烈,检查是否选错了烘焙空间,切线空间与对象空间不能混用。
5.3 避坑经验速查
| 情况 | 原因 | 处理建议 |
|---|---|---|
| 画笔跨UV接缝画不连续 | UV岛之间没有统一流向 | 回Blender重新整理UV方向,尽量对齐 |
| 烘焙AO全黑 | 遮罩或图层隐藏 | 先确认图层可见性,再烘焙前点击“显示所有” |
| 导出后贴图模糊 | 画布分辨率低于预期 | 新建工程时确认分辨率,后期放大特写建议重画或烘焙 |
| 模型表面出现斑驳亮块 | 金属度贴图误连接为sRGB | 检查金属度、粗糙度色彩空间是否为Non-Color |
| 滤镜参数改了没反应 | 滤镜效果未烧录到图层 | 滤镜是实时计算层,导出时会烧录,视图中应实时生效 |
6. 与Substance Painter的选型对比及进阶建议
6.1 核心价格与功能对比
开源工具和商业工具的对比总是绕不开“功能差距”这个词。ArmorPaint名义上是Substance Painter的免费替代,但两者定位其实不完全相同。Substance Painter深耕行业多年,智能材质、粒子笔刷、全套滤镜库、云素材生态都极其成熟,适合商业工作室追求效率和统一规范;ArmorPaint则胜在轻量、免费、源码可控,底层逻辑清晰,对个人开发者、学生和独立游戏团队特别友好。
| 对比维度 | ArmorPaint | Substance Painter |
|---|---|---|
| 价格 | 开源免费 | 订阅制付费 |
| 渲染反馈 | GPU实时,快 | GPU实时,较快 |
| 图层/遮罩 | 完整 | 完整,更多模板 |
| 智能材质库 | 较少,需自制 | 丰富 |
| Alpha资源 | 可导入外部笔刷 | 内置大量素材 |
| 扩展性 | 源码开源可改 | 封闭 |
直观感受是:每天画一两小时的个人作者,ArmorPaint完全够用;如果哪天进团队用SP,ArmorPaint培养出来的PBR分层和遮罩思维也能无缝迁移。
6.2 作为Blender生产管线一环的位置
ArmorPaint不是孤岛工具,它在Blender工作流里的位置非常灵活。最常见的形式是:Blender建模展UV,导出FBX到ArmorPaint画贴图烘焙AO,导出全部贴图,回到Blender接PBR节点循环渲染;如果需要进Unity或Godot,贴图导出后在引擎里按模板接好即可。因为ArmorPaint原生与Armory引擎同源,整个Armory引擎生产流程比一般引擎更顺滑。
另一个实用变体是配合雕刻软件用:在ZBrush或Blender雕刻高模,低模重新拓扑展UV,导入ArmorPaint后用高模法线作为环境空间信息,烘焙到低模的Normal通道,之后直接在低模上画贴图。ArmorPaint不挑法线贴图来源,只要是标准PNG/EXR格式就行。这意味着你可以把“雕刻细节”和“贴图细节”分开处理,互不干扰。
6.3 进阶玩法与学习资源
不要停留在“会用”层面,ArmorPaint这个开源项目的学习天花板其实很高。源码开放意味着你可以修改渲染管线、提交插件、自定义滤镜,甚至拿它来教学GPU编程。对于程序员同学,GitHub仓库是个绝佳的Rust+GPU应用案例,画一层滤镜、改一版着色器就能直接看到视觉反馈,比空读图形学理论来得直观。
如果想深入材质制作,建议补三类基础:一是PBR工作流里的“线性空间”与“sRGB空间”的区别,这直接决定你调色和贴图方向是否准确;二是图层混合模式与遮罩的数学含义,Multiply是相乘,Add是相加,理解后就能推测一个滤镜出来的效果;三是程序化纹理思维,多用噪波、曲率、色阶组合生成细节,少用手工硬画,反复试几次你会发现手绘的时间大幅压缩。
我自己在这套流程里体会最深的,是“先想清楚遮罩再动手”这句话。材质编辑器养成的习惯,和不带遮罩直接铺色画到底,出来的效果差距极大。如果你刚接触ArmorPaint,我建议拿一个面数不高的低模,从烘焙AO开始,完整走一遍这个案例的流程,Debug几个晚上,比看十篇教程都管用。