Record the Quaternius pilot bake, measurements and face-gate decision point in the docs
This commit is contained in:
1 parent
90f189a269
commit
1ce173e9d1
3 files changed
+79
-16
No files matched your search
@@ -34,10 +34,11 @@ and the active order/gaps in [`TODO.md`](../TODO.md).
|
||||
## Known gaps
|
||||
|
||||
- External first-time-player sessions and balance sweeps are not completed.
|
||||
- The Quaternius NPC base migration is planned, not shipped: the arm-down skin export and the
|
||||
rest-relative pose composition are the open blockers (`0.9.9`), and the roster rollout is
|
||||
`0.9.10`. The current 12-character procedural library and the MakeHuman head remain the
|
||||
tested fallbacks until the face/silhouette gate is approved.
|
||||
- The Quaternius NPC base is wired for one character (`npc_casual`): arm-down rest, five tint
|
||||
slots, unwrapped UVs, 62-joint rig at source proportions, Idle/Walk/Sit pose code, 6,206 tris.
|
||||
The remaining `0.9.9` blocker is the owner face/silhouette decision
|
||||
(`docs/screens/npc-face-gate/`); the full 12-role roster rollout is `0.9.10`. The other eleven
|
||||
characters stay procedural with the MakeHuman head until that decision lands.
|
||||
- Accessibility/localization acceptance, target-hardware profiling, macOS
|
||||
signing/notarization and AI/storefront legal approval remain open.
|
||||
- Live 3D replay, recorded VO/music, more venues and seasonal content are future
|
||||
|
||||
@@ -203,6 +203,41 @@ start the 12-variant rebuild on the warped base.
|
||||
mesh at source LOD, re-derive gear attach points from the Quaternius skeleton, and use the
|
||||
Quaternius Idle/Walk clips directly (no retarget).
|
||||
|
||||
## Pilot bake and shipped state (2026-11-05)
|
||||
|
||||
`npc_casual` is the first Quaternius-derived character. The reproducible pipeline lives in
|
||||
`tmp/npc-research/` (local tooling, not shipped) and has two steps:
|
||||
|
||||
1. `build_base_minimal.py` — import `quaternius/Casual_Hoodie.glb`, join the four skinned meshes
|
||||
**without welding**, rename the upstream materials to the project tint slots, Smart-UV-unwrap
|
||||
and repack, export `quaternius_tpose.glb`.
|
||||
2. `bake_armdown_v5.py` — pose `UpperArm.L/R` −90° local X, read the posed matrices, apply the
|
||||
Armature modifier, **reset the pose to identity**, set the rest matrices, re-add the modifier,
|
||||
export `quaternius_base.glb` and save `assets/models/blender_src/npc_casual.blend` for the AO
|
||||
bake.
|
||||
|
||||
Then `tools/bake_ao.py --only npc_casual` and a copy of the GLB to
|
||||
`assets/models/blender/npc/npc_casual.glb`.
|
||||
|
||||
| Measurement | npc_casual (Quaternius) | procedural library |
|
||||
| --- | --- | --- |
|
||||
| Triangles | 6,206 | 4,812–6,046 |
|
||||
| glTF vertices | 12,988 | 4,908–5,785 |
|
||||
| Bones | 62 | 13 |
|
||||
| Head height / body height | 0.134 | 0.16–0.22 (stylized band) |
|
||||
| Shoulder width | 0.201 m head width, `fit` OK | `fit` OK |
|
||||
| Texel density (256² maps) | 73–74 px/m | 75–96 px/m |
|
||||
| Materials | `skin`, `cloth`, `pants`, `hair`, `accessory` + fixed `Eye`, `Eyebrows` | five slots + fixed detail |
|
||||
|
||||
Two source quirks shaped the bake:
|
||||
|
||||
- the upstream UV map is degenerate (every loop at 0,0) and its materials are flat colours, so the
|
||||
AO/texture bake must follow a real unwrap or it silently writes a black map;
|
||||
- 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).
|
||||
|
||||
## Contract mismatch
|
||||
|
||||
The expensive part is the rig and proportions, not the mesh. The source has a
|
||||
|
||||
Reference in new issue
Block a user