Retire the NPC review pages after owner acceptance and repoint every reference
This commit is contained in:
1 parent
d5e180e50c
commit
fcbeee0db2
25 files changed
+53
-221
No files matched your search
@@ -5,10 +5,10 @@ Status: **baseline measured; scorecard open.** This is the working document for
|
||||
Blender skill guidance says the targets are, the ranked candidate gaps, and the decisions that
|
||||
still need the project owner. Nothing here re-opens the accepted 0.9.4 limits by itself.
|
||||
|
||||
Related documents: [`npc-visual-review.md`](npc-visual-review.md) (accepted 0.9.4 limits and
|
||||
before/after sheets), [`npc-visual-review.md`](npc-visual-review.md#proportion-audit) (proportion guide),
|
||||
[`blender-assets.md`](blender-assets.md) (asset contract), [`asset-tooling.md`](asset-tooling.md)
|
||||
(commands).
|
||||
Related documents: [`npc-model-sourcing.md`](npc-model-sourcing.md) (sources, shipped roster and
|
||||
build steps), [`blender-assets.md`](blender-assets.md) (asset contract),
|
||||
[`asset-tooling.md`](asset-tooling.md) (commands). The 0.9.4 procedural baseline this page was
|
||||
measured against no longer ships; its before/after sheets stay in `blender_previews/`.
|
||||
|
||||
## Method and skill routing
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@ This folder holds the project documentation, visual references and generated QA
|
||||
- [`../tools/README.md`](../tools/README.md) — tool inventory, categories and test runner
|
||||
- [`gameplay.md`](gameplay.md) — controls, venues and escalation
|
||||
- [`venues.md`](venues.md) — Hollywood, Joke Shop and TV Studio real-site mapping
|
||||
- [`npc-visual-review.md`](npc-visual-review.md) — NPC visual baseline, acceptance criteria and ranked gaps
|
||||
- [`3d-model-review.md`](3d-model-review.md) — 3D model re-evaluation: measurements, scorecard and ranked gaps
|
||||
- [`development-status.md`](development-status.md) — implemented features, current gaps and active planning
|
||||
- [`accessibility.md`](accessibility.md) — accessibility statement and known gaps
|
||||
|
||||
@@ -79,7 +79,7 @@ rollout.
|
||||
- **Date:** 2026-11-05 (owner, at the `0.9.9` face/silhouette gate)
|
||||
|
||||
The owner chose **option (a) full swap** from
|
||||
[`docs/screens/npc-face-gate/`](../../screens/npc-face-gate/README.md): every roster character
|
||||
the face/silhouette gate (its sheets were retired with the review pages): every roster character
|
||||
moves onto the Quaternius base, and the procedural generator plus the MakeHuman head retire to
|
||||
the tested fallback rather than staying in the shipped roster.
|
||||
|
||||
|
||||
@@ -220,8 +220,8 @@ developer tools only — runtime, tests and CI consume committed GLBs and maps.
|
||||
| `tools/npc_pipeline.py` | Builds the skinned base avatar, five-slot material maps, palette and AI-fabric preparation (`prepare`/`palette`) | `npc_base.glb`, `assets/textures/npc/*_{albedo,normal,orm}.png`, `palette.json` | `audit_glb` against the 24,000-triangle / 24,000-vertex base contract (13 core bones required; extras allowed) |
|
||||
| `tools/blender_assets.py` | Builds/renders the library: 12 characters, 15 gear pieces, 20 props, plus `manifest.json`; stdlib `audit`/`fit`/`sheet`/`list` | `assets/models/blender/{npc,npc_gear,props}/*.glb` | Character cap 24,000 tris / 24,000 verts, 1,500 per gear, 4,000 per prop; grounding, UV, degenerate-triangle, attach-fit and manifest coverage checks |
|
||||
| `tools/bake_ao.py` | Bakes per-asset AO maps | `<asset>_ao.png` (256²) | Wired through `Materials.apply_ao()`/`SurfaceMaterials`; cloth/pants opt out (see below) |
|
||||
| `tools/npc_proportions.py` | Measures exported GLB rest pose (height, head, shoulders, hips, torso, limbs, feet) against the stylized guide | report / JSON in `docs/npc-visual-review.md#proportion-audit` | All eight variants must stay inside the guide after a body change |
|
||||
| `tools/npc_baseline.py` | Assembles neutral-baseline sheets and before/after comparisons | `docs/blender_previews/sheet_npc_baseline*.jpg` | Human review against `docs/npc-visual-review.md` |
|
||||
| `tools/npc_proportions.py` | Measures exported GLB rest pose (height, head, shoulders, hips, torso, limbs, feet) against the stylized guide | report / JSON in `docs/3d-model-review.md#character-measurements` | All eight variants must stay inside the guide after a body change |
|
||||
| `tools/npc_baseline.py` | Assembles neutral-baseline sheets and before/after comparisons | `docs/blender_previews/sheet_npc_baseline*.jpg` | Human review against `docs/3d-model-review.md` |
|
||||
| `src/test/capture_npc_baseline.gd` | Fixed-camera studio baseline, 8 variants × 6 views | local `tmp/` frames | Neutral silhouette/face/gear review |
|
||||
| `src/test/capture_npc_review.gd` | Final-context gate: 8 variants × 2 venues × day/night × 3 distances = 96 frames, crowd hidden, review-only `character_override` for the guard | local `tmp/` frames | Pre-build acceptance gate for gear fit and venue lighting |
|
||||
| `src/test/capture_realism.gd` | Venue realism stages plus a frozen portrait and surface close-ups | `docs/screens/realism/<run>/` | Optional vision judge; portrait is the only avatar-detail capture |
|
||||
@@ -244,8 +244,8 @@ Runtime contracts that must survive any character change:
|
||||
then run `godot --headless --path . --import`; never commit a no-op full rebuild.
|
||||
|
||||
Evidence and detailed contracts live in [`blender-assets.md`](blender-assets.md),
|
||||
[`npc-visual-review.md`](npc-visual-review.md) and
|
||||
[`npc-visual-review.md#proportion-audit`](npc-visual-review.md#proportion-audit); command-level usage is in
|
||||
[`3d-model-review.md`](3d-model-review.md) and
|
||||
[`3d-model-review.md#character-measurements`](3d-model-review.md#character-measurements); command-level usage is in
|
||||
[`asset-tooling.md`](asset-tooling.md).
|
||||
|
||||
### Local map development tooling (planned)
|
||||
@@ -442,7 +442,7 @@ architecture document.
|
||||
| [`docs/adr/`](adr/) | Immutable decision records with context and consequences | Decision history linked from §9 |
|
||||
| [`docs/asset-tooling.md`](asset-tooling.md) | Build/audit/capture commands, optional Blender MCP and pipeline usage | Operational appendix to the pipeline section |
|
||||
| [`docs/blender-assets.md`](blender-assets.md) | Blender library art direction, roles, layout and checks | Operational asset appendix; contract lives here in §5 |
|
||||
| [`docs/npc-visual-review.md`](npc-visual-review.md) | NPC baseline views, acceptance criteria, visual gaps and proportion audit | Visual-QA appendix to the character tooling section |
|
||||
| [`docs/3d-model-review.md`](3d-model-review.md) | Character and asset measurements, scorecard and ranked gaps | Visual-QA appendix to the character tooling section |
|
||||
| [`docs/3d-model-review.md`](3d-model-review.md) | Scorecard, measurements and ranked asset gaps | Working review companion to §5 |
|
||||
| [`docs/npc-model-sourcing.md`](npc-model-sourcing.md) | Character-source evaluation and licence/prototype outcome | Supports the character tooling section and ADR-0015 |
|
||||
| [`docs/getting-started.md`](getting-started.md) | Setup, commands, controls | Developer onboarding |
|
||||
|
||||
@@ -553,7 +553,7 @@ contract.
|
||||
|
||||
`tools/npc_proportions.py` checks the eight character GLBs against the shared
|
||||
height/head/shoulder/hip/torso/leg/arm/foot guide; the current results are in
|
||||
[`npc-visual-review.md`](npc-visual-review.md#proportion-audit). It reads the exported GLBs
|
||||
[`3d-model-review.md`](3d-model-review.md#character-measurements). It reads the exported GLBs
|
||||
and does not require Blender.
|
||||
|
||||
`capture_npc_pose.gd` is the pose/deformation harness for the 3D re-evaluation: idle,
|
||||
@@ -578,7 +578,7 @@ camera, studio lighting and no venue/HUD/animation. The raw PNGs stay in
|
||||
`tmp/`; `tools/npc_baseline.py sheet` builds the committed contact sheet, and
|
||||
`tools/npc_baseline.py compare --before DIR --after DIR` builds the review
|
||||
comparison after a model change. See
|
||||
[`npc-visual-review.md`](npc-visual-review.md).
|
||||
[`3d-model-review.md`](3d-model-review.md).
|
||||
|
||||
```bash
|
||||
godot --path . --script res://src/test/capture_npc_baseline.gd -- \
|
||||
|
||||
@@ -9,7 +9,7 @@ replaces the procedural body with a baked CC0 Quaternius base
|
||||
fallback until the Quaternius 12-variant baseline passes review. `NpcAvatar` selects the
|
||||
character variants and attaches the gear; `WorldBuilder` loads the prop library
|
||||
with colliders and phase-driven emissives. The 0.9.4 neutral baseline and its
|
||||
acceptance criteria are in [`npc-visual-review.md`](npc-visual-review.md);
|
||||
acceptance criteria are in [`architecture.md`](architecture.md#character-and-gear-asset-contract);
|
||||
the committed 8 × 6 contact sheet is
|
||||
[`blender_previews/sheet_npc_baseline.jpg`](blender_previews/sheet_npc_baseline.jpg).
|
||||
|
||||
@@ -290,4 +290,4 @@ carry baked AO and the shared neutral material maps described above.
|
||||
chin/cheekbone, nose, lips) but its `seg=18/rings=12` head still reads
|
||||
somewhat faceted at portrait range; a subdivision/deeper-sculpt prototype is
|
||||
gated on the owner scorecard review. The full ranked list and measurements are
|
||||
in [`npc-visual-review.md`](npc-visual-review.md).
|
||||
in [`3d-model-review.md`](3d-model-review.md).
|
||||
@@ -18,13 +18,8 @@ capture harnesses.
|
||||
| [](sheet_npc_baseline_compare-tex256.jpg) <br> `sheet_npc_baseline_compare-tex256.jpg` | 128 -> 256 px NPC slot maps on the same camera. |
|
||||
| [](sheet_npc_baseline_compare-texuv.jpg) <br> `sheet_npc_baseline_compare-texuv.jpg` | 4x fabric weave with the baked per-character AO removed. |
|
||||
| [](sheet_npc_baseline_compare-torso.jpg) <br> `sheet_npc_baseline_compare-torso.jpg` | Torso/hip taper without changing the skeleton or build multipliers. |
|
||||
| [](sheet_npc_roster_0.9.9.jpg) <br> `sheet_npc_roster_0.9.9.jpg` | 0.9.9 shipped roster: all twelve roles on the CC0 Quaternius bases, full body. |
|
||||
| [](sheet_npc_roster_views_0.9.9.jpg) <br> `sheet_npc_roster_views_0.9.9.jpg` | 0.9.9 roster: front and profile per role, for silhouette and gear placement. |
|
||||
| [](sheet_npc_roster_poses_0.9.9.jpg) <br> `sheet_npc_roster_poses_0.9.9.jpg` | 0.9.9 roster: idle, seated and walk-contact poses on six representative roles. |
|
||||
| [](sheet_npc_roster_crowd_0.9.9.jpg) <br> `sheet_npc_roster_crowd_0.9.9.jpg` | 0.9.9 roster at the 8 m crowd distance a player actually sees. |
|
||||
| [](sheet_npc_crowd_prototypes.jpg) <br> `sheet_npc_crowd_prototypes.jpg` | Four approved crowd-variety looks queued for the 12-character roster. |
|
||||
| [](sheet_npc_gear.jpg) <br> `sheet_npc_gear.jpg` | Fifteen gear pieces authored in attach space: helmet, sunglasses, bags, tank, lanyard and the nine hand items. Caps and hoods are retired (owner, 2026-11-06). |
|
||||
| [](sheet_npc_gear_on_character.jpg) <br> `sheet_npc_gear_on_character.jpg` | Every gear piece worn by a real avatar through the runtime attach path: helmet, sunglasses, lanyard, bags, tank and the nine hand items. |
|
||||
| [](sheet_npc_hands_compare.jpg) <br> `sheet_npc_hands_compare.jpg` | Hand pass: wider palms, segmented fingers and a separate thumb. |
|
||||
| [](sheet_npc_hands_grip_compare.jpg) <br> `sheet_npc_hands_grip_compare.jpg` | Grip pass: the forward hand-item offset that puts props in the palm. |
|
||||
| [](sheet_head_proto_before_after.jpg) <br> `sheet_head_proto_before_after.jpg` | Head overhaul sign-off: current `_face` vs the s48 connected-shell prototype at 1.85 m front/three-quarter/profile. |
|
||||
@@ -32,7 +27,5 @@ capture harnesses.
|
||||
| [](sheet_props.jpg) <br> `sheet_props.jpg` | Twenty street and venue props with baked maps, ground contact and collider footprints. |
|
||||
| [](sheet_texture_refinement_0.9.5.jpg) <br> `sheet_texture_refinement_0.9.5.jpg` | 0.9.5 texture refinement before/after: pavers, awning stripes and NPC fabric. |
|
||||
|
||||
The acceptance criteria for these sheets are in [`../npc-visual-review.md`](../npc-visual-review.md),
|
||||
the measurements in [`../npc-visual-review.md#proportion-audit`](../npc-visual-review.md#proportion-audit) and
|
||||
[`../3d-model-review.md`](../3d-model-review.md), and the asset contract in
|
||||
The measurements are in [`../3d-model-review.md`](../3d-model-review.md) and the asset contract in
|
||||
[`../blender-assets.md`](../blender-assets.md).
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 166 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 155 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 62 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 209 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 215 KiB |
@@ -38,6 +38,9 @@ and the active order/gaps in [`TODO.md`](../TODO.md).
|
||||
sources (casual tee, hoodie, work clothes), 4,458–6,424 triangles each, 62-joint rig at source
|
||||
proportions, arm-down rest, five tint slots, unwrapped UVs and baked 256² AO. The procedural
|
||||
library and the MakeHuman head remain the tested fallback.
|
||||
- The roster passed its owner visual review on 2026-11-06: faces, head gear, hand-held and back
|
||||
gear were all accepted after the follow-up fixes. The review page and its sheets were retired;
|
||||
the measurements live in `docs/3d-model-review.md` and `docs/blender-assets.md`.
|
||||
- Roster silhouette variety is narrower than the procedural library (three meshes for twelve
|
||||
roles, differentiated by tint and gear) until the modular part library is added.
|
||||
- Head gear is authored for the shipped Quaternius head; the procedural fallback therefore wears
|
||||
|
||||
@@ -31,7 +31,7 @@ public release.
|
||||
- Character faces, hands and fabric use a deliberately low-poly style; the
|
||||
>26 m tier remains a two-quad impostor and there is no separate finger-curl
|
||||
rig. The accepted limits are recorded in
|
||||
[`npc-visual-review.md`](npc-visual-review.md).
|
||||
[`npc-model-sourcing.md`](npc-model-sourcing.md).
|
||||
- There is no live 3D body-camera replay; the timeline is text-based.
|
||||
- There is no recorded voice/music track. Ambience and cues are procedural.
|
||||
- The game is English-only and does not yet have a translator workflow or
|
||||
|
||||
@@ -236,7 +236,9 @@ Two source quirks shaped the bake:
|
||||
- the upstream materials are named `Skin`/`Purple`/`LightBlue`/`White`/`Hair`, so the five-slot
|
||||
contract is applied as a rename, not a re-author.
|
||||
|
||||
The face and silhouette gate sheet is in [`screens/npc-face-gate/`](screens/npc-face-gate/README.md).
|
||||
The face/silhouette gate that chose the full swap is recorded in the follow-up decision of
|
||||
[ADR-0018](adr/0018-quaternius-stage2-runtime-rig.md); its comparison sheets were retired with the
|
||||
review pages.
|
||||
|
||||
## Shipped roster (0.9.9, owner chose the full swap)
|
||||
|
||||
@@ -320,5 +322,5 @@ from `tmp/` after the pivot; the measurements and decisions remain in
|
||||
- [ADR-0017: Quaternius NPC base](adr/0017-quaternius-npc-base.md)
|
||||
- [ADR-0016: 24,000-triangle character budget](adr/0016-npc-character-budget-24k.md)
|
||||
- [Blender asset contract](architecture.md#character-and-gear-asset-contract)
|
||||
- [`3d-model-review.md`](3d-model-review.md), [`npc-visual-review.md`](npc-visual-review.md)
|
||||
- [`3d-model-review.md`](3d-model-review.md)
|
||||
- [`asset-tooling.md`](asset-tooling.md)
|
||||
@@ -1,97 +0,0 @@
|
||||
# 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)
|
||||
|
||||

|
||||
|
||||
## 2. Front and profile per role
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
|
||||

|
||||
|
||||
## 4. Crowd distance (8 m)
|
||||
|
||||

|
||||
|
||||
## 5. Gear on the character
|
||||
|
||||
Every piece worn by a real avatar through the runtime attach path — the sheet to judge row 4 by.
|
||||
|
||||

|
||||
|
||||
## 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).
|
||||
@@ -1,66 +0,0 @@
|
||||
# NPC face and silhouette gate — Quaternius pilot (2026-11-05)
|
||||
|
||||
This page is the owner decision point for
|
||||
[ADR-0017](../../adr/0017-quaternius-npc-base.md) + [ADR-0018](../../adr/0018-quaternius-stage2-runtime-rig.md)
|
||||
stage 2. It answers one question: **which head ships?**
|
||||
|
||||
`npc_casual` is now the CC0 Quaternius `Casual_Hoodie` base baked to the project contract
|
||||
(arm-down rest, five tint slots, 62-joint rig at source proportions). The procedural library with
|
||||
the MakeHuman head is unchanged and still ships for the other eleven characters.
|
||||
|
||||
## The sheet
|
||||
|
||||

|
||||
|
||||
Rows: the Quaternius base, the procedural library with the MakeHuman head, and a procedural crowd
|
||||
variant. Columns: front, three-quarter, profile, and the crowd-distance silhouette the player
|
||||
actually sees from 8 m.
|
||||
|
||||
Source frames: `godot --path . --script res://src/test/capture_npc_baseline.gd -- --out=res://tmp/npc-gate`.
|
||||
|
||||
## What the sheet shows
|
||||
|
||||
| | Head height / body | Face read at portrait | Crowd-distance read |
|
||||
| --- | --- | --- | --- |
|
||||
| Quaternius base | 0.134 | clean low-poly brows, nose, jaw, layered hair | slim, upright, clearly a person |
|
||||
| procedural + MakeHuman head | ~0.20 | oversized head, soft nose, beard slab reads as a bar | bobblehead proportions |
|
||||
| procedural crowd variant | ~0.20 | oversized head, flat cheeks | bobblehead proportions |
|
||||
|
||||
Measured (`python3 -m pytest tools/tests/test_npc_proportions.py -q`,
|
||||
`python3 tools/npc_proportions.py`):
|
||||
|
||||
- `npc_casual` (Quaternius): head 13.4 % of height, arm-down rest, 6,206 tris, 12,988 glTF
|
||||
vertices, texel density 73–74 px/m on the 256² maps.
|
||||
- The procedural library: head 16–22 % of height (the stylized band in
|
||||
`tools/npc_proportions.GUIDE`).
|
||||
|
||||
The Quaternius head is *smaller and more realistic* than the stylized library head, which is
|
||||
exactly the trade the owner has to accept or reject. The vision judge that reviewed the earlier
|
||||
head rework reads the Quaternius face as the cleaner silhouette of the three at both distances.
|
||||
|
||||
## The three options
|
||||
|
||||
1. **Full swap.** Every character rebaked onto the Quaternius base in `0.9.10`; the procedural
|
||||
library and the MakeHuman head retire to the tested fallback. Consistent look, real anatomy,
|
||||
no further head work.
|
||||
2. **Crowd only.** Quaternius for the anonymous crowd roles, procedural + MakeHuman for the named
|
||||
roles the player talks to. Keeps two art styles in one frame.
|
||||
3. **Add head detail.** Keep the Quaternius body and author a higher-detail head (subdivision and
|
||||
hair cards) inside the 24,000-triangle / 24,000-vertex budget. Most work; the current head
|
||||
already reads well at gameplay distance.
|
||||
|
||||
## Recommendation
|
||||
|
||||
Option 1. The Quaternius head beats the MakeHuman head at portrait distance in this sheet, and it
|
||||
costs no further authoring; the budget headroom (6.2k of 24k triangles) stays available for the
|
||||
hands and gear that the review still flags as weak.
|
||||
|
||||
## Recorded decision
|
||||
|
||||
Status: **option 1 (full swap) accepted by the owner, 2026-11-05.** Every roster character moves
|
||||
onto the Quaternius base; the procedural library and the MakeHuman head become the tested
|
||||
fallback. See the follow-up decision section in
|
||||
[ADR-0018](../../adr/0018-quaternius-stage2-runtime-rig.md#follow-up-decision-full-roster-swap).
|
||||
|
||||
Roster silhouettes are less varied than the procedural library until the modular part library
|
||||
(hair, outfits) is added in the `0.9.10` roster workstream — recorded rather than hidden.
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 130 KiB |
Reference in new issue
Block a user