资讯动态

ArmorPaint实战指南:GPU实时绘制与节点材质的PBR贴图工作流

发布时间:2026/9/15 13:53:11 来源:尧图企业网站定制
如果你是一位经常做游戏道具或场景贴图的建模师大概率已经听过“armorpaint”这个关键词的讨论热度。作为一款开源的3D纹理绘制软件ArmorPaint硬是在Substance Painter几乎垄断的领域里撕开了一道口子——GPU实时绘制、PBR材质支持、节点化图层、几乎零上手门槛。我最早是在给独立游戏项目做一批风格化道具时接触它的当时只是抱着“试试这个免费替代品”的心态结果用了两天就回不去了。这篇文章不打算写使用手册而是把我从安装、初始化、图层逻辑到节点材质和导出整个实际用下来最值得说的东西摊开讲清楚。如果你正纠结要不要把工作流切过来这篇能帮你省不少试错时间。1. 为什么我会把ArmorPaint当成主力贴图工具1.1 它解决的其实是传统手绘流程的慢性痛我过去给模型上贴图最磨人的不是画而是“看不见”。在Blender里一边看着模型一边切换到UV编辑器里涂色眼睛在3D视图和2D图像之间来回切换涂两笔就要在脑海里反算UV方向稍不留神就在脸上画出一道横跨鼻梁的颜色。用久了肩膀和眼睛都累效率也提不上去。ArmorPaint的绘制逻辑完全换了一套你直接在3D模型表面点一下左键笔触就实时出现在模型上视口默认就带PBR光照金属边缘、粗糙度变化都是所见即所得。它的实时渲染核心来自Armory引擎利用GPU做纹理计算刷一笔下去立刻更新到材质层上。这种“直接在雕塑上画画”的体感第一次用的时候真的会感叹一句这才是建模师需要的贴图方式。它并不是什么低配方案。对于独立制作者和高模烘培流程来说ArmorPaint的PBR通道支持很完整Base Color基础颜色、Roughness粗糙度、Metallic金属度、Height高度、Normal法线、AO环境光遮蔽都能单独绘制或组合导出。这意味着你完全可以在里面完成一整套次时代材质制作。1.2 对比闭源方案功能密度与学习成本不成正比如果你正在Substance Painter和ArmorPaint之间犹豫我把自己体验后总结的差异放出来你可以直接对照对比维度ArmorPaintSubstance Painter价格开源免费可赞助支持开发订阅制或永久授权价格不低实时性能GPU直接交互视口反馈非常流畅引擎成熟高画质下对显卡要求也不低图层与遮罩支持智能遮罩、滤镜图层、节点图智能遮罩体系非常强大生态成熟PBR通道完整支持完整支持外部集成Blender互通、UDIM支持各类DCC和引擎集成完善学习门槛逻辑直观项目结构简单功能太多新手容易迷失Substance Painter的自动化材质生成和庞大的资源库确实方便但如果你只是画简单到中复杂度的贴图或者想要一个启动快、不占内存、没有账号束缚的替代方案ArmorPaint足够撑起整个流程。关键是它把“节点材质”这种听起来很难的东西做得很轻哪怕是刚入行的美术也能看懂。2. 打开软件之后的那些界面细节先搞清楚图层面板和视口再动手2.1 项目初始化到底选哪种纹理集第一次启动ArmorPaint弹出的启动界面会让你选择项目模板或者直接新建空白项目。这一步我建议不要跳过直接用默认先想清楚你要做的是PBR全通道材质还是仅颜色贴图。新建项目的面板里有设备的配置项但真正影响后面绘制体验的是“纹理尺寸”设置。在右下角的纹理设置里默认会给你生成Base Color、Metallic、Roughness、Height、Normal、AO这六个通道每个通道都有独立的尺寸选项。官方建议根据目标平台选择4K或者8K但这里我踩过一个大坑如果你的显卡显存不到8G全通道都开到8K之后视口会有明显卡顿而且笔刷响应会变慢。所以我的建议是平时绘制用4K最后输出时再重新导出为8K如果有需要的话。项目工作时有两种坐标模式一种是UV贴图模式另一种是三平面投影模式。UV模式要求模型必须有展好的UV绘制时笔触完全贴图UV分布适合做精细布局。但有些模型UV拉伸特别严重画上去笔触会被拉成椭圆形非常影响手感。三平面投影模式则完全绕开UV它按世界坐标三个轴向各投射一次纹理并混合显示在表面上直接刷不用管UV。缺点是纹理精度受投影角度影响在曲面凹槽处容易发虚。我的习惯是硬表面用UV模式保证精度有机体或者大体积地形用三平面模式快速铺底色之后再转换到UV模式细化。2.2 视口导航和笔刷半径我第一次用就被这两个细节绊住了ArmorPaint的视口操作跟Blender接近鼠标右键旋转视图中键平移滚轮缩放。但有一个坑是它默认的鼠标左键在模型上画的时候总会同时选中笔刷下的模型面并高亮显示很多新手会以为这是“选中了面不小心把面删了”其实不是——这只是为了让你看清当前笔刷影响范围。左手捏着Alt键加左键拖动也可以临时启动物理视角旋转跟Maya里的Alt左键习惯一致。笔刷半径的快捷键是[和]跟Blender一样这个很简单。但ArmorPaint默认没有“按住Ctrl左键吸色”这种功能我翻遍了设置才发现吸色要从顶部工具栏的吸管图标点选或者按快捷键E对不是I。这一下打乱了我之前在Blender里的肌肉记忆。还有一个细节左上角的笔刷面板里有个“Cursor”开关打开之后视口会显示笔刷形状和角度预览这个对描细节非常重要。如果你的笔触总是画歪先看看是不是这里没开。3. 从图层堆叠到智能遮罩的实战工作流3.1 图层类型颜色、填充、滤镜、遮罩的分工ArmorPaint的图层面板在界面右侧初看和Photoshop非常像但它和PS最大的不同是每个图层本质上是一个“通道组”你可以对这个图层只画颜色也可以只画粗糙度或者金属度。在图层上右键你可以切换图层的类型比较常用的有Paint Layer绘制图层正常的笔刷绘制层颜色和材质通道一起记录。Color Layer颜色图层不包含材质属性只负责颜色和Alpha适合先铺色再叠加粗糙度。Fill Layer填充图层用一种纯色或者渐变把整个图层通道填满类似PS的纯色填充层。Filter Layer滤镜图层对下层内容做模糊、锐化、色调映射等滤镜处理相当于PS里的滤镜层。Mask Layer遮罩图层可以附加在任意图层下方用于控制该图层的可见区域。遮罩功能我必须好好说它是整个软件里性价比最高的功能。比如我想做一个“金属边缘磨损”效果——不需要手动一笔一笔擦只需要给底层的金属材质层添加一个遮罩然后在遮罩属性里选择“Height”高度或“Curvature”曲率作为生成源软件会自动根据模型表面的凸起和曲率生成边缘磨损区域。这个原理类似于计算机视觉里的边缘检测通过计算相邻像素的法线或高度差值把高曲率区域筛选出来效果比手画要自然得多。3.2 一个做旧化材质的标准操作路径我现在做旧化道具基本有一套固定的路径先建立Base Color填充图层铺上大底色。在这个图层上面加一个Metallic图层把金属区域用遮罩大致框出来。然后在金属图层上方新建一个Filter Layer选择“Ambient Occlusion”或者“Curvature”来生成边缘磨损区域。在磨损区域上用黑色的遮罩擦去部分效果做出不均匀的磨损感。最后加一个Roughness图层把高光区域和哑光区域分开配合遮罩的强度控制让金属表面更丰富。这套流程做完一个基础的道具材质就有了。从零开始制作到导出基本20分钟能搞定比我在Substance里手动抠遮罩快了不是一点半点。4. 笔刷不会用等于白装Alpha、动态和材质贴图4.1 加载外部纹理作为笔刷AlphaArmorPaint自带了一些基础笔刷形状但做真实材质时我几乎全部使用外部Alpha纹理。具体方法是在笔刷面板里的Albedo或Brush Albedo区域点左侧图片图标从本地文件选择一张黑白图笔画的形状就会变成这张图的黑白轮廓。这一步和PS的笔刷预设类似但关键在于ArmorPaint的Alpha不仅控制笔刷形状还参与PBR通道的绘制。比如你导入一张噪点图把它应用在Roughness通道上画出来的会是粗糙度有噪点变化的表面而不是单纯的覆盖一层颜色。这就让“画旧化”变成了一件非常润的操作。要制作真实的污渍效果我推荐使用Perlin噪声和Dirt纹理。ArmorPaint在节点编辑器中内置了一些程序化噪声你可以临时调用但更方便的还是自己去外部找几张高分辨率的锈迹和灰尘Alpha存成一个笔刷库以后随时用。4.2 动态笔刷参数Flow、Dabs怎么配合压感ArmorPaint笔刷面板里有两个参数我需要专门强调Flow流量和Dabs笔触采样密度。Flow控制每一笔颜料的输出量。默认是100%如果你把Flow降到30%哪怕你按住左键在同一个位置来回扫颜色也不会叠成实心而会像喷枪一样逐渐加深。这个特性在制作柔和过渡时超好用比如皮肤和布料边缘。Dabs决定笔刷在鼠标移动过程中每秒采样的次数。采样次数越高笔触连续性越好但CPU/GPU计算压力也越大。如果你用板绘笔画时感觉断断续续大概率是Dabs太低或者没有开启笔压支持。在左上角笔刷菜单里有个“Pressure”选项里面可以勾选“Radius”和“Flow”对应笔压打开之后用数位板就能实现“轻触细描、重压粗厚”的自然效果。有一回我忘了打开压力控制用Intuos描了半天线条死活都是同一粗细还以为安装了驱动没生效最后在笔刷面板翻了半天才找到这个开关。这个设置默认是关闭的适合纯鼠标用户但如果你有数位板记得第一时间开启。5. 用节点材质把程序化纹理写进图层5.1 什么是节点图为什么值得用ArmorPaint的节点材质功能是我见过开源工具里少有的良心设计。它可以让你不用手绘完全通过节点连线生成一套程序化纹理类似Blender的Shader Nodes但更轻量。节点图的核心价值在于纹理可以参数化、实时变化。比如你做了一个带锈迹的金属材质边画边改锈迹的密度和渐变范围不必重新画直接拖动节点参数就能看到变化。这对比纯手绘优势非常大特别是项目到了后期甲方提出“锈迹再少一点”这种需求你在节点里调个混合系数就搞定而不是拿着橡皮擦在那儿擦十分钟。5.2 一个砖墙 污渍的节点组合实操我拿“砖墙底部污渍”这个案例讲一遍节点组合的基本思路。在图层列表新建一个节点图层Node Layer。进入节点编辑视图我们可以看到左侧是输入Source和输出。首先需要一个Image Texture节点加载砖墙的基础色贴图把它连接到Mix Shader的顶部输入。再新建一个Image Texture节点加载一张灰尘或脏迹贴图连接到Mix Shader的底部输入。关键一步新建一个Gradient节点设置方向为从下到上黑白渐变的过渡点大概在0.65附近表示底部区域显示灰尘上部干净。将这个Gradient的灰度输出连接到Mix Shader的混合系数端口。最后把Mix Shader的颜色输出连接到材质输出节点的Base Color端口。此时回到视口模型上的砖墙颜色已经自动做好了上下渐变脏旧效果不需要任何手绘。如果你想增加“砖缝沉积”的效果可以再加一个Height通道的节点把这个颜色和高度通道一起输出让灰尘区域不仅有颜色差异还有轻微的高度凹凸感。这套流程用时不到五分钟效果放在Substance Painter里做也差不多要这时间而且这边全程不涉及UV展开模型上的投影也会自动匹配。6. 导出贴图与Blender/Unreal的PBR管线怎么对接6.1 一次性导出全部PBR通道ArmorPaint导出贴图的方式和SP高度相似但又没那么复杂。在顶部菜单找到“File” - “Export”会弹出导出面板。你可以选择导出当前纹理集的所有通道也可以指定某几个通道。我的建议是直接选“Export All Textures”把六个PBR通道全部导出为PNG或TGA。在导出设置里能看到每个通道对应的输出文件名默认格式如“_basecolor.png”“_roughness.png”等命名符合主流引擎的自动识别规则。如果你是给Unreal Engine做材质导出时需要注意一点Unreal对Metallic和Roughness通道习惯用线性颜色空间读取而Base Color用sRGB。ArmorPaint默认会处理颜色空间标记问题但如果你在一些自定义管线里发现贴图颜色发灰或发亮多半是颜色空间读错了。最简单的解决办法是在导出时不要勾选“sRGB”标记选项然后把贴图统一以线性方式导入Unreal。6.2 Blender接收与UDIM的事项ArmorPaint和Blender的联动非常紧密官方也提供了对Blender的实时同步插件。在Blender里选中对象通过ArmorPaint的“Send to ArmorPaint”可以把模型连同UV和材质槽一起发送过去画完再点“Receive from ArmorPaint”把贴图导回Blender整个过程不产生硬盘上的中间文件。但如果你不想依赖插件手动工作流也简单模型导出为OBJ或FBX贴上贴图后连接材质节点用原理化BSDF节点读取导出的贴图。关于UDIMArmorPaint支持多象限UV。当你导入带有UDIM的模型软件会自动把不同UV象限拆分为多个纹理集在导出时也会按对应的UDIM编号输出。我测试过2048和4096两种UDIM尺寸结果都挺稳定。做影视级角色时这个功能可以帮你减少很多手工拼接工作。唯一的小坑是在ArmorPaint里UDIM纹理集是以“纹理列表”的形式管理的如果你想在图层里跨纹理集同时画需要在“项目设置”里勾选“Treat Texture Sets as One”让所有UV象限作为一个整体图集处理。否则你一次只能画当前选中的象限旁边象限是画不上的。7. 用ArmorPaint这几个月踩过的坑与性能调优建议7.1 大纹理内存爆炸与代理方案前面提到过所有通道全开8K会卡。实际情况比“卡”更严重——8K纹理如果导出几百个图层内存占用很容易突破20G。有一次我给一座城堡高模做全通道贴图项目还没画几笔系统内存直接飚到30G鼠标都移不动了。后来我学乖了在项目初始化时把纹理尺寸统一降到2K或4K开始画。等全流程结束、只剩最后输出时再在纹理设置里把尺寸改为8K并重新烘焙一次导出。这个步骤在菜单里叫“Re-bake Textures”它会把当前所有图层重新采样成高分辨率输出。虽然会等几分钟但内存压力全程保持在可控范围。还有一个我实测很管用的技巧在你对某个图层做完复杂滤镜处理、确定不会再修改它的时候右键图层选择“Flatten Layer”把该图层的全部通道压成一张静态贴图。这样能大幅减少GPU实时计算量后续绘制和视口响应会明显变顺滑。7.2 驱动兼容性和崩溃恢复ArmorPaint在Windows上用Vulkan后端渲染时老一些的显卡驱动偶尔会出现闪退。我一开始以为是游戏本硬件问题后来在项目设置里发现可以切换渲染API把Vulkan改成OpenGL试试稳定性和兼容性会好一些。代价是OpenGL渲染在纹理精度和视口性能上稍有下降。关于崩溃恢复ArmorPaint有一个自动保存项目文件的机制默认时间间隔好像是10分钟。如果你在绘制过程中突然崩溃重新打开软件时会提示恢复最近保存的会话。但我强烈建议养成本地另存为的习惯把项目文件保存成.arm格式放U盘或云盘毕竟自动保存机制在某些大文件导出时还是会因内存不足而不稳定。还有一点如果你是在虚拟机或远程桌面上用ArmorPaint实时绘制基本不可用因为GPU资源无法直接透传会导致每次笔刷都要等一两秒才出结果。尽量用物理机或者支持GPU直通的云工作站。7.3 法线贴图在视口里发黑别急着重新画这个现象很多新手特别容易误判。你在ArmorPaint里用法线贴图做细节时如果视口里显示发黑、发花第一时间不要怀疑是不是画坏了先按N打开法线视图检查一下法线贴图的强度值。如果强度值太高模型表面会出现大量“火鸡纹”一样的伪影强度太低又会显得扁平一般建议把法线强度设置在1.5到3之间。如果法线贴图方向不对模型表面会像被揉过的纸一样整体凹凸非常乱。这时候去节点编辑器里把“Tangent”选项改成“Object”试一下。因为不同引擎和DCC工具对法线空间的定义并不完全一致ArmorPaint默认输出是切线空间如果你从其他工具导入旧贴图和法线信息空间不匹配就会炸。8. 几个我私藏的效率和体验技巧讲完大方向最后分享几个我实际使用中觉得很提升体验的小技巧不一定新手都能发现。第一件是在视图左下角有个“Camera”菜单点开后可以调整曝光值。很多人第一次打开软件觉得默认画质偏暗其实不是纹理问题而是它的物理相机默认曝光偏低。我把曝光值从默认的1.0调到1.35之后视口里的颜色瞬间明快起来绘制时对比度也更轻松。第二件事是善用“Quick Mask”快捷键。在绘制过程中临时想看看当前图层遮罩效果可以按一下M键。它的切换速度比鼠标右键拖拽图层缩略图快多了而且能看到遮罩的黑白过渡。我当时找这个功能找了半天没找到后来在快捷键列表里偶然看到的。第三件事是给常用材质预设一个“快速启动”方案。ArmorPaint本身并没有提供和SP一样的材质预设库但你可以把一个画好的项目保存为.arm模板文件下次做类似风格的模型时直接打开模板然后把模型替换成新模型所有图层和材质还是保留原来的状态。比如我保存了一个“金属锈迹”模板每次做废土风格道具都是直接打开改颜色省掉从零开始建图层的功夫。最后如果你需要给多个物体绘制不同纹理建议把它们做成一个项目里的多个纹理集而不是建多个项目。在左侧的纹理集栏可以新建多个UberPlan/纹理集每个纹理集对应一个模型或一组材质。这样切换物体不用反复打开关闭项目文件项目资源管理也更集中。ArmorPaint目前的更新速度不错开发者也保持和社区互动。我个人的体会是它已经不只是一个“SP白嫖替代”了它自己就有一套非常高效的绘制逻辑。尤其是节点材质和智能遮罩的组合让我很多之前没耐心做的材质变化变得轻松了很多。如果你手头正好有模型要重新做贴图可以考虑今晚就装一个试试先从一个小道具开始别一口气上大场景用熟练之后再做复杂项目。提示ArmorPaint支持Windows、Linux和macOS安装包在官网和GitHub Release页面都有。如果你在商业项目中使用建议也关注一下它的许可证细节避免后续麻烦。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价