# NPC roster visual review — 0.9.9 **Status: awaiting the owner verdict on row 4.** This is the review point for the Quaternius roster ([ADR-0017](adr/0017-quaternius-npc-base.md), [ADR-0018](adr/0018-quaternius-stage2-runtime-rig.md)). Four sheets: the twelve roles, two studio views, the animation poses and the crowd distance. ## Where the roster stands The first pass was signed off **with follow-ups**; all of its findings traced to build defects and are fixed: - **Worker bodies** (`npc_guard`, `npc_vest`, `npc_firefighter`, `npc_crowd_d`) had holes in the torso and an open crown because the build deleted the vest and hat materials — on the modular Worker the vest *is* the torso and the hat *is* the crown. Nothing is deleted any more; both are remapped, and the hoodie's brows, eyes and hair are transplanted onto the Worker head. - **Faces** had a unibrow, oversized eye quads and no mouth. They now have two brows, two eyes and an authored lip block on every base. - **Hats** are gone except the firefighter helmet (owner directive), and the performer's cone with them; carried props ride the hands. - **Hand and back gear** were authored for the old body (wrist y 0.78 → 1.017, chest 1.30 → 1.38, back 1.10 → 1.26). Every hand item now drops into the palm; the clipboard grips its top edge. Per-item numbers: [`blender-assets.md`](blender-assets.md#hand-item-fit-on-the-quaternius-rig). ## 1. Full-body roster (12 roles) ![NPC roster full body](blender_previews/sheet_npc_roster_0.9.9.jpg) ## 2. Front and profile per role ![NPC roster front and profile](blender_previews/sheet_npc_roster_views_0.9.9.jpg) ## 3. Animation poses (idle / sit / walk contact) Driven by the real `_animate()` path with the FSM frozen: arms hang, the seated pose puts the forearms on the thighs with the shins down, walk contact keeps contralateral opposition. ![NPC roster poses](blender_previews/sheet_npc_roster_poses_0.9.9.jpg) ## 4. Crowd distance (8 m) ![NPC roster at crowd distance](blender_previews/sheet_npc_roster_crowd_0.9.9.jpg) ## 5. Gear on the character Every piece worn by a real avatar through the runtime attach path — the sheet to judge row 4 by. ![Gear on the character](blender_previews/sheet_npc_gear_on_character.jpg) ## Signoff checklist | # | Question | Verdict | | --- | --- | --- | | 1 | Do the twelve characters read as distinct people at 8 m? | ☐ yes ☐ no | | 2 | Is the head size right for the body? | ☐ yes ☐ no | | 3 | Do the faces hold up at portrait distance — brows, eyes, mouth, hair? | ☐ yes ☐ no | | 4 | Do the hands and hand-held items (camera, clipboard, board, baton, parcel) read correctly? | ☐ yes ☐ no | | 5 | Is the firefighter helmet the only head gear, and does it sit correctly? | ☐ yes ☐ no | | 6 | Are the role outfits believable for a Hollywood-boulevard shift? | ☐ yes ☐ no | | 7 | Are the seeded tint palettes acceptable? | ☐ yes ☐ no | | 8 | Do the seated and walking poses hold up? | ☐ yes ☐ no | **Signoff:** ☐ approved as shipped ☐ approved with follow-ups ☐ rejected ## Still open 1. **Eyes have no whites** — single-colour quads on every base. 2. **Arms still graze the torso on the `worker` base** (accepted as tolerable for now). 3. **Roster variety is three meshes for twelve roles** — the modular part library is the fix. 4. **The wand and phone orientation** read poorly in the gear sheet; both may need re-authoring. ## Measured facts | Metric | Value | | --- | --- | | Characters | 12, all on the Quaternius 62-joint rig | | Triangles / glTF vertices | 6,218 … 6,436 / 13,012 … 13,459 | | Budget | 24,000 tris / 24,000 verts each | | Tint slots | `skin`, `cloth`, `pants`, `hair`, `accessory` + fixed detail | | Texel density | 73–74 px/m on 256² maps | | Height | 1.82–1.88 m | | 24-NPC frame budget | 175,264 tris, 0.87 ms (budget 50 ms) | | Gates | `audit` 12/12, `inspect` clean, `fit` OK, Godot 278/278, Python 167/167 | ## Reproducing ```sh godot --path . --script res://src/test/capture_npc_baseline.gd -- --out=res://tmp/npc-signoff godot --path . --script res://src/test/capture_npc_pose.gd -- --out=res://tmp/p --pose=idle godot --path . --script res://src/test/capture_npc_gear.gd -- --out=res://tmp/npc-gear ``` ## History This page replaced the 0.9.4 procedural-library baseline (eight hand-built characters, 13-core proportion audit). Its comparison sheets stay in `blender_previews/` as records. Per-character sources: [`npc-model-sourcing.md`](npc-model-sourcing.md); the face options that led to the full swap: [`screens/npc-face-gate/`](screens/npc-face-gate/README.md).