Bulk import of the working lanes that were living untracked on the PC.
Content:
- characters/ Lena/male body lanes, bakes, texture work, run logs
- clothing/ garment pipeline, configs, gates, contract docs
- garments/ MD-authored garment sources (.zprj/.zpac)
- UAL-Lib/ Universal Animation Library 2 source (.blend/.fbx/.glb)
- tools/ blender_bridge, iclone_bridge, md_bridge, tailor, glm_agent
- docs/, plans/, dev/, .agents/plans/
Repo hygiene:
- .gitattributes: LFS now covers .blend, .zprj, .zpac, .obj, .npy and the
Reallusion .iAvatar/.ccAvatar/.ccRestore containers. Without this the
~3.8 GB in this commit would land as raw blobs. .png/.jpg are left out
on purpose — ~250 are already tracked raw and converting them would
rewrite every one without shrinking history.
- .gitignore: exclude /accurig/ (~1 GB AccuRig program files, redistributable
from Reallusion, nothing authored here) and /dev/null/ (git-lfs hook copies
dropped by a `>/dev/null` redirect on Windows).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
| Code-edit registration | 2 `Add()` lines + possibly a `BaseDirFor` case in `OutfitCatalog.cs`, then a C# rebuild |
| Blunt reimport | `.bin`-only changes are invisible to Godot's `.gltf` hash; today's fix is `clean-import` (wipes ALL of `.godot/imported/`) or hand-deleting entries |
takes a bare-string `setId` and its `_ =>` arm silently resolves to the Fantasy pack
folder — a typo'd set name mis-resolves without error. Missing assets are warn-only
(`OutfitCatalog.cs:71-78`): the character just stays naked/previous.
3.**`.bin` staleness.** `GLTF_SEPARATE` export keeps geometry/UVs in the sidecar
`.bin`; Godot hashes only the `.gltf`, so a vertex-only re-export silently ships the
old mesh.
### 1.4 Corrections to the record (verified 2026-07-31)
Earlier session notes contained four errors that materially change the design:
| Prior claim | Truth | Consequence |
|---|---|---|
| "FBX export from MD is manual" | `export_api.ExportFBX(path, op)` (+ `ExportOBJ/ExportZPrj/ExportZPac`) is scriptable — exact flags in `.claude/skills/marvelous-designer/SKILL.md:182-190` (`op.bExportGarment=True; op.bExportAvatar=False`); the 4 garment scripts simply never call it | The **entire MD half can run unattended** after the one session click |
| `ExportSnapshot3D` is the mesh export | It is the viewport **PNG** (the vision-QC loop); mesh export is `ExportFBX` | Don't build on the wrong call |
| "5 duplicated MD scripts" | 4 garment scripts; `md_recon.py` is an API-introspection tool and stays standalone | Template scope |
| `tools/vision-compare.py` exists (referenced by `ariki-game/tools/visual-qa.sh`) | **It was never written** | The in-game gate has no judge today; VLM-vs-pixel-diff is a real decision, not wiring |
One permanent constraint, confirmed: **MD exposes no mesh introspection to Python**
(`GetClothPositions()` stays empty). Every upstream drape judgement is image-based,
by necessity, until CLO exposes more.
Two enabling facts: the config's `export` block already carries `gender`/`set`/`out_dir`
and each part carries `slot`, so the catalog's exact `{Gender}_{Set}_{Slot}.gltf` path is
derivable from the config today; and the agent API's `GET /console` surfaces
`ClothingTestBed`'s per-slot load-failure prints, so **outfit load failure is
machine-detectable without vision**.
---
## 2. The unified pipeline
### 2.1 One config, additive blocks
Keep `clothing/configs/<garment>.json` as the single per-garment artifact and **grow it**
— the existing Blender schema stays byte-compatible, so `garment_pipeline.py` needs no
**A driver, not a rewrite.** Each stage shells out to the tool that already owns it:
| Stage group | Shells to | Notes |
|---|---|---|
| `draft/drape/publish` | `python tools/md_bridge.py --file <generated>` | Script generated from the `md` block via `draft_garment.py`. `--ping` first; if no session, fail fast printing the human instruction ("click Plugin > TinqsMDBridge"). Raise the idle timeout (~1 min per 300 sim frames). `publish` = scripted `ExportZPrj` + `ExportFBX` + `ExportZPac` (§1.4). |
| `census … export` | `blender --background --python garment_pipeline.py -- --config X --stage Y` | **Unchanged CLI**; `--from/--to` is a loop. Standalone stage runs keep working exactly as today. |
| `register/import/verify` | `bash ariki-game/tools/game.sh …` + agent API | §2.4 and gates G6/G7/G8. Decided: orchestrator lives in `tinqs/animation/clothing/`, cross-repo shell-out to `game.sh` is acceptable. |
kapa haka pieces never hit their ceilings) — this gate mostly guards downloaded meshes.
**G1 — drape placement.** The thresholds already exist as prose — `md_pari.py:4` reads
"QC targets: band top ~1.31 m (above bust), hem ~1.05 m (waist) ±3 cm". Move them into
`expect.bands`, upgrade `tools/tailor/qc_placement.py` to read them (instead of its
hardcoded landmark table), and add a vision pass on the `ExportSnapshot3D` PNG. That one
move takes drape QC from eyeballed to gated.
---
## 4. Phased adoption
| Phase | Content | Effort | Why this order |
|---|---|---|---|
| **1** | `extends` overlay + `expect` block + **G2** + **G8** + orchestrator skeleton driving *Blender stages only* | ~½ day | Zero new subsystems, no MD, no game, no human in the loop. Immediately kills the 48-line config copy and the six-call ritual. |
| **2** | `draft_garment.py` template + `md` block + scripted `ExportZPrj/FBX/ZPac` in the same bridge call + **G1** | ~1 day | Collapses 4 scripts to 1; MD half becomes unattended after the single session click. |
| **3** | **G5** posed sweep (+ **G3** as its rest-pose subset) | ~1 day | **The money phase** — catches the class of bug that has actually shipped, before the game. |
| **4** | **G7** targeted reimport + ClothingTestBed set override + **G6** motion QC + baseline blessing | ~1 day | Real shaders/import/AnimationTree; only meaningful after 1–3. Needs the small approved `ariki-game` edits. |
This repo's pipeline is small enough that `.agents/wiki/ARCHITECTURE.md` covers
it end to end today; nothing has grown large enough yet to need its own
per-system doc here. Split a topic out into this folder (and link it from
`ARCHITECTURE.md`) when it does — likely candidates as the repo grows:
| Page | Covers |
|---|---|
| `clothing-lane.md` | The clothing lane end to end: reference image → Marvelous Designer authoring → `clothing/` game-ification → worn outfit in ariki-game. Read before any garment work. |
`.agents/wiki/ARCHITECTURE.md` still covers the **animation** lane end to end.
Split a further topic out into this folder (and link it from `ARCHITECTURE.md`)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.