refactor(kit): SM_ asset naming and topology validation per the modeling checklist

- Kit pieces export as SM_Kit_* (Unreal static-mesh convention) while the Blender
  objects keep their readable names; the kit loader strips the prefix so layout
  still addresses pieces by short name.
- facade_kit_build.py validates each piece before handoff (non-manifold edges,
  loose vertices, triangle count) and records the result in the part report:
  16 pieces, all manifold, no loose geometry, 12 tris each.
- ue_import_facade_kit.py removes kit assets the current build no longer produces,
  so a rename cannot leave two generations of the same piece behind.
- Kit re-imported and re-applied (625 pieces); packaged QA still PASS.
This commit is contained in:
zwitschi committed 2026-11-08 19:38:29 +01:00
1 parent 32dff056c3
commit 1b069188a2
60 files changed
+154 -97

No files matched your search

+14
View File
@@ -612,3 +612,17 @@ Scope: facts and traps that cost time to establish. Planned work lives in [TODO.
- Lesson: after any blockout regeneration, probe the staged buildings' world X spans
and compare them with `Geo/verification/2026-11-06-el-capitan-block.md` before
trusting a render. A shift of this size is invisible in a screenshot.
## 2026-11-09 — kit naming + topology validation (blender-modeler checklist)
- Kit assets now follow the Unreal convention: the Blender object keeps its readable
name (`Kit_Pilaster`), the exported asset and file are `SM_Kit_Pilaster`. The
kit loader strips the `SM_` prefix so the layout code still addresses pieces by
short name.
- `facade_kit_build.py::validate()` runs the blender-modeler cleanup checklist on
every piece before handoff — non-manifold edges, loose vertices, triangle count —
and records the result in the part report. Current kit: 16 pieces, **all
manifold, no loose geometry, 12 tris each**.
- `ue_import_facade_kit.py` now deletes kit assets that the current build no longer
produces, so a rename cannot leave two generations of the same piece in the
folder (the rename from `Kit_*` to `SM_Kit_*` did exactly that until it did).