Record the NPC baseline inventory for the model overhaul (npc_base, 12 GLBs, builders, MakeHuman)
This commit is contained in:
1 parent
dee939c2ee
commit
2b6e774580
2 files changed
+75
-3
No files matched your search
@@ -83,6 +83,77 @@ Readings:
|
||||
- Material counts 7–11 per character are fixed detail slots (eyes, rubber, hivis, reflective,
|
||||
leather, metal), not extra tint slots.
|
||||
|
||||
## Baseline inventory (2026-11-04)
|
||||
|
||||
Recorded for the Blender NPC model overhaul track: the exact starting point before the local
|
||||
part pipeline is built. `npc_base.blend` is the frozen fallback; the 12 characters are assembled
|
||||
procedurally by `tools/blender_assets.py`; the MakeHuman prototypes live under `tmp/npc-research/`
|
||||
and are not the shipped path.
|
||||
|
||||
### `assets/models/npc/npc_base.blend` (frozen fallback)
|
||||
|
||||
- Mesh `npc_base`: **652 verts / 642 tris**, five material slots in order
|
||||
`pants, cloth, skin, hair, accessory`.
|
||||
- Armature: **14 bones** — `Hips, Spine, Neck, Head, ShoulderL/R, ElbowL/R, HandL/R, HipL/R, KneeL/R`
|
||||
(the required 13 core bones plus the `Hips` root).
|
||||
- It is the compact fallback, not the prototype host; the overhaul must not absorb prototype
|
||||
detail into it unless a separate contract decision approves it.
|
||||
|
||||
### 12 generated character GLBs
|
||||
|
||||
`audit` counts (glTF accessor; Blender `inspect` can differ ±1 on normal-split rounding):
|
||||
|
||||
| Character | Tris | Verts | | Character | Tris | Verts |
|
||||
| --- | ---: | ---: | --- | --- | ---: | ---: |
|
||||
| `npc_casual` | 5,034 | 4,607 | | `npc_firefighter` | 5,888 | 5,785 |
|
||||
| `npc_jacket` | 5,432 | 5,225 | | `npc_guard` | 5,670 | 5,671 |
|
||||
| `npc_coat` | 6,046 | 5,645 | | `npc_crowd_a` | 5,284 | 4,908 |
|
||||
| `npc_vest` | 5,532 | 5,195 | | `npc_crowd_b` | 4,812 | 4,550 |
|
||||
| `npc_dress` | 5,540 | 5,073 | | `npc_crowd_c` | 5,690 | 5,510 |
|
||||
| `npc_hoodie` | 5,864 | 5,325 | | `npc_crowd_d` | 5,810 | 5,444 |
|
||||
|
||||
All well under the 16,000/16,000 cap; the largest is `npc_coat` at 38% of the tri budget, so
|
||||
head/face/hand detail has ample headroom.
|
||||
|
||||
### Procedural builders (current geometry locations)
|
||||
|
||||
Coordinates are Blender metres, Z-up; face front is −Y / Godot +Z; `s` = ±1 side, `w` = build
|
||||
width scale.
|
||||
|
||||
- **Head** — `_face` + `_shape_head_mesh`: `sphere(Head, 0.155, (0, 0, 1.635), seg=24, rings=16,
|
||||
scale=(0.92, 1.0, 1.12))`. Forward-only sculpt (brow at z 1.695, cheek at z 1.612, jaw/chin at
|
||||
z 1.565); recessed creases rejected because they bake as dark AO patches.
|
||||
- **Eyes** — sclera `sphere(0.019, (0.052s, −0.134, 1.664), scale=(1.25, 0.62, 0.85))`;
|
||||
iris `sphere(0.0105, (0.052s, −0.141, 1.664), scale=(1.0, 0.55, 1.0))`; upper lid at z +0.014,
|
||||
lower lid at z −0.012; brow box at (0.052s, −0.143, 1.699).
|
||||
- **Nose** — bridge `cyl(0.016→0.022, (0, −0.145, 1.652))`, tip `sphere(0.022, (0, −0.162, 1.615))`,
|
||||
wings `sphere(0.012, (0.016s, −0.160, 1.606))`.
|
||||
- **Mouth** — slot `sphere(0.028, (0, −0.158, 1.583), scale=(1.0, 0.28, 0.12))`, lower lip
|
||||
`sphere(0.012, (0, −0.156, 1.578))`.
|
||||
- **Ears** — `sphere(0.036, (0.143s, 0.008, 1.63), scale=(0.42, 1.0, 1.35))` + lobe + inner concha.
|
||||
- **Hands** — `_hands_and_shoes`: palm `sphere(0.046, (0.275·s·w, −0.012, 0.762),
|
||||
scale=(0.80, 0.62, 0.88))`; four fingers base (…, 0.778) → tips z 0.701–0.714; thumb
|
||||
(…, 0.778 → 0.760 → 0.738). No finger bones; open palm + `HAND_ITEM_FORWARD` only.
|
||||
|
||||
### UV layout
|
||||
|
||||
- Five tint slots (`skin, hair, accessory, cloth, pants`) at 256² each; fixed detail slots
|
||||
(`eye_white`, rubber, hivis, reflective, leather, metal) are the extra material slots.
|
||||
- Authored texel density 64–122 px/m (below the background tier 128–256), fabric effective
|
||||
287–440 px/m via the 4× repeat; runtime tint carries the look. This is a recorded note until a
|
||||
portrait shows texture starvation.
|
||||
|
||||
### MakeHuman prototypes (not shipped; `tmp/npc-research/makehuman/`)
|
||||
|
||||
| File | Verts / tris | Bones | Slots | Note |
|
||||
| --- | ---: | ---: | --- | --- |
|
||||
| `makehuman_body.glb` | 19,320 / 6,444 | 0 | `skin_proto` | CC0 intake, unskinned, 1.82 m grounded |
|
||||
| `makehuman_retargeted.glb` | 7,062 / 6,444 | 14 | 5 tint | arm-down + contract rig, deltoid warp remains |
|
||||
| `makehuman_final.glb` | 6,651 / 6,407 | 14 | 8 (incl. `skin.001`, `eye_white`, `rubber`) | project head/hands/shoes swapped; duplicate `skin.001` |
|
||||
|
||||
Each GLB carries a stray 42-vert/80-tri `Icosphere` origin helper that must be dropped before any
|
||||
promotion.
|
||||
|
||||
## Scorecard skeleton
|
||||
|
||||
Verdicts use `qa-review` semantics: **P0** (blocker: wrong scale, broken normals, budget fail),
|
||||
|
||||
Reference in new issue
Block a user