找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2887|回复: 2

基于新烘焙脚本与PS的简单高效贴图制作法

[复制链接]
发表于 2023-11-20 03:34:10 | 显示全部楼层 |阅读模式
(此教程我在B站专栏也发布了一模一样的:https://www.bilibili.com/read/cv26788608/  图片更清晰一些,不过发现阅读量太少就也贴到这里来了)




在为RA3 MOD制作纯原创美术素材时,尽管创新性和自由性远高于拼模,但常受限于制作方式和EA的区别,不能完整复刻原版画风 且耗时极长,甚至难以在RA3引擎中满足基本审美要求而不甚常用。
本文试图尽可能易懂地描述一种通过PS和MAX脚本的批量烘焙技术,在有限的(可以压缩到一小时内)工作量的基础上,制作在RA3引擎中能够满足审美需求(甚至超越原版)的贴图的新流程。
(示例模型以及这篇教程的主要提纲由 红枫 @550274 大佬提供)

0.为什么我要写这篇? (这段可以跳过)
目前,对于新建模的贴图方法主要有
》拉UV套用原版贴图。此方法的优势在于高度复刻原版画风,但原版图上的边缘磨损与AO等细节必然同新模型存在差异,也受限于15年前的低分辨率,且在需要引用多张贴图的情况下必然增加mesh数量 导致更加可能出现设错动画 或哈希碰撞。
》substance painter与智能材质等真正的次世代工作流。此方法的优势在于精确程度有无与伦比的优势,能够实时预览渲染效果,但劣势在于工作量大速度慢,不得不用到高模,且需要一定时间学习专业技巧。
》在UV模板上强行平面手绘。此方法的优势在于可以立刻上手修改已经存在的贴图。劣势则在于细节往往不到位,AO等跨越几何体的细节倘若全部手绘,则严重加大工作量和出错概率。
》PS同烘焙结合法。逻辑是将3D几何体的一些特征信息 映射到平面上 作为图像去处理。此方法的优势在于结合了PS法上手快的优势的同时,使用脚本将3DSMAX的烘焙功能批处理化,减少了绝大部分工作量,增加了细节水平,统一了贴图画风,在需要同时制作一整个新阵营的模型时,效率与准确度的优势尤为明显。虽然复杂曲面上的表现效果较为局限(不过也可修复,文末有说明)

本文着重阐述的是第四种方法。其中,MAX2021更新后提供的表面曲率计算法,未曾出现在此前社区内已经熟知的任何类似工作流中(AO或许大家已经耳熟能详,但此文将会着重介绍曲率图带来的作用)

=== 实践操作流程 ===

本文假定读者对RA3 MOD的基本情况,以及3DSMAX、photoshop(可使用GIMP,SAI等任意有图层功能的画图软件替代)的软件的操作有基本了解,不再赘述基本操作方式问题。


准备所需的软件:
》3DSMAX, 2021版本,或更高。旧版本没有插件所需的API。
》批量烘焙脚本,下载链接 https://cganimator.com/simplemapbaker/  有红枫帮助汉化的中文版 和 英文原版可选。(中文版去QQ群里下载)
》任何有图层的画图软件,这里以Photoshop和GIMP为例。



1、建模,或找一个能用的模型

在建模过程中,为了使后续步骤中的边缘曲率计算更显著,个人倾向于将棱角部分制作的更加锐利,减少不必要的切角或细分。故而使得整体画风接近于写实风格或硬朗的科幻风格。当然读者可以根据自己的需要进行调整。也可以直接使用原版模型,但注意焊接顶点并修复平滑组
(保证整个模型都使用了30-45度自动平滑,一般这是建模的最后一步)。

RA3DIY1.jpg
值得注意的是,相比较于完全的拼模手段,在新建模过程中采取一定的预制件 “拼模”方式也能起到利大于弊的作用。例如我们可以将通用的一部分配件(例如轮子,车灯,挂钩,烟雾弹,天线,光电观瞄,后视镜)进行预先建模和贴图绘制,并整合到一整个贴图上,在事后的各个新单位的制作过程中直接引用。这也能显著简化每一个新单位的UV展开步骤,节约贴图面积,并帮助形成风格统一的系列感。相比较于这一便利,每个模型上提高一两个Mesh总数是可以接受的
RA3DIY2.jpg RA3DIY3.jpg


预制件因为比较小,可以把UV都尽可能整合进一整张贴图。
RA3DIY4.jpg 素材复用是游戏优化的基本技能。

对称分割这一步亦需要注意,由于UVW的工作原理,任何预期有不可镜像的(例如文字标识)贴图内容的部分均不建议进行粗暴的对称切割。对于有迷彩的模型亦需要注意避免简单的对称分割,以免迷彩完全对称而降低观赏性。当然如果要节约时间,这些都是可以原谅的()
此外,出于性能优化的目的,完全看不见的面应当在这一步的结尾予以统一删除,以期降低不必要的性能损耗。(RA3原版模型大约每个 三千~八千面)


2、UVW 展开与排列

在3D领域中,常常通过UVW坐标系统实现模型的特定面到贴图的特定区域的映射,来为特定面指定其引用的贴图范围。
在UVW分划过程中需要注意以下几点:

》在大多数情况下看不到的面(例如炮塔底部,车底)可以适当缩小以降低无谓的面积占用,优化贴图和显存的利用率。
》具体面的朝向建议采取尽可能有规律,便于之后的绘制。摆放UV时也最好横平竖直,避免画钢板接缝等条状纹理时出现像素锯齿(UV编辑器也有功能可以自动做到这一点)
》能连在一起的面尽量连在一起,可以增强纹理连续性。UV块撕开会导致在游戏内平滑组也被撕开,所以分割UV块的绿边尽量在无需平滑的锐边,例如平滑组的边界,朝下看不见的边缘。
》过度零碎的面无需单独分开,自动展开之后缩到一个角落即可。
》不同UV面不要重叠,也不要让不同UV块的边缘靠太近,否则容易串色。UV编辑器的右下角可调整自动排列时的padding,即边缘填充距离(试试0.01-0.1)。取决于预期贴图大小,最终保证在成品贴图上任意不同的UV块之间至少有4像素间隔就够了。
RA3DIY5.jpg

3、自动化烘焙

在这一步,我们已经将目标模型的UVW坐标分割到了合理要求,可以利用自动化工具进行自动烘焙了。烘焙在本文中特指将模型的部分属性依照UVW坐标的位置映射关系,以位图形式绘制到一张给定尺寸的平面图上的行为。该步骤的主要目的是通过特定算法模拟环境光照 将AO和表面曲率信息直接绘制到位图上,减少手绘工作量,便于批量增加细节。

在3DSMAX 2021及以后的版本中,自动桌引入了更加先进的“烘焙到材质”的API,从而为这一步的自动化提供了条件。本文采用了由
https://cganimator.com/simplemapbaker/
获取的Simple map baker脚本实现这一目的。

在烘焙前需要注意的是,在预期中会出现转动的部件上,需要将活动件同其他部分做适当分离,以避免AO的自动计算认为这二者直接相接,出现过黑的部分 导致游戏内看起来不真实。例如炮塔和车体之间,吊臂,可变后掠翼等。

(是否在场景中添加地板,以加黑车辆底盘和朝下的部分,取决于读者的需求。一些创作者不建议如此操作,因为平时看不见车辆底盘,而当车翻过来时,这一部分亦不应当表现太黑。也有创作者认为地面与车身侧面依然会形成明显的AO效果,加上地板可以显著提高真实度。将地板和车底拉开一段距离或许可以两全其美。)

点选中所需的模型,可多选,不要包括贴上去的预制件。不同材质(通常分为同一个单位上的哑光漆,金属,玻璃部分)建议分成不同MESH,烘焙时会自动被分在不同的图上,在PS中方便分开处理。

启动脚本后,需要按 X 键并搜索此脚本名称,才能唤起主操作窗口。

按照如图所示的建议值(或适合自己的其他数值,评论区将会详细介绍每个数值的含义)选中第一行需要的烘焙项目,这里点选“曲率图”和“环境光遮蔽”。如果你想挑战一些更有创意的花招,后文会介绍“世界坐标位置”“世界法向”等等功能的作用,这里也可以一起点选。

点击最大的那个 Bake 按钮进行烘焙。在烘焙结束窗口自动关闭后,所需的位图将默认出现在
C:\Users\USERNAME\Documents\3ds Max 2023\sceneassets\images
目录下。(如果你改变过“文档”文件夹的位置,请在新的目录下寻找。)

下图为操作窗口的中文和英文界面。

RA3DIY6.jpg ui cn.jpg

4、贴图整合和绘制
RA3DIY7.jpg

在这一步,我们已经取得了具有特定模型信息的数张位图,那么我们打开图形处理软件,将上述位图整合起来,并加以手工绘制以表现特定细节。如果之前因为材质分了不同mesh,那么每一个mesh都会有一套这样的图。

在本文中我们且以photoshop和GIMP软件为例进行说明。SAI,KRITA等类似软件亦可以使用并取得同等效果。

在RA3中,以最为复杂的载具SHADER为例,我们需要对一个单位绘制至少三张贴图来实现基本的表现需要:漫反射、SPM、NRM。

漫反射贴图即基本颜色贴图(表面材料颜色乘以AO所得),NRM贴图则为法线贴图,一般采用高模烘焙法或刻线滤镜法制作,本文暂不涉及该贴图制作方法。

SPM作为较复杂的一项, R通道指明反射高光的强度与位置(类似材质光滑度)G通道在原版shader中暂无实际用途(但也有modder通过改shader使其发挥作用,我将其改为了发光,日后我也会发文说明)B通道则指明了所属色的位置和混色浓度。

三者均以DDS贴图的方式最终体现在游戏中,出于压缩算法与显存分配,必须采用2的整数次幂为边长的正方形贴图。(虽然1:2的长方形贴图也有成功使用案例)

这次我们主要绘制漫反射和SPM贴图。NRM可以偷懒

RA3DIY8.jpg

我们先来绘制漫反射贴图。

使用图像处理软件建立大小为1024 x 1024 (或 512x512)的新文件。

首先考虑本模型的底色,在原版中盟为浅蓝色,苏为绿色,帝为白色。具体可以按照自己的要求确定。该“底色”亦可以是迷彩或其他涂装。在本例中我们采用数码迷彩,铺满整张图。(实际上,游戏内视角并不适合对比度过高的迷彩,降低辨识度会在玩的时候 尤其对战时候 很难受,这里单纯为了美观举例)

RA3DIY9.jpg
将AO图至于顶层,与底色亮度相乘(PS选择混合选项为正片叠底模式,GIMP选择multiply)。该步骤为贴图提供了基本的明暗关系和环境光遮蔽效果,同时遮挡住了不必要的贴图区域,使其更加明了。
RA3DIY10.jpg
将曲率图单独打开,拆解通道。其红色通道为凸起棱角部分,绿色通道为凹陷部分。蓝色通道无信息。黑色区域为没有凹凸的平面。颜色越亮代表凸起和凹陷的角度越锐利。
RA3DIY11.jpg

将红色和绿色通道分别以灰度形式(PS 右键提取通道,GIMP选择 颜色-分量-提取通道/分解通道)复制到主文件的AO图层之下,底色图层之上。混合模式取决于需求,这里列举一种(大多数风格化游戏常用的方式):
边缘磨损处发白,凹槽处发黑。
这种配色能在游戏内错综复杂的光照下最显著地强调3D形状

RA3DIY12.jpg
凸起棱角图层使用“仅变亮”或“相加”混合方式。而凹陷图层使用“减去”,也可整体反色之后正片叠底。若颜色过渡不够柔和或不够锐利,可调整亮度曲线,直到满意。
RA3DIY13.jpg
(当然,如果你想要风格再写实和多样化一点,例如边缘和角落有棕色锈迹等,可以尝试直接将凹凸图层设置为alpha蒙版,然后用完全另一张材质图进行混合,中途还能添加噪波图或者用随机刷随便画两笔,使得磨损看起来更随机更自然。这个属于类似智能材质混合的高阶玩法)
RA3DIY14.jpg RA3DIY15.jpg
至此,我们得到了具有明暗关系和边缘增强的基本漫反射贴图,如果你有足够多时间,更多细节以及彩蛋可以按照自身要求进行手动绘制,此处不再赘述。


在漫反射贴图制作完毕之后,我们可以以同样的素材为基础制作SPM贴图。
我们新建一张大小相同的图层(或新图像),填充深红色(具体红色多亮,取决于你想要表面的反射度有多高。这里颜色值为45.0.0,大约是哑光漆效果,如果是抛光金属则为180.0.0 ,玻璃则为 255.0.0)。
将AO和两个曲率凹凸图层复制过去,
AO依然为正片叠底(multiply)
将曲率的凸起图层添加颜色叠加,混合模式取决于需要。这里示例的思路是,当边缘的哑光漆被磨损后,露出高反射的金属材质,因此边缘处应当反射度增加。(当然也有可能是抛光金属被磨损导致反射度减少,请读者自行选择混色方式)

RA3DIY16.jpg

如此,我们获得了带有边缘增强的反射强度(光滑度)图。

另外,在玻璃处绘制纯红色,在漫反射接缝处绘制黑色,在接缝两侧绘制略亮的红色,将文字标语等处的红色降低,也可以增强细节。接缝细节可以直接取自前一步漫反射所用的刻线等图层。如果时间不够,只处理玻璃部分足矣。

所属色(又称阵营色):在需要的部分绘制蓝色。

一般阵营色也被认为是哑光漆,所以此区域可以将反射度适当降低。另外,由于阵营色混色算法为:“阵营色x漫反射x2 与 漫反射 之间的线性插值”(插值权重为spm蓝色值)所以spm蓝通道绝不应该有AO。也并不需要在接缝纹理等黑色部分取消阵营色,因为如果这块区域漫反射是黑色,算出来依然是黑的。建议将阵营色区域作为一个单独的图层覆盖在AO图层之上。

阵营色哑光漆当然也会受到边缘磨损影响,可以使用凸起图层(之前提到过的曲率图红通道)亮度相减,制造阵营色涂层在边缘处的变淡效果。

RA3DIY17.jpg

至此,我们成功得到了和漫反射贴图搭配的SPM贴图。

NRM:新建一张大小为16*16的文件,只填充淡蓝色(127,127,255)。作为迫真法线贴图。这当然是偷懒的方法,不过游戏内效果依然很整洁。

强烈不建议用主贴图粗暴地加上法线滤镜,这个方法常常被初学者滥用但效果很混乱。如果你想制作法线图请尝试 高模烘焙 或刻线加滤镜。对法线图的压缩同样有特殊要求,比如蓝通道要全部涂满255可以避免压缩时出现奇怪方块(很遗憾RA3并不支持DXT5NM格式)如果要搬运别的游戏的贴图,请务必注意那些游戏是否使用openGL,要注意绿通道可能是反的。RA3使用DIRECT X。

RA3DIY18.jpg
至此,贴图绘制结束,可以将其按照一般流程导出到游戏中了。不要忘了合并对称复制后的模型,然后在MAX里预览效果。
RA3DIY19.jpg

=== 进阶技巧 ===

在simple map baker 的操作面板中,可以看到“世界坐标位置”“材质ID”等其他烘焙选项。

》“世界坐标位置”可以将贴图上的每一个像素 视为对应模型3D空间中的一个点,算出此点的XYZ位置,并记录为RGB颜色重新画到贴图上。通过这一点,我们可以很方便地在PS里选中“某一坐标区间”的部位,例如:蓝色较暗部分代表Z坐标较低,是车辆接近地面的位置,在这个区域就可以贴上一张尘土材质(注意渐变融合)做出这辆战车久经沙场的观感。若为两栖单位或舰船,则可以在不同高度贴上红色防锈漆与水渍。(下图为沾了一屁股沙子的车)



RA3DIY20.jpg RA3DIY21.jpg

》“材质ID”则会将MAX里已经有材质的区域,按照材质种类分成RGB(很遗憾每次只能分三种)优点是相比于直接拆MESH,这个方法允许不同材质的几何体 在融合穿插地方 将互相的材质模糊融合。

》“世界法线”则是每个贴图像素在3D模型对应位置上的表面朝向(做过RA2 VXL的朋友应该已经耳熟能详了)用这张图,我们可以方便在PS里选择“近似某一角度的所有区域”。如果你要给建筑物做积雪贴图,想要同时在PS里选择模型上所有“朝上和近似朝上”的区域涂白,这是个理想的方法。

》另外,如果你没有急着合并图层,那么恭喜,PSD文件留着可以给以后其他模型使用,只需要按类别替换新烘焙出来的贴图即可。想要换一个风格的涂装而不影响其他细节,也是很容易的。

RA3DIY22.jpg



=== 总结 ===


通过上述大约一小时的流程,我们终于得到了一套可堪一用的贴图,在RA3引擎中的表现亦差强人意(也有人说遥遥领先)在有限的工作量约束下,这一结果是相当满意的。
RA3DIY23.jpg

但也能看出本方法具有以下的缺陷:
》未考虑如何制作法线贴图。明显可见的是,我们实现了通过漫反射和高光反射强度的配合,对个别凹陷和凸起处做出了一定的表现效果(用作手游和非盈利的老游戏模组的素材尚可一战)当然,RA3自带的着色器 以及dds常用的压缩算法,对于法线图的表现方式只能说本来就相当糟糕,我自己并不喜欢在RA3MOD中用法线图。
》对复杂曲面作用有限。考虑到max所使用的采样算法的局限性,在复杂曲面上往往会取得过于夸张的曲率信息。这点可以通过操作窗口上 降低“采样半径”,提高“起始阈值”,或整体放大模型,并对不希望视为棱角的圆滑边缘 进行曲面细分或多重切角,可以勉强修复。
》不一定保证完美复刻原版贴图风格(其实盟军和GDI风格基本上能模仿的比较好),更适合整个阵营都是原创的作者。
RA3DIY24.jpg



综上所述,使用与否还取决于各位读者的考量。笔者不是计算机图形学或美术专业出身,大多数描述基于自己的理解。文中若有出错,还请大家及时指正。

特别鸣谢(排名随机):

红枫!!!(本文的合作者,从7月开始通过反复实验 终于将我的这套工作流从“理论可行”打磨成“简单高效”,并用一天一个新单位的产能震撼了整个RATMOD群,,,文中所使用的截图示例都是由
 楼主| 发表于 2023-11-20 03:36:45 | 显示全部楼层
文章末尾怎么被截掉一段。。。可能长度超限了,罢了,完整版去b站专栏读吧,https://www.bilibili.com/read/cv26788608/
回复

使用道具 举报

发表于 2024-2-26 01:26:10 | 显示全部楼层
我去,我都不知道你在这里也发了一份
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|管理员邮箱|红警DIY论坛 |网站地图

GMT+8, 2026-5-2 01:28 , Processed in 0.084951 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表