Add MakeHuman head hair/body prototype and 12-variant rollout plan

This commit is contained in:
zwitschi committed 2026-11-04 18:08:03 +01:00
1 parent 958d3ae0ff
commit b297c4543f
9 files changed
+269 -89

No files matched your search

+6 -4
View File
@@ -260,9 +260,11 @@ welding the added eye/brow pieces into the head shell and a skull-conforming hai
**Standalone head re-review (2026-11-04):** the separate
`assets/models/blender_src/makehuman_head.glb` prototype (12,641 tris / 7,690 split verts,
with a skin eyelid mask, recessed globes, flat iris/pupil discs and surface-anchored brows)
was **rejected** by the vision gate: the globe depth reads inconsistently between front,
three-quarter and profile, the iris reads decal-locked at three-quarter, and the lid does
not visibly clip the globe. It stays local until real eyelid geometry passes; see
was **accepted by the owner** as a basic human head. The automated vision gate still returns
REJECT on the eye/lid region (globe depth, lid overlap, iris at three-quarter) as deferred
polish. The assembled `npc_casual --head mh` now adds a skull-conforming hair cap, a hidden
scalp trim and a narrowed neck/shoulder body: 14,753 tris / 12,823 seam-split verts /
14 bones / 9 materials, `inspect` clean. All 12 variants count 14,693–15,987 tris. See
[`makehuman-head-review.md`](makehuman-head-review.md).
### Head subdivision comparison (2026-11-04)
@@ -493,7 +495,7 @@ and the full carded-cluster foliage pass is the one remaining owner-gated P1. No
## Next actions
- Review the standalone [`makehuman-head-review.md`](makehuman-head-review.md) prototype before integrating any head/hand part into the character library.
- Review the assembled [`makehuman-head-review.md`](makehuman-head-review.md) prototype (hair cap and full-body silhouette) before rebuilding the 12 shipped character GLBs.
Tracked in [`TODO.md`](../TODO.md) `3D model re-evaluation`: the remaining `A. Baseline…` item is
+2
View File
@@ -140,11 +140,13 @@ MakeHuman sources against the character contract and records the 2026-11-03 dire
```bash
flatpak run org.blender.Blender --background --python "$PWD/tools/blender_assets.py" -- build
flatpak run org.blender.Blender --background --python "$PWD/tools/blender_assets.py" -- build --head mh
flatpak run org.blender.Blender --background --python "$PWD/tools/blender_assets.py" -- render
python3 tools/blender_assets.py sheet # docs/blender_previews/sheet_*.jpg
python3 tools/blender_assets.py audit # no Blender needed
python3 tools/blender_assets.py fit # gear-vs-body fit report
python3 tools/blender_assets.py texels # per-slot texel density (px/m) of the characters
# `build --head mh` selects the MakeHuman head; the default stays `face` until rollout.
godot --headless --path . --import
```
+1 -1
View File
@@ -9,7 +9,7 @@ capture harnesses.
| --- | --- |
| [![sheet_npc.jpg](sheet_npc.jpg)](sheet_npc.jpg) <br> `sheet_npc.jpg` | Eight skinned character variants (casual, jacket, coat, hi-vis vest, dress, hoodie, firefighter, guard) with their gear attach points. |
| [![sheet_npc_baseline.jpg](sheet_npc_baseline.jpg)](sheet_npc_baseline.jpg) <br> `sheet_npc_baseline.jpg` | Neutral studio baseline: 8 characters x front, three-quarter, profile, back, full body and crowd views. |
| [![sheet_makehuman_head.jpg](sheet_makehuman_head.jpg)](sheet_makehuman_head.jpg) <br> `sheet_makehuman_head.jpg` | Local MakeHuman head prototype: front, three-quarter and profile review views. The vision gate rejected this build (inconsistent globe depth and no visible lid overlap); see [`../makehuman-head-review.md`](../makehuman-head-review.md). |
| [![sheet_makehuman_head.jpg](sheet_makehuman_head.jpg)](sheet_makehuman_head.jpg) <br> `sheet_makehuman_head.jpg` | MakeHuman head: front, three-quarter and profile review views. The owner accepted the basic head; the automated vision gate still rejects the eye/lid region as deferred polish. See [`../makehuman-head-review.md`](../makehuman-head-review.md). |
| [![sheet_npc_baseline_compare-body.jpg](sheet_npc_baseline_compare-body.jpg)](sheet_npc_baseline_compare-body.jpg) <br> `sheet_npc_baseline_compare-body.jpg` | Neck/shoulder transition: fuller neck base and a lower shoulder root. |
| [![sheet_npc_baseline_compare-face-detail.jpg](sheet_npc_baseline_compare-face-detail.jpg)](sheet_npc_baseline_compare-face-detail.jpg) <br> `sheet_npc_baseline_compare-face-detail.jpg` | Face detail: nose ala wings, a single rounded mouth and a darker ear concha. |
| [![sheet_npc_baseline_compare-face.jpg](sheet_npc_baseline_compare-face.jpg)](sheet_npc_baseline_compare-face.jpg) <br> `sheet_npc_baseline_compare-face.jpg` | Face-depth pass: recessed sclera, upper lid and sculpted chin/cheek planes. |
+40 -20
View File
@@ -1,9 +1,12 @@
# MakeHuman head prototype
Status: **local prototype, rejected by the automated visual gate, not integrated.**
The asset is a standalone head/neck extracted from the CC0 MakeHuman base in
`tmp/npc-research/makehuman/base.obj`. It is kept as a reviewable experiment and
is not part of the shipped NPC contract.
Status: **owner-accepted head, assembled prototype, not yet shipped.**
The owner accepted the basic human head on 2026-11-04. The automated vision gate
still records REJECT on the eye/lid region as deferred polish. The asset is a
standalone head/neck extracted from the CC0 MakeHuman base in
`tmp/npc-research/makehuman/base.obj`; the assembled path now adds hair, a hidden
scalp trim and the procedural body. The 12 shipped GLBs have not been rebuilt
with it yet.
## Asset
@@ -14,10 +17,12 @@ is not part of the shipped NPC contract.
components, cuts an almond aperture through a skin eyelid mask, adds recessed
eyeballs with flat iris/pupil discs, anchors brows to the face surface, renders
front/three-quarter/profile and exports the standalone GLB.
- Measurements (final build, `inspect`): **12,641 triangles / 7,690 split
vertices**; bounds approximately `x ±0.094 m`, `y -0.180…0.042 m`,
`z 1.530…1.803 m` in project Z-up space. It is inside the 16,000/16,000
character cap.
- Measurements (final standalone build, `inspect`): **12,641 triangles / 7,690
split vertices**; bounds approximately `x ±0.094 m`, `y -0.180…0.042 m`,
`z 1.530…1.803 m` in project Z-up space.
- Assembled `npc_casual --head mh`: **14,753 triangles / 12,823 seam-split
vertices / 14 bones / 9 materials**, `inspect` clean. All 12 variants count
14,693–15,987 triangles with the same head.
- Materials used: `skin`, `eye_white`, `iris`, `pupil`, `hair`. No textures are
baked into this prototype.
@@ -69,8 +74,10 @@ Accept only if:
## Judge result
**VERDICT: REJECT** (vision judge `z-ai/glm-5.3-flash`, final build render set
above). The gate is blocked; the prototype is not presented as an accepted head.
**Owner verdict: ACCEPT (basic human head, 2026-11-04).**
**Automated vision gate: REJECT** (vision judge `z-ai/glm-5.3-flash`, final
standalone build render set above). The eye/lid findings below remain deferred
polish; they are no longer a rollout blocker because the owner accepted the head.
Blocking findings:
@@ -96,24 +103,37 @@ Should-fix findings:
- the catchlight is baked geometry and is not consistent between eyes.
What passed: the skin/eye material remap is correct, the eye openings are
closed, the standalone GLB reports **12,641 triangles / 7,690 split vertices**
with no issues, and an assembled `npc_casual` with this head passes `inspect` at
**15,532 / 16,000 triangles, 13,310 split vertices, 14 bones, no issues**.
closed, the standalone GLB reports **12,641 triangles / 7,690 split vertices**,
and an assembled `npc_casual` with this head passes `inspect` at **14,753 /
16,000 triangles, 12,823 seam-split vertices, 14 bones, no issues**.
Known limits: bald mannequin-like presentation, stylized geometry-only
iris/pupil, no rig, no UV texture pass, and the neck cap is a review cut rather
than a body-welded seam.
## Next steps after the gate passes
## Assembled prototype (2026-11-04)
- `_makehuman_head` imports the GLB and adds a **skull-conforming hair cap**
derived from the closed head shell (scaled shell + boolean front-sphere
cut + decimate). Hair skips the old `hair_normal.png` because the skull UVs
produced large dark tangent patches.
- Head faces fully covered by the cap are deleted to recover ~950 triangles;
boundary faces stay as a safety band, so the accepted face geometry is
untouched. The hidden neck plug uses 12 segments.
- The procedural body was narrowed at the neck and shoulders (chest 0.158,
neck base 0.060, neck top 0.054, shoulder root z 1.345) and its skin decimate
dropped to 0.21 so all 12 variants fit the 16,000 cap.
- Local review renders: `tmp/npc-parts/prototype_mh/renders/` (portrait
front/three-quarter/profile and full-body front/three-quarter).
## Deferred polish
- Replace the radial lid mask with real upper/lower lid masses that fold over
the globe, with pointed canthi, and pass the profile view.
- Move the iris onto a curved cornea cap so its orientation follows the globe at
three-quarter angles, and use a lighting-driven catchlight instead of baked
white geometry.
- Compare against the project `_face` baseline and decide whether this head is
the base for the local head/face overhaul.
- Add a clean UV/material pass and a contract armature/weights if it becomes
part of a library character.
- Keep the source script under `tmp/`; promote only the reviewed GLB and durable
docs/preview sheet.
- Refine the hair cap silhouette (current short cap reads as a helmet) and
improve the full-body shoulder/arm shape before the 12-variant rollout.
- Add a clean UV/material pass and a contract armature/weights when the head
becomes part of the shipped library characters.
+7 -7
View File
@@ -46,13 +46,13 @@ project head/hands swap reduced this to **6,407 / 16,000 tris and**
**6,651 / 16,000 verts**, but manual shoulder/neck retopology and part cleanup
remain before it can be considered shippable.
A standalone MakeHuman head prototype is recorded in
[`makehuman-head-review.md`](makehuman-head-review.md); it remains local/un-integrated
until the overhaul accepts it.
The head/face/hand overhaul in [`TODO.md`](../TODO.md) is the prerequisite: the
MakeHuman body should reuse the approved local head/hand parts rather than
forking a second face implementation.
A standalone MakeHuman head is recorded in
[`makehuman-head-review.md`](makehuman-head-review.md). The owner accepted the basic
human head on 2026-11-04; the assembled path (`build_character(head="mh")`) adds a
skull-conforming hair cap and hides the scalp under it. The 12 shipped GLBs still use
the procedural head until the hair/body review and rollout in [`TODO.md`](../TODO.md).
The MakeHuman body should reuse the approved local head/hand parts rather than forking
a second face implementation.
## Provenance rules
+7 -6
View File
@@ -3,8 +3,8 @@
> **Historical page / changed source (2026-11-04).** The numbers below describe the
> earlier decimated MakeHuman head (1,548-tri skin). The shared source
> `assets/models/blender_src/makehuman_head.glb` now holds the higher-resolution
> standalone prototype; its automated vision gate returned **REJECT** (inconsistent
> globe depth across views and no visible lid overlap). See
> standalone prototype. The owner accepted the basic head; the automated vision gate
> still records REJECT on the eye/lid region as deferred polish. See
> [`../../makehuman-head-review.md`](../../makehuman-head-review.md). Re-run the
> library head build before relying on the comparison counts below.
@@ -60,8 +60,9 @@ Left to right: front, three-quarter, profile.
4. The head skin is 1.5k tris (smooth but low-poly); a retopology pass could add resolution if a
portrait shows faceting.
## Decision needed
## Decision (2026-11-04, owner)
Approve or reject the MakeHuman-head direction. If approved, the next step is rolling it into the
other 11 variants (one asset family at a time) with a before/after sheet per batch, and re-running
the 24-NPC budget + AO bake.
The MakeHuman-head direction is approved for the basic human head. The remaining review is the
assembled prototype's hair cap and full-body silhouette. After that, roll the head into the other
11 variants (one asset family at a time) with a before/after sheet per batch, then re-run the
24-NPC budget + AO bake.