Intake the modular outfit pack and ship the Suit base for npc_coat
Full build / Import + headless tests (push) Successful in 42s
Full build / Full desktop build + optional release (push) Skipped

This commit is contained in:
zwitschi committed 2026-11-06 19:02:38 +01:00
1 parent f6bb2b1de3
commit 3b9e3b61d8
12 files changed
+254 -37

No files matched your search

+15 -19
View File
@@ -770,25 +770,21 @@ regressing gear fit, budget or readability.
place (`short` identity, `buzz` squashed toward the hairline, `long` stretched from the crown),
and each role picks a style through the existing `CHARACTERS[...]["hair"]` field. The T-pose
cache is keyed on the style. The roster now reads as three silhouettes instead of one.
- [-] **Outfit part library (owner chose the one-time manual download).** The upstream modular pack is
a Google Drive folder (<https://drive.google.com/drive/folders/1USAAquX2JJWuA2m6zol0KUkFe3UkZ8zX>);
the owner downloads it once, everything after that is scripted. Steps:
1. download the pack and drop the archive (or its extracted folder) into
`tmp/quaternius-intake/` — that directory is gitignored;
2. `python3 tools/quaternius_parts.py inventory --dir tmp/quaternius-intake` — lists every GLB
with its meshes, triangles, bones and materials, so the usable parts are picked by
measurement instead of by filename;
3. `python3 tools/quaternius_parts.py extract --file <glb> --mesh <name> --out parts/<part>.glb`
writes one skinned part onto the 62-joint rig (the only accepted part shape);
4. `python3 tools/quaternius_parts.py verify --dir assets/models/blender_src/quaternius/parts`
records the SHA-256 of what was kept, then copy the accepted sources into
`assets/models/blender_src/quaternius/parts/` and add the rows to `CREDITS.md`;
5. assign parts per role in `CHARACTERS[...]["parts"]` and rebuild.
Nothing lands in `assets/` until step 5, and the pack itself is never committed.
Tooling is ready and proven: `inventory`/`extract`/`verify` work, and a scratch part joined
onto a base and exported cleanly before the pack arrived. The part contract is in
`assets/models/blender_src/quaternius/parts/README.md`. **Waiting on the owner's download.**
A `bald` hair variant also needs a skull-covering crown on the `worker` base first.
- [x] **Outfit part library — intake landed (`Suit` pilot).** The owner downloaded the
*Ultimate Modular Men* pack (CC0, 15 families, FBX only) into `tmp/quaternius-intake/`.
`tools/quaternius_parts.py make-base` composes a family into a skinned base GLB, undoing five
FBX artefacts (per-file armatures, `_end`/`neutral_bone`, node transforms, the shared
jacket/trouser fabric, seam degenerates). `Suit.glb` is the first base: `npc_coat` is now a
dark formal suit instead of a tinted hoodie. The pitfalls are recorded in
`docs/npc-model-sourcing.md` and `MEMORY.md`.
- [ ] **Remaining outfit families.** The pack also has Adventurer, Beach, Casual_2, Farmer, King,
Punk, SpaceSuit, Swat and Weapons (pistol/sword — unused, the game has no weapon system).
Pick the roles each one fits, add a `QUATERNIUS_SOURCES` entry per family with its slot map,
then rebuild. `Swat` and `SpaceSuit` have **no hair or eye geometry** (helmeted heads), so
they need the five-slot question answered first: hair would be an invisible patch under the
helmet, or the audit loses a slot.
- [x] Intake tooling: `inventory` / `extract` / `verify` / `make-base` in
`tools/quaternius_parts.py`, all exercised against the real pack.
- [ ] Bake per-slot albedo/normal/ORM maps and a per-slot atlas; the five slots currently share one
whole-body UV set, which caps how much the cloth/pants tints can differ.