ModelTranslator: 烘焙前应用物体变换——修未应用缩放(cm单位FBX)致射线距离失效的脏色

well_uv.fbx(scale=0.01) 烘焙 22-33% 像素脏色,应用变换后与 well5k 像素级一致(<0.04%)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ud18010
2026-07-16 15:16:04 +08:00
co-authored by Claude Opus 4.8
parent e693a2edcf
commit 75d9244525
2 changed files with 9 additions and 2 deletions
+1 -1
View File
@@ -46,7 +46,7 @@ python model_translator.py out_bake/well1500/well1500.fbx # -> out/well1500/
```
- **model_decimate.py**:多 mesh 自动 join;三角化后 Decimate(collapse) 减到 `--tris`(±3%,最多 2 轮修正);旧 UV 全删后重展——默认锐边标 seam + MINIMUM_STRETCH 整岛展开(碎岛少、接缝落在硬边),质量不达标(翻转 >2% 或重叠 >8%)自动回退 Smart UV Project`--unwrap smart` 可强制旧行为;输出 `<名>_low.fbx``-o` 改目录),日志报 UV 岛数/利用率
- **model_bake.py**Cycles selected-to-active 烘焙。normal(切线空间 OpenGL +Y/ao 直接烘;color/metallic/roughness 把高模 Principled 对应输入接 Emission 烘 EMIT。`--size` 默认 2048`--samples` AO 采样默认 64,射线距离默认低模包围盒对角线 2%(`--ray-distance` 覆盖);低模无 UV 会报错,高低模包围盒差超 10% 打警告
- **model_bake.py**Cycles selected-to-active 烘焙。normal(切线空间 OpenGL +Y/ao 直接烘;color/metallic/roughness 把高模 Principled 对应输入接 Emission 烘 EMIT。`--size` 默认 2048`--samples` AO 采样默认 64,射线距离默认低模包围盒对角线 2%(`--ray-distance` 覆盖);低模无 UV 会报错,高低模包围盒差超 10% 打警告;导入后自动应用物体变换——未应用缩放的 FBX(如 cm 单位导出的 scale=0.01)会把射线距离缩到近零导致大面积烘空(脏色)
- 输出命名 `<名>_color/normal/metallic/roughness/ao.png`,正好命中转换器的纯网格贴图命名约定
## 转换规则
+8 -1
View File
@@ -57,7 +57,14 @@ def _import_fbx_joined(path, warnings):
% (os.path.basename(path), ", ".join(skipped)))
if not meshes:
return None
return join_meshes(meshes)
obj = join_meshes(meshes)
# 应用物体变换(世界坐标不变):cage_extrusion/max_ray_distance 按低模局部空间解释,
# 未应用的缩放(如 cm 单位 FBX 的 scale=0.01)会把射线距离缩到近零导致大面积打空(脏色)
bpy.ops.object.select_all(action='DESELECT')
obj.select_set(True)
bpy.context.view_layer.objects.active = obj
bpy.ops.object.transform_apply(location=True, rotation=True, scale=True)
return obj
def _setup_bake_target(low, stem):