ModelTranslator: UV 质量门拆分并校准——翻转 2% / 重叠 8%(well1500 seam 不再误回退)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ud18010
2026-07-16 12:21:27 +08:00
co-authored by Claude Opus 4.8
parent 88424f24e0
commit 0ba883b8d0
3 changed files with 5 additions and 4 deletions
+1 -1
View File
@@ -45,7 +45,7 @@ python model_bake.py src/well1500.fbx src/well1500_low.fbx # -> out_bake/well1
python model_translator.py out_bake/well1500/well1500.fbx # -> out/well1500/Unity 资源)
```
- **model_decimate.py**:多 mesh 自动 join;三角化后 Decimate(collapse) 减到 `--tris`(±3%,最多 2 轮修正);旧 UV 全删后重展——默认锐边标 seam + MINIMUM_STRETCH 整岛展开(碎岛少、接缝落在硬边),质量不达标(翻转/重叠 >2%)自动回退 Smart UV Project`--unwrap smart` 可强制旧行为;输出 `<名>_low.fbx``-o` 改目录),日志报 UV 岛数/利用率
- **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% 打警告
- 输出命名 `<名>_color/normal/metallic/roughness/ao.png`,正好命中转换器的纯网格贴图命名约定
+3 -2
View File
@@ -24,7 +24,8 @@ def within_tolerance(target, actual, tol=TOLERANCE):
return abs(actual - target) <= target * tol
UV_BAD_TOL = 0.02 # 质量门:UV 翻转/重叠面占比超此值回退 smart_project
UV_FLIP_TOL = 0.02 # 质量门:UV 翻转面占比超此值回退 smart_project
UV_OVERLAP_TOL = 0.08 # 质量门:UV 重叠面占比阈值(手工 UV 同口径约 5%,灾难性失败 >20%)
def count_islands(n_faces, adjacent_pairs):
@@ -199,7 +200,7 @@ def _do_unwrap(obj, mode, warnings):
_unwrap_seam(obj, warnings)
m = _collect_uv_metrics(obj)
overlap = m["overlap"] or 0.0
if m["flipped"] <= UV_BAD_TOL and overlap <= UV_BAD_TOL:
if m["flipped"] <= UV_FLIP_TOL and overlap <= UV_OVERLAP_TOL:
m["mode"] = "seam"
return m
warnings.append("seam 展开质量不达标(翻转 %.1f%% 重叠 %s),回退 smart_project"