From c7fd4b59cc8e4305980d5b2c4bb8abf4e4ea7f4d Mon Sep 17 00:00:00 2001 From: Zwitschi Date: Thu, 5 Nov 2026 20:40:59 +0100 Subject: [PATCH] Inventory the Quaternius GLBs: meshes, 62 joints, 24 clips and the material-slot map --- TODO.md | 6 +++++- docs/npc-model-sourcing.md | 44 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/TODO.md b/TODO.md index c3f627e..a2240ce 100644 --- a/TODO.md +++ b/TODO.md @@ -46,9 +46,13 @@ baseline sheet. Verified: the three GLBs are in `tmp/npc-research/quaternius/`, SHA-256 re-hash matches the recorded table, the mirror HTML/README are retained next to the folder, and the download date (2026-11-03) is now recorded. -- [ ] Inventory the four meshes, 62 joints, 24 clips and material names in each GLB; map +- [x] Inventory the four meshes, 62 joints, 24 clips and material names in each GLB; map Quaternius materials to the five project slots (`skin`, `cloth`, `pants`, `accessory`, `hair`). + Recorded in `docs/npc-model-sourcing.md` §Quaternius GLB inventory: 4 meshes per GLB + (Body/Feet/Head/Legs, 10.5k–13.0k verts), 62 joints (8 spine + 8 arm + 2 PT + 30 finger + + 6 leg), 24 shared clips (retarget scope: Idle + Walk), and the material→slot map by mesh + region (Skin→skin; head hair→hair; body→cloth; legs→pants; feet→accessory). - [ ] Choose the initial outfit scope: build the three full GLBs first; only use the 21-part modular builder if the three looks cannot cover the 12 roles. - [ ] Build a canonical `quaternius_base.glb`: one welded, triangulated, grounded 1.81 m diff --git a/docs/npc-model-sourcing.md b/docs/npc-model-sourcing.md index d0b24f5..8e288ea 100644 --- a/docs/npc-model-sourcing.md +++ b/docs/npc-model-sourcing.md @@ -70,6 +70,50 @@ The 24,000 cap leaves room to stay much closer to the source LOD than the prototype's 4,654 triangles. Do not decimate to the old 7,000-triangle target before the silhouette gate. +## Quaternius GLB inventory (2026-11-05) + +All three GLBs share one 62-joint rig and the same 24 animation clips; only the meshes and +materials differ. Each import also adds a 42-vert/80-tri `Icosphere` bone-display helper — ignore it. + +### Meshes (verts / tris) + +| GLB | Body | Feet | Head | Legs | Total | +| --- | --- | --- | --- | --- | --- | +| `Casual` | 5,338 / 2,654 | 1,082 / 538 | 5,122 / 2,526 | 1,426 / 706 | 12,968 / 6,424 | +| `Casual_Hoodie` | 6,132 / 3,048 | 1,024 / 512 | 3,836 / 1,888 | 1,526 / 758 | 12,518 / 6,206 | +| `Worker` | 6,074 / 3,018 | 928 / 464 | 1,862 / 936 | 1,670 / 822 | 10,534 / 5,240 | + +### Joints (62) + +- Spine: `Root, Hips, Torso, Body, Abdomen, Chest, Neck, Head` (8). +- Arms: `Shoulder.L/R, UpperArm.L/R, LowerArm.L/R, Wrist.L/R` (8) plus `PT.L/R` (2 pole targets). +- Fingers: `Thumb×3, Index×4, Middle×4, Ring×4, Pinky×4` × L/R (30). +- Legs: `UpperLeg.L/R, LowerLeg.L/R, Foot.L/R` (6). + +### Animation clips (24) + +`Idle, Idle_Neutral, Walk, Run, Run_Back, Run_Left, Run_Right, Wave, Interact, Death, +Gun_Shoot, Idle_Gun, Idle_Gun_Pointing, Idle_Gun_Shoot, Idle_Sword, Run_Shoot, Sword_Slash, +HitRecieve, HitRecieve_2, Kick_Left, Kick_Right, Punch_Left, Punch_Right, Roll`. + +The retarget scope is Idle and Walk; combat/gun/sword clips are discarded (see §2). + +### Material → slot map + +The five project slots (`skin`, `cloth`, `pants`, `accessory`, `hair`) are assigned by mesh +region first, then material — the same material name can mean `cloth` on the body and +`accessory` on the feet. + +| Material | Where | Project slot | +| --- | --- | --- | +| `Skin` | all meshes | `skin` | +| `Hair_Blond`, `Hair_Brown`, `Hair`, `Brown` (head), `Eyebrows`, `Moustache` | Head | `hair` | +| `Eye` | Head | `accessory` | +| `Worker_Yellow` | Worker body (vest stripe) + head (helmet) | `cloth` / `accessory` | +| `White`, `Grey`, `Purple`, `Black` | Body / Feet | `cloth` (body) / `accessory` (feet) | +| `Orange`, `LightBlue`, `LightBrown`, `Brown`, `Brown2` | Legs | `pants` | +| `Worker_Vest` | Worker body | `cloth` | + ## Contract mismatch The expensive part is the rig and proportions, not the mesh. The source has a