上周帮一个独立游戏团队优化材质管线,美术同学抓着一张512的砖墙无缝图问我:这接缝我已经改了四遍,放大了还是糊,除了手绘重做还有救吗?我给的答案是用Upscayl,而且不是简单放大,是把超分嵌进一套“AI材质烘焙流”:底图铺路、AI提分辨率、多通道重新精修。一套4K PBR资产从准备底图到入引擎检查,3分钟左右,比手绘快一个量级,全程本地运行,不上传资产、不耗在线额度。
这篇文章把这套流程从头拆到尾:为什么选Upscayl、每一步怎么操作、PBR各通道怎么配合,以及我连续用几个月踩出来的几个坑。得先说清楚,它不是万能药,对无缝贴图、风格化材质、程序化底图的效率提升最明显,适合独立开发者、资源受限的小团队,也适合美术基础偏弱但需要持续出材质的人。硬要用它救一张本身就没细节的脏图,那大概率还是失望。
1. 先聊聊“手绘无缝”这件逼疯美术的事
1.1 无缝贴图为什么这么折磨人
无缝贴图(seamless texture)折磨人,是因为无缝本身就不符合人类的绘画本能。人画画习惯从上到下、从左到右,潜意识里不会把画布边缘当成需要对接的区域。无缝贴图要求左边缘必须和右边缘精确拼合,上边缘必须和下边缘精确拼合,差半个像素都能看出来。
画一条简单的砖缝,如果砖的宽度在边缘处算错半格,拼接时就是一条错位的竖线。用现实拍摄的墙面照片做更是如此,光照方向、透视变形、墙皮破损位置,全在边缘露馅。传统检查手段是Photoshop里的“位移”滤镜,偏移50%后拼接检查,改一次查一次,非常杀时间。真正画过的人都知道,单张无缝手绘三四个小时是常态,画完还得反复修补边缘。
更麻烦的是,手绘出的贴图往往只有颜色信息。游戏引擎里的PBR材质需要颜色、法线、粗糙度、金属度、AO等多张通道贴图,手绘流程要么在3D软件里继续手动调,要么用一个Painter类软件慢慢刷,时间成本是叠乘的。
1.2 传统方案的速度瓶颈在哪里
市面上不是没有现成PBR资产库,但问题也不少。高质量中文社区素材偏贵,授权细节又经常说不清;免费CC0素材库如ambientCG质量上乘,但遇到风格化项目,现成素材很难匹配设定;自己拍照片又受设备、光线、环境限制。程序化材质工具如Substance Designer能解决一部分问题,但它的学习曲线非常陡,不值得为几张砖墙专门去学。
还有一个被反复碰到的瓶颈是分辨率。从免费素材库下载的贴图往往只有1K甚至512,直接扔进引擎放大到4K就是灾难。Lanczos这类传统算法放四倍,边缘糊成一团,砖缝变“水彩画”,还不如不放大。过去想解决,只能重绘或找高清付费素材。
1.3 先把“AI材质烘焙流”这个词校准一下
标题里的“AI材质烘焙流”,指的并不是传统3D里把高模细节烘焙到低模UV的那种烘焙。它更像一条“精加工流水线”:先用最容易拿到的低分辨率底图铺底,再用Upscayl这种本地AI超分模型把分辨率和表面细节提上去,最后按PBR规范重新生成或精修各通道贴图。整个过程的核心逻辑是“AI负责体力活,美术负责判断和取舍”。
这条流水线之所以成立,是因为Upscayl不单纯做插值放大,而是靠训练好的模型重建高频细节,相当于给一张模糊底图“脑补”出清晰的砖缝、颗粒、划痕。配合正确的高度图处理,连法线通道都能顺手解决。下面我把它的技术底牌翻出来看看。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Upscayl凭什么能进材质流程:工具底牌与选型思路
2.1 Upscayl底层到底干了什么
Upscayl是一个开源、免费的AI图像放大工具,底层跑的是Real-ESRGAN系列模型。这类模型不是传统的双线性或Lanczos插值,而是通过卷积神经网络学习“低分辨率图像到高分辨率图像”的映射关系。模型在训练阶段见过大量成对的清晰/模糊图,所以放大时不是简单补像素,而是根据语义判断——知道这是砖墙纹理,就补出砖墙该有的高频细节;知道那是金属划痕,就补出金属划痕的走向。
Upscayl内置了几种模型,GUI里可以直接切换:通用照片模型realesrgan-x4plus适合大多数墙面、地面、木质纹理;动漫模型会明显把纹理“抹”得光滑,做写实材质时不要选;Remacri模型在部分版本中对细节恢复更激进,适合布料、粗糙表面;还有面向数字绘画的模型,能保留更多笔触感。材质工作流里我默认会以General Photo模型为基准,再根据纹理类型做小范围调整。
GPU、CPU都支持。有N卡就用CUDA,有Apple Silicon用Metal后端,不用装额外驱动,Linux下N卡需要确认Vulkan驱动是否正常。老旧的核显也能跑,只是慢一些,但一张512图放大到4K通常十几秒到一分钟,在可接受范围内。
2.2 为什么这个场景我不推荐在线放大工具和付费放大软件
市面上有不少在线AI放大工具,界面做得很漂亮,上传立等可取,但材质工作流里不建议碰。第一个原因是隐私。项目材质资产往往代表美术探索方向,上传到第三方服务器等于把进度暴露给别人,商业项目尤其不能接受。第二个原因是额度。材质资产动辄几十张起批,在线工具要么限次数,要么限分辨率,无法应对规模化需求。第三个原因是批量能力,在线工具大多一张张来,没有一个能高效处理整套PBR通道。
付费软件里,Topaz Gigapixel AI的效果确实很好,摄影向的超分甚至超过Upscayl。但它的授权费用对小型团队不是小数目,而且它对灰度PBR通道的处理逻辑并没有明显优势。另外还有waifu2x系列,动漫为主,放大写实墙面时方向不对。综合免费、本地运行、批量稳定、模型可选这几点,Upscayl是当前性价比最高的选择。
2.3 本地批量处理才是资产生产线的命根子
Upscayl支持批量拖入多张图片,设置好输出目录后统一处理。这一步的价值在材质生产里非常大。我一般会把同材质的Color、Roughness、Height灰度图一次性拖进去,统一放大4倍,保证各通道尺寸一致。而且Upscayl新版还有命令行调用方式,可以接进自己的批处理脚本里,和Substance导出、引擎导入形成自动化链路。后面章节我会细讲命令行的参与方式。
3. 3分钟直出4K PBR资产:完整实操流程
3.1 底图从哪里来,这一步决定了资产上限
超分不是凭空造物,底图决定天花板。最常见的三种底图来源:
第一,公开CC0素材库。ambientCG这类网站提供大量免费PBR材质,下载1K版本作为底图。注意选择“全套通道”版本,因为后面处理时需要用到高度图信息。
第二,AI生成无缝底图。用Stable Diffusion配tile类模型或Seamless插件,先出一批512x512或1024x1024的美术底图。速度快、风格自由,但需要人工筛选,模型偶尔会生成结构性错误,比如砖缝断裂、窗户透视变形,这些Upscayl救不回来。
第三,程序化软件导出。已经会Substance Designer或Blender节点工具的人,可以直接导出低分辨率Prototype贴图,再拿到Upscayl放大。这条路径适合做非常规材质,比如科幻管道、魔法符文石墙。
底线是:底图必须内容干净、没有明显接缝、光照尽量正。超分模型解决的是细节和分辨率,解决不了内容和构图错误。
3.2 Upscayl参数设置与批量输出
以我常用的GUI流程举例。拖入底图后,我固定用General Photo模型,放大倍数选择4倍。Upscayl内部还提供了缩小倍数选项,但材质工作流一般用不上。输出格式建议PNG,如果软件版本支持高位深度,优先选16位输出,能减少PBR通道后期出现色带的概率。
输出目录单独建一个“4K_Base”文件夹,避免和原图混在一起。点Upscayl开始后,程序会逐张处理。批量几十张图片时,建议分批拖入,每批不超过20张,避免单线程处理时间过长导致程序假死。处理完成后别急着用,下一步才是真正决定PBR效果的环节。
3.3 法线通道的正确打开方式:走高度图,别直接放法线图
这里是整套流程最重要的分水岭。Upscayl是一个面向普通图像训练的模型,它理解的是RGB图像中的颜色、对比度、边缘,不理解法线贴图里RGB通道的物理含义。直接拿法线贴图喂进去,模型会把法线XYZ分量当成颜色去“平均”,结果就是法线方向被扭曲,表面出现大量错误的凹凸方向,引擎里表现为反光乱跳、光照看起来“脏兮兮”。
正确路径是:先用底图自带的高度图(Height/Displacement),加Upscayl放大到4K,再根据放大后的高度图重新生成法线贴图。高度图是灰度图,语义简单,AI模型对灰度图超分不会造成通道层面的误判,反而会重建很多微观凹凸。放大后的高度图可以用NVIDIA Texture Tools Exporter、xNormal、Substance 3D Sampler,甚至Blender里的Bump节点重建法线。这样做出来的法线细节和颜色底图高度吻合,光照响应才正确。
3.4 一整套资产怎么进引擎验证
4K的基础通道放大完成后,先把颜色和法线放进引擎验证一版。在Unity里建一个平面,给一个基础Lit材质,加载两套贴图,把Tiling设成4x4,相机固定角度,开一盏平行光加一盏天光,重点看砖缝边缘是否有重复感、法线是否造成明显光斑。Blender里同理,用重烘焙节点连接即可。
这个验证环节别省略。AI超分出来的细节有时候是“幻觉细节”,静态渲染图里看着很丰富,一旦光照角度变化就会暴露出不自然。我习惯在正方形平面里摆3个不同朝向的球体或立方体,拖一下光照角度,连续截图对比。
4. PBR通道不是“超分+调色”就完事:五张贴图的协同处理
4.1 颜色底图:超分后第一件事是治色偏
Real-ESRGAN类模型对颜色的处理不是完全保真的。它训练目标偏向重建“清晰感”,有时会轻微提升饱和度或增强对比度,单独看很舒服,放进PBR体系就出问题。因为颜色底图一旦偏饱和,会让金属度贴图看起来像脏旧金属,哪怕金属度值是0。
我的处理习惯:放大后把颜色底图拉回sRGB工作空间,在Photoshop或Krita里做一次轻微对比度校正,重点看白色区域的RGB是否偏色。如果砖墙白色灰浆部分RGB数值整体偏红或偏蓝,我手动用曲线把白点对齐。这一步不追求绝对中性,但不要让模型给整张贴图加上一种“AI色调”。
4.2 法线贴图:重建比放大更靠谱
这点在上文已经提过,这里补上参数细节。用NVIDIA Texture Tools Exporter从放大后的高度图生成法线时,滤镜强度建议调到3到5之间,强度太高会让砖块边缘出现明显的浮雕轮廓,在游戏动态光照里显得“过于立体”。同时开启锐化,锐化量控制在0.3以内,太高会产生光斑。
另外还需要检查一个隐藏问题:法线贴图的绿色通道方向。很多美术做过不止一次,从Substance导出的法线是DirectX还是OpenGL格式,不同引擎要求不一样。超分重建之后,高度图生成的默认格式通常是OpenGL(绿色朝上),如果你项目用DirectX,需要在生成工具里把Green通道翻转,搞反了会让整个材质的光照方向反掉。
4.3 粗糙度、金属度、AO:灰度通道的三条不同活路
这三张在Upscayl里都是灰度图,直接放大不会出现法线那种语义错误,但各有各的坑。
粗糙度贴图的问题是“被磨平”。AI模型在重建细节时倾向于让表面更“干净”。放大后的粗糙度图如果直接入引擎,金属表面的反射会变得太锐利,看起来像塑料。我一般会在超分后给它叠加一层微弱的表面噪点,推荐在Substance或Photoshop里用滤镜增加5%到10%的高频颗粒,让粗糙度保持“有点脏”的状态。
金属度贴图是另一类问题。它只需要0或1两种值,中间值在PBR里通常没意义。Upscayl的模糊重建会把边缘过渡区拉长,导致一张平整金属板上出现大量灰值,灯光一打就是一片脏。解决方法很简单:超分后做一次“阈值处理”,0.5以下归0,0.5以上归1,让过渡区压缩到一个像素宽度。
AO贴图超分后最大的变化是“深度感”下降。因为模型不会自动保留环境光遮蔽的强度分布。把AO拉进Photoshop,用色阶把暗部压缩回去,再统一乘一个0.7左右的强度系数,材质会更有体积感而不至于发闷。记住这贴图只要灰度,颜色空间一定要切到线性,否则会出现对比度过重的问题。
4.4 用“位移50%”检查接缝,最土也最有效
所有通道处理完之后,别急着进引擎。我每张都过一遍位移检查:Photoshop里用“滤镜-其他-位移”,水平和垂直各偏移50%,把边缘挪到画面中间,然后沿线检查。无论是颜色底图还是法线图,如果出现明显的水平或垂直断层,说明底图本身的无缝性没做好,凑合入引擎后期只会更明显。
如果只有颜色底图有一点点接缝,可以用修补工具沿着边缘手动刷几条纹理,然后整体再放进Upscayl重跑一次。但如果是法线或粗糙度图对不上,建议回到底图阶段处理,别在本已经放大的图上折腾,那样只会越修越糟。
5. 实测中踩过的坑:无缝性、细节纹路与多通道一致性
5.1 坑1:16倍放大,细节全是幻觉
刚开始接触Upscayl时,我很贪心,想把512的图直接拉到8倍甚至16倍。结果确实“清晰”了,但放大后的纹理多了很多现实中不存在的细节,呈现在渲染里就是密密麻麻的、方向混乱的假噪点,完全不能用。
后来规范了流程:一张512底图,最多放大4倍到2K;如果目标真需要4K,我会先把512放大2倍,经过一轮清理,再放大2倍凑到4K。Upscayl对这类“二次放大”的容错性较好,但每轮之间都要检查纹理结构有没有变得混乱。材质表面真实感,根源是结构,不是纹理颗粒密度。
5.2 坑2:法线直接超分产生“塑料光”
这是新手最常犯的错。我第一次跑材质流程时,拖进去5张贴图:Color、Normal、Rough、Metal、AO,一起放大。结果引擎里所有物体都带着一种奇怪的反光,像表面涂了一层油。排查了很久才反应到,法线贴图被当普通照片处理了,RGB通道的物理含义被模型重排。
从那以后我建立了铁律:Upscayl只放大Color、Height、Roughness、Metal、AO这些灰度或颜色类通道,法线一律从放大后的Height重建。哪怕麻烦一点,也绝不让模型碰法线图。
5.3 坑3:粗糙度被“磨平”,金属变成塑料
有一版次世代场景,我负责一个武器库的金属墙壁。超分前粗糙度图是有明显拉丝细节的,放大完后拉丝没了,金属墙变成一个光滑塑料板。问题出在模型选择上,那次不小心选成了anime模型,它天生倾向“磨皮”,把一切高频信息都平滑掉了。
复盘后,粗糙度这类需要保留精细颗粒感的灰度图,我会优先用Sharpening或Remacri模型,或者放大后在粗糙度图层上叠噪点保持高频质感。通用模型不是不能用,但一定要在放大后主动补细节。
5.4 坑4:批量处理时没留意色彩空间,导致多通道对不上
Upscayl处理完后,默认按sRGB理解输出。灰度图本身没颜色倾向,这个理解问题不大。但颜色底图如果项目使用线性工作流,直接导入引擎后不做sRGB转线性,渲染亮度会整体偏灰。
具体表现为:同一套材质,颜色图在引擎里明显比其他软件预览里“闷”,阴影部分尤其重。解决办法是入引擎时手工指定纹理的sRGB属性:颜色底图打勾sRGB,法线、粗糙度等标注为线性或Normal Map。这个错不只在Upscayl,其实任何超分工具都会遇到,换到4K素材时更容易暴露。
6. 从单张到资产库:批次化生产与后续扩展
6.1 一套底图多风格变体,靠的是参数微调不是重画
Upscayl把质量下限抬高之后,资源管理方式可以变得更激进。同一张512无缝底图,我可以放大出4K基础版,也可以针对场景调两版风格:一版用General Photo模型保持写实,一版用Digital Art模型拉高纹理对比度,形成强风格化质感。后续细分可以在粗糙度、AO通道上叠加滤镜,产生不同环境基调。
这就把“同材质多风格”的成本压低了。过去美术需要为一扇门画好几个版本,现在一套底图配上不同的通道处理预设就够了,时间几乎只花在预设调试和验证上。
6.2 给PBR资产立个归档规范
资产一旦开始批量生产,归档就变得重要。我现在的命名规则:MultiResolution_xxx_4K_Color.png、MultiResolution_xxx_4K_Height.png、MultiResolution_xxx_4K_NormalDX.png,后续跟着版本号。用统一规范,后续团队协作时就不会出现“这个贴图是哪张生成的”这种问题。
同时我建议保留原始的512底图和Upscayl放大时的模型参数记录。因为AI放大会出现“第二次跑同一张图,结果略有不同”的情况,尤其模型更新后差异更明显。有了参数记录,下次复现不会一脸懵。
6.3 从GUI到命令行,批量能力再往前一步
Upscayl的GUI适合单张摸索,真正的规模化还是得靠命令行。在官网或GitHub Release里能拿到upscayl-bin核心程序,我的批处理思路是:先用脚本把一批底图统一命名为seq_001_original.png,再调用:
bash复制upscayl-bin -i input_folder -o output_folder -s 4 -m realesrgan-x4plus -n realesrgan-x4plus
这条命令的具体参数会随版本变化,使用时先确认你本机版本的帮助信息,但思路是通用的。把Upscayl接进批处理脚本后,配合Substance导出脚本和Unity/Blender文件夹监视导入,一条“底图进、PBR资产出”的半自动流水线就搭起来了,省下来的时间可以去做真正需要审美判断的部分。
这套流程我用到今天,最大的感受是:AI没有取代判断,它只是把必须手工熬的机械性工作吃掉了。材质生产的核心还是“你希望这个表面是什么材质、有什么故事”,Upscayl负责把这个期望快速变成一个能用的4K PBR起点。对独立开发者和小团队来说,这就已经值回所有折腾的成本。
