Define the measurable face/hands acceptance criteria for the model overhaul
Full build / Import + headless tests (push) Successful in 59s
Full build / Full desktop build + optional release (push) Skipped

This commit is contained in:
zwitschi committed 2026-11-04 14:11:31 +01:00
1 parent 2b6e774580
commit ecd50503e7
2 files changed
+49 -1

No files matched your search

+2 -1
View File
@@ -41,9 +41,10 @@ the rest of §C remains the broad review checklist.
temporary MakeHuman head/hand swap. Recorded tris/verts, head subdivision, material slots, temporary MakeHuman head/hand swap. Recorded tris/verts, head subdivision, material slots,
UV layout and the exact locations of eye/mouth/finger geometry in UV layout and the exact locations of eye/mouth/finger geometry in
`docs/3d-model-review.md` §Baseline inventory. `docs/3d-model-review.md` §Baseline inventory.
- [ ] Define measurable acceptance: face front/three-quarter/profile at 1.5 m and 1.85 m; hands - [x] Define measurable acceptance: face front/three-quarter/profile at 1.5 m and 1.85 m; hands
open and gripping at 0.8 m; silhouette, eye/mouth readability, ear/nose/jaw planes, finger open and gripping at 0.8 m; silhouette, eye/mouth readability, ear/nose/jaw planes, finger
separation and gear contact. Keep the 16,000/16,000 cap; optional extra bones are allowed, but the required 13 core bones and rest positions must not move. separation and gear contact. Keep the 16,000/16,000 cap; optional extra bones are allowed, but the required 13 core bones and rest positions must not move.
Recorded in `docs/3d-model-review.md` §Overhaul acceptance criteria.
- [ ] Confirm the identity boundary: `npc_base.blend` is the frozen fallback and must not absorb - [ ] Confirm the identity boundary: `npc_base.blend` is the frozen fallback and must not absorb
prototype detail unless a separate contract decision approves it. prototype detail unless a separate contract decision approves it.
- [ ] Choose a local working-set layout: `tmp/npc-parts/<variant>/` (gitignored) for part `.blend` - [ ] Choose a local working-set layout: `tmp/npc-parts/<variant>/` (gitignored) for part `.blend`
+47
View File
@@ -154,6 +154,53 @@ width scale.
Each GLB carries a stray 42-vert/80-tri `Icosphere` origin helper that must be dropped before any Each GLB carries a stray 42-vert/80-tri `Icosphere` origin helper that must be dropped before any
promotion. promotion.
## Overhaul acceptance criteria (measurable)
Defined 2026-11-04 for the local part pipeline. A prototype must pass every applicable item
before it is rolled out to the other variants; the bar is the stylized low-poly target, not
photorealism.
### Face (one-variant prototype first)
Capture `front` (yaw 0°), `three_quarter` (yaw 35°) and `profile` (yaw 90°) at **1.5 m** and
**1.85 m** (32° FOV), matching `capture_npc_baseline.gd` (a new 1.5 m portrait capture is added
for this). Pass conditions:
- **Eyes** — sclera + iris + both lids distinct at 1.85 m; at 1.5 m the iris is a readable dark
dot against the white sclera, not a floating oval; no socket ring or lid seam.
- **Mouth** — the mouth line and lower-lip volume read at both distances; no moustache-like
shadow from a floating dark slot.
- **Nose** — bridge, tip and ala planes read in three-quarter and profile; no nose-wing seam or
inverted normal at the base.
- **Ears** — concha depth + lobe read in profile; not a flat disc.
- **Jaw/cheek/chin** — front and profile show a jaw transition and cheek/chin planes; no faceted
plane seams, inverted normals or z-fighting.
- **Silhouette** — front/three-quarter/profile agree; face direction is unambiguous.
- **AO** — the 256² bake stays clean: no recessed crease baking into a dark patch.
### Hands (one-variant prototype first)
Capture an **open palm** and a **relaxed grip** at **0.8 m** (`--view=hand` plus a new grip
capture). Pass conditions:
- **Open palm** — four fingers and a thumb read as a hand, not a mitten; at least two of the four
finger gaps are readable.
- **Grip** — the palm plus curled fingers silhouette reads; no finger-through-palm clipping.
- **Gear contact** — phone, cup, clipboard, camera, flashlight, wand and radio contact the palm
at 0.8 m with `HAND_ITEM_FORWARD` unchanged; no floating or hand-through-item clipping.
### Contract (both, every prototype)
- 16,000 triangles / 16,000 glTF vertices per character; gear stays at 1,500.
- Optional extra bones are allowed; the required 13 core bones and their rest positions must not
move; the `npc_base` mesh node name and the five tint slots stay unchanged.
### Measurement gates
`blender_assets.py inspect`/`audit`/`fit`, `npc_proportions.py`, the 24-NPC budget, Godot + Python
tests, the 48-frame baseline and the 96-frame pose/context review all stay authoritative; the new
face/hands captures are the visual bar for this track.
## Scorecard skeleton ## Scorecard skeleton
Verdicts use `qa-review` semantics: **P0** (blocker: wrong scale, broken normals, budget fail), Verdicts use `qa-review` semantics: **P0** (blocker: wrong scale, broken normals, budget fail),