diff --git a/MEMORY.md b/MEMORY.md index 4cf6bec..85ffcf8 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -18,6 +18,13 @@ canonical implemented-features list in `docs/development-status.md`. skull-conforming hair cap derived from the closed head shell, hides the scalp under that cap, and narrows the neck/shoulder body. Default head source stays `face` until the owner reviews the hair/body and the 12-variant rollout starts. +- **AI-assisted asset review loop (2026-11-04):** head/face shape decisions use a concept + + judge loop — generate a target concept (`generate_textures.generate_image`, Seedream) and use + `tools/describe_image.py` as the vision judge, iterating on the mesh until the judge's specific + fixes converge. This is what picked the MakeHuman head over the procedural displacement head + (`_head_proto` oscillates between "decorated egg" and "spiky wedges" at ~3/5 on the coarse + sphere). Review page: `docs/screens/head-review/README.md`; methodology note: + `docs/3d-model-review.md` §AI-driven head rework. - **MakeHuman hair/body prototype (2026-11-04):** `npc_casual --head mh` is 14,753 tris / 12,822 raw / 12,823 seam-split verts / 14 bones / 9 materials, `inspect` clean. All 12 variants were counted at 14,693–15,987 tris. Hair uses flat @@ -156,6 +163,13 @@ canonical implemented-features list in `docs/development-status.md`. (dark tangent patches) — hair skips the normal map. Generate the cap before deleting the hidden scalp, or the cap inherits the hole. The flatpak sandbox cannot read `/tmp`; helper scripts must live under `$PWD`. +- MakeHuman OBJ intake transform (`base.obj`): the source is Y-up, 16.946 units tall. To reach + the project Blender Z-up / metres / front -Y space: scale 0.10739, translate y +0.907 (ground + the feet), then rotate +90° around X (maps +Y→+Z up and +Z→−Y front). The full-res head carries + internal geometry (eyes/teeth/mouth shells) and is non-manifold; voxel-remesh and Catmull-Clark + subdivision both fragment it into shards. On the decimated head, weld first + (`remove_doubles` ~0.0002) then Laplacian `smooth_vert`; subdivision without the weld splits + along the GLB seam vertices. - MPFB gotchas: call `TargetService.bake_targets(body)` before any decimate (shape-key modifier error); add the built-in rig and capture arm weights before applying the MASK modifier, or `build_basemesh_position_info` divides by zero on an emptied bone group; @@ -228,6 +242,8 @@ canonical implemented-features list in `docs/development-status.md`. - Character checks: `python3 tools/blender_assets.py inspect|audit|fit`, `python3 tools/npc_proportions.py` - Docs: `python3 tools/check_docs.py` (every tracked image must be linked from its folder README) +- Head/part pipeline: `python3 tools/npc_parts.py build|extract|assemble|inspect|sheet|compare` + (Blender subcommands run under flatpak). Head sources: `build_character(head="face"|"proto"|"mh")`. - Reference research: `python3 tools/refcollect.py search --slug --limit N` (local-only), `tools/refboard.py` (Commons), `tools/three_up.py compose/rows`, `tools/scene_concepts.py generate/anchor/realism` @@ -247,6 +263,6 @@ Comedy Store map rebuild are complete. **Priority (2026-11-04, owner):** 1) the model overhaul** (head/face/hands, local part pipeline), 2) finish the MakeHuman character + the 3D model and map improvements, 3) ship it all together in the **0.10.0 minor**. The 0.9.7/0.9.8 character patches are published; `TODO.md` is the priority source. Test counts as of 2026-11-04: -Godot 277/277, Python 162/162, `check_docs` OK. +Godot 277/277, Python 167/167, `check_docs` OK.