贴图
- 每组网格一张方形图集,UV 用 Blender 的当前 UV 层:
textures/entity/vehicle/<名字>.png:车身、车头、车轮;<名字>_wheel.png(可选):车轮自己的图集。四个车轮共用一个网格,单独一张图细节清楚得多(胎面花纹、刹车盘);有这张图就用它,没有就用外部图集;<名字>_cab.png:驾驶室和座椅;<名字>_under.png:发动机舱和底盘(有的话)。
- 车漆部分画成浅灰或白色,颜色由玩家选。
- 光影包材质(可选,LabPBR):同名加
_n(法线,RG 是 DirectX 法线,B 是环境光遮蔽)和_s(R 光滑度,G 反射率,A 自发光)。 - 车漆区域画成白色(或很浅的灰):玩家选的颜色直接乘在上面,底色越暗,漆色越暗。
- 车漆部件的底色由烘焙脚本自动刷成白色。
- 磨损(可选):
<名字>_wear_1.png到_wear_10.png,和外部图集同样的布局,透明底,画锈迹和脏污。没有这 10 张图的车不画磨损。 - 玻璃在光影包下统一用 Vettura 自带的玻璃贴图(光影包靠这张图识别车窗玻璃),不用你画。
白模可以只用色块:每个面映射到一小块纯色。
从带很多材质的模型烘焙图集(例如高精度的成品模型:几百个材质、平铺的细节贴图):用 tools/blender/bake_vehicle_atlas.py,在导出之前运行。用法和导出脚本一样,开头填资源目录、车名、图集边长:
bash
blender my_coupe.blend --background --python bake_vehicle_atlas.py -- D:/MyMod/src/main/resources/assets/mymod my_coupe 4096它会改动并保存这个 .blend(合并顶点,新建 UV 层 VETTURA 并设为当前),先给模型留一份备份。它会依次做这几件事:
- 合并重复顶点(导入的网格常常每个三角形的顶点都是分开的,不合并的话每个面都是一个孤立的 UV 岛);
- 新建一个 UV 层
VETTURA,整组一起展开、打包(车轮单独一组,图集是外部的一半边长)。格栅、螺丝这类有成百上千个小岛的零件,岛会叠在一起打包(基本是纯色)。名字以_decal结尾的部件(徽标、标签、缝线)不叠,并且分到 2 倍的贴图面积; - 烘焙颜色和透明度(贴花和镂空格栅靠透明度镂空),车漆部件刷成白色。每个像素取 32 个采样,把打孔皮革、钻孔刹车盘、胎侧字、碳纤维纹这类平铺的细纹平均成它的色调;采样太少,这些细纹会变成一粒粒的噪点;
- 烘焙粗糙度、金属度和法线(每像素 16 个采样),合成 LabPBR 的
_s、_n(不要的话加--no-pbr)。
然后照常导出,再运行 python tools/vehicle_atlas_fixup.py <assets 目录> <名字>:按部件名把玻璃区域改成半透明,把灯的区域填成灯色(亮灯时按贴图颜色全亮显示,烘焙出来的灯罩往往是暗的)。
一辆细节很多的车,4096 的图集要烘一个多小时(每烘一遍都要重新编译所有材质)。可以先用 1024 试一遍流程,没问题再用 4096。

