SuperAPI AI 工具集

blender-texture-baking

设计与创作

查看项目

更新于 10-16 19:38

技能介绍

纹理烘焙(Cycles)用于在 Blender 5.2 的 Cycles 引擎中把高多边形模型的细节投射烘焙到低多边形模型的纹理贴图上。其执行模型位于 blender-core,UV 来自 blender-retopology-uv,材质来自 blender-pbr-materials。

用途:高转低法线贴图(配合笼子或挤出控制射线),以及 AO、曲率、ID、厚度、基础色/粗糙度/金属度等多种通道的烘焙,适合游戏资产、实时渲染管线中的贴图准备。

主要能力:一次调用可烘焙多个通道;自烘焙模式可将程序化材质烘焙为贴图(不传 --high);脚本自动选择 GPU(OptiX/CUDA/HIP/Metal/oneAPI)并在不可用时回退 CPU;自动创建具有正确色彩空间的图像;临时节点会被清理;输出命名为 T_<name>_<N|AO|CURV|BC|R|M|ORM...>.png。

使用方式(命令示例,保持原样): 一、高转低烘焙: scripts/bake_maps.py -- --low SM_Crate --high Crate_high Crate_bolts --maps normal ao curvature id
--res 2048 --samples 64 --margin-px 16 --pack-orm --out //textures 二、自烘焙(程序化→纹理,无 --high): --low SM_Crate --maps basecolor roughness metallic normal --pack-orm

准备清单(多数烘焙错误源于此):低模需展开且无重叠 UV(堆叠/镜像的岛需在 U 上移动 +1),在烘焙分辨率下留出至少 8 像素的边距,并应用缩放;低模上的硬边等于 UV 接缝,可使用平滑着色让烘焙处理渐变,或在接缝处拆分硬边,切勿在 UV 岛内部放置硬边;按引擎的方式对低模三角化,或直接导出三角化网格,三角化不一致会表现为着色接缝;高模需完全覆盖低模且只略微凸出,浮动元素(螺栓、面板细节)可悬浮在表面上方,但须保持在挤出距离内;命名采用 X_low / X_high 配对,按部件分别烘焙,或将部件炸开(沿轴移动每对)以免相邻部件相互投射,之后再复位;按需在高模上应用修改器(多分辨率与细分会自动求值)。

射线:挤出与笼子。--extrusion(米)将射线原点从低模表面向外推,必须大于高模凸出低模的最远距离,默认值为低模对角线的 2%,max_ray_distance 为 2 倍挤出距离。笼子(--cage Crate_cage)是与低模拓扑相同的副本,通过 Displace/“Push”膨胀,适用于均匀挤出失败的情况(尖锐凹角、薄部件),可在射线未命中的位置局部编辑笼子。过小会产生孔洞或细节缺失,过大会导致网格其他部分投射进来(穿插、鬼影)。

贴图指南:normal 为非彩色、切线空间、OpenGL(对 Unreal 用 --directx),16 采样 AA 足够,游戏用 8 位 PNG 即可;ao 为非彩色,64–256 采样,除非需要接触 AO,否则只烘焙高模(不含地面);curvature 为非彩色,0.5 为平坦,由烘焙法线派生(凸白/凹暗),驱动边缘磨损;id 为 sRGB,每个高模材质一个纯色,用材质作遮罩;thickness 为非彩色,使用内部射线的 AO,暗为薄,用于 SSS/半透明遮罩;basecolor/metallic/opacity 通过自发光覆盖,读取源材质的 Principled 输入(也包括程序化链);roughness、emit、combined 使用 Cycles 原生通道,combined 为受光结果(光照贴图、风格化);position 为浮点,用于渐变遮罩。ORM = R:AO G:Roughness B:Metallic,是 glTF/Unreal 标准,Unity 使用不同的打包方式(见 blender-pbr-materials)。

修复常见瑕疵:圆柱上的波浪线多因低模面数过低与平滑渐变,可增加分段、使用笼子或在低模上增加支撑;细节倾斜(螺栓歪斜)因射线方向跟随平均低模法线,可用硬边加接缝、笼子,或单独烘焙浮动元素;黑色/垃圾区域因射线未命中或命中背面,可提高挤出、修正翻转法线(见 blender-asset-qa)、检查高模覆盖;引擎中可见接缝因边距过小、硬边无接缝、切线不同,可令 2k 下边距 ≥ 16 像素、在硬边处设接缝、导出切线(MikkTSpace);来自相邻部件的细节因部件过近,可炸开烘焙或按对象配对烘焙;引擎中绿色反转因 OpenGL/DirectX 不匹配,可对 Unreal 使用 --directx,或在纹理导入器翻转 G;阶梯/色带因 8 位与大幅平坦渐变,可烘焙为 16 位(float_buffer)并在导出时抖动。

烘焙非 PBR 数据:顶点色使用 bake.target = "VERTEX_COLORS" 并激活颜色属性(适用于移动端与免 Roblox 着色);光照贴图将 combined 烘焙到 UV2(--uv-layer UVMap_Lightmap)并配合场景灯光;多分辨率(无独立高模对象)使用 bake.use_multires=True、bake.type="NORMALS"|"DISPLACEMENT"|"VECTOR_DISPLACEMENT"、bake.use_lores_mesh=True,然后调用 bpy.ops.object.bake_image(),视口级别为低模,雕刻级别为高模。

注意事项:目标图像必须是低模对象每个材质中激活的图像纹理节点(脚本会处理);Cycles 烘焙使用激活的 UV 贴图(可用 --uv-layer 选择);图像不会自动保存,需 img.save() 或 save_render,打包或内部图像在重新加载时会消失;5.2 中 Cycles 纹理缓存(.tx)用于渲染内存,不影响烘焙结果;请先对低模+高模运行 blender-asset-qa,因为翻转法线与悬浮块会产生大多数烘焙垃圾。