Decimated the leaf-bikini Lena ancestor to a 77,999-tri AccuRig-loadable FBX
(body 24k / head 14k / hands 40k via tools/rigbait_decimate.py) — same recipe
and tri budget as lena_tripo_rigbait. Disposable skeleton carrier, never
shipped. QA renders confirm A-pose region cuts landed and fingers are distinct.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
New Tripo delivery — lena wearing a sculpted-in leaf bikini — mirrored
byte-identical from ariki-game race-sources into originals/female/ as two
read-only ancestors for future derivatives:
- female_lena_leafbikini_tripo.glb (sha256 977104ba…)
- female_lena_leafbikini_tripo_fbx/ (FBX + .fbm textures, UUID name kept, rule 7)
Registered in REGISTRY.md (Originals + new lena_leafbikini Characters row) and
listed in originals/README.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
characters/work/lena/v02/ is 1,019 MB — 15 .blend snapshots of the same ~883k-vertex
mesh plus their .glb exports. working-files.md puts per-attempt .blend in the SCRATCH
tier, 'never committed': the NN_*.py recipes are the history and regenerate any of
them from masters/55_fullres_v02.blend, which is pinned and tracked. The lane already
reached 3.0 GB once, 2.2 GB of it .blend files, which is why the rule exists.
git add -f any artifact that gets registered in characters/REGISTRY.md. None is yet —
the v03 body is HELD with known defects.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Marvelous Designer authoring sources for lena_hunter_skirt_v8 — the .zprj/.zpac are
hand-draped and no script regenerates them, so they are KEEP tier, not scratch — plus
the exported garment (fbx/obj/mtl), the colorway and cloth textures, and the QC
screenshots (front/back/presim) the drape was judged on.
tools/tailor/avatar/Mako_Fullhead_QuatSkin_Avatar.fbx is the MD avatar built from the
shipped male body. Worth landing even though it does not work yet: Mako's FBX imports
into MD but yields 0 arrangement points against Lena's 109, which blocks every male
garment. Having the exact file in-repo is the starting point for diagnosing that.
Mako lane intermediates (decimated fullhead, AccuRig glb, rigged blend) join their
recipes under work/mako.
All heavy files ride LFS (.glb/.blend/.fbx/.obj/.zprj/.zpac already in .gitattributes).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The v02 chain, which exists because bisecting the shard-eye defect proved it lives in
the hires MASTER rather than in any v02 step: the early heal chain ran whole-mesh welds
and reset custom split normals, and the eye/lash shells only read as an eye through
Tripo's authored normals. Every descendant inherits it, including the shipped body.
48_decimate_headsafe body/hands only, head bit-identical (feathered ramp)
49_seams_v02 24_seams with a density-aware hip landmark — the v01 rule fired
at u=0.610, mid-belly, on the head-protected vert count
50_seams_headuv body-only unwrap; the head KEEPS its original Tripo charts.
SLIM collapsed the undecimated lash/brow slivers to points and
ANGLE_BASED packed at half v01's texel density; the face was
the best-mapped region of the source atlas, so it is reused
51_reatlas_v02 31_reatlas + centroid splats for sub-texel triangles — the
skipped set IS the lashes, which rendered as grey glass
52_head_transplant the PRISTINE ORIGINAL head onto the decimated nude body
53_rig_transfer 54_crotch_refill
55_fullres_v02.blend is pinned in .lanekeep as THE archival master: full-res nude body
+ pristine original head, crotch refill and texture despeckle applied, 883,404 v /
1,761,640 f. It supersedes 34_v04 as the lane root (34_v04's head has the shard eyes).
Also: tools/graft_hands.py, the Marvelous Designer hunter-skirt configs v1-v8, the
hunter cloth texture generator, and Mako's measurement card.
Per .agents/rules/working-files.md the per-attempt .blend files under work/lena/v02
are SCRATCH ("never committed") — the .py recipes here are the history and regenerate
any of them from the pinned master. See the ignore rule landing next.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Merging origin/main in ariki-game surfaced a product decision newer than this doc:
Ozan removed the mesh brows, lash cards and browless-face swap from the product path.
Brows are painted on the body texture again and keep their baked colour, so "brows
follow the hair swatch" and the generated-surface lane are both parked.
The tooling and the brow wiki page still describe the 3D lane, so the note now says to
read the code before the docs there.
Two consequences outlive the revert and are kept: painted brows are still atlas-bound,
so the v02 re-atlas has to carry the pigment (an albedo-fidelity job now, not three
artifacts to regenerate); and character_brow.gdshader is still the only mechanism that
could recolour a brow on a scanned face, since raised scan geometry cannot be erased
with a texture.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Ozan's hair system rebinds Quaternius styles (100% rigid to one Head bone) onto
whichever body loads, corrected by three hand-tuned constants in
CharacterBuildData.HeadFit. Those constants are only valid against the skull they
were tuned on, and nothing re-checks them when a body is rebaked. Both ship bodies
are currently wrong, in opposite directions.
tools/measure_head_shell.py:
--fit solve HeadScale/HairOffset from two cranium landmarks. A scale-about-
pivot plus a translate has exactly two degrees of freedom per axis, so
the crown + widest-cranium slice determine both outright -- no bed pass.
--sweep score every style against the clearance it was AUTHORED with on its own
stock rig (a mohawk stands proud, a beard hangs at the chin -- absolute
crown height is not the test).
default full Head-weighted shell AND the cranium band. The full shell is what
MakoHeadFit quotes; it is inflated several cm by jaw/ear/neck weight
bleed and is not the surface a cap sits on.
Measured against the shipped GLBs:
Lena cranium needs Y 0.960, carries 1.431 (+49%) -- every style floats 4.4-7.3cm
Mako cranium needs Y 1.186, carries 1.346 (+13%) -- every style sinks, buzz cut
2.2cm into his skull, moustache 8.0cm low
Solved constants take Mako to 0.00cm worst error over 10 styles, Lena to 0.29cm mean.
docs/characters/head-features-contract.md records the system, the measurements, and
what a 3-constant fit still cannot reach: Lena needs 1.613 in X but 1.311 in Z, a
23% anisotropy that stretches an authored cap sideways and drags ear cutouts along a
diagonal. That is Ozan's logged residual and wants a per-body geometry bake. Mako's
anisotropy is only 3%, so constants alone should suffice for him.
Also noted: the whole hair set shares just two base textures, so "authored per-colour
hair textures" -- the fix the wiki writes off in favour of the /0.55 swatch hack --
is 16 PNGs.
Crown placement is rest-pose arithmetic; X/Z and the in-bed look are unverified.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
NAMING.md/AUDIT.md/UNWIRED.md are the conventions-doc pivot after the
mass-rename was killed; committing so the bridge repo tree is clean.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The HTML references screenshots relatively, so it only renders inside a
checkout -- mailing the file on its own gives broken images. The PDF is one
self-contained file, which is what actually gets sent to Ozlem.
- tools/humans_to_pdf.py: renders .humans/*.html via headless Chrome (or
Edge), so the output is what the browser shows. HTML stays the source.
- @media print block on the page: the wide tables and the pipeline diagram
scroll on screen but would be cut off at the paper edge; this reflows
them and keeps figures, callouts and table rows off page breaks.
Verified at A4 content width -- 6 pages, both screenshots embedded.
- *.pdf -> LFS. Each regeneration is a whole new ~2 MB blob, and unlike
png/jpg there are no PDFs tracked raw yet, so there is no history to
rewrite by adding it now.
Also corrects working-files.md: it claimed .gitattributes does not LFS-track
.blend, which was true when written and is no longer -- .blend/.zprj/.obj/
.npy/.npz have since been added. The note now covers what is actually still
excluded (png/jpg, deliberately) and why that makes QA renders scratch.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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>
Smooth mannequin base body renders for clothing work.
Source: docs/conceptart/generated-images/female-lena-base/
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Two pieces of work.
1. Keep milestones, not steps. Staged NN_*.py lanes were saving a full
~80 MB .blend per attempt, so Lena's lane reached 3.0 GB of which 2.2 GB
was 30 .blend files -- five snapshots to land one crotch fix, five more
for the bra. The .py recipes are the real history; the blends are cache.
- .agents/rules/working-files.md: four-tier policy (KEEP / MASTER /
SCRATCH / UNKNOWN) + how to work a lane.
- tools/prune_lane.py: classifies a lane and prunes the scratch tier.
Dry-run by default. Reads a per-lane .lanekeep manifest, flags
binaries byte-identical to a registered original (canonical name
always survives a duplicate pair), and never auto-deletes a .blend
with no step script beside it -- those cannot be rebuilt.
- .gitignore: scratch patterns can never be committed.
Dry run on characters/female/lena_nude reports 2.3 GB reclaimable.
Not applied -- that lane had a live Blender session at the time.
2. .humans/marvelous-designer.html: how we author garments in Marvelous
Designer, written for people rather than agents -- the six-step process,
what has been made, the traps that cost hours, and what is still
unsolved. Matches the .humans/ HTML convention in ariki-game.
Also committing the docs the AGENTS.md knowledge map and the new page
reference, so they are not dangling: the clothing-lane architecture page,
the marvelous-designer skill, and the two screenshots the page embeds.
characters/ is deliberately untracked and stays that way -- it holds GBs of
blends and GLBs, and .gitattributes does not LFS-track .blend.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Root AGENTS.md is now a thin entry point + knowledge map; the batch-workflow
detail it duplicated already lived in .claude/skills/animation/SKILL.md.
Folded docs/ (dances registry + iclone-bridge stub), root plans/, and
devops-reports/ into .agents/wiki/ and .agents/plans/ per the per-repo .agents/
convention. Added .agents/SOUL.md, .agents/AGENTS.md, wiki/ARCHITECTURE.md,
wiki/architecture/, and wiki/master-plan.md (derived from the closed plans +
the dance registry's live ceremony-slot table). Fixed doc-path references in
exchange/GUIDE.md, the animation skill, and the iclone-bridge stub. All moves
via mv (git detected as renames) — no content deleted.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The v8 body pushed here (078b0b7) broke Lena's hands + eyebrow fit and its
rest-mismatch premise was unconfirmed (ariki-game 174a0429e). Back to baseline.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Fast-orientation guide synthesized from README.md and the animation skill:
batch workflow, canonical retarget command, nd_## naming, loop QC, gotchas,
and repo etiquette. Points to the skills and docs/dances/REGISTRY.md as
authoritative sources.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Supersedes the previous QuatSkin drop: skeleton now matches UAL1.glb exactly
(0.0001° all 65 joints; ariki-game e67df53e6). Plays the stock clip libraries
without crumpling. Gate: ariki-game tools/rig_pose_gate.py.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
From the conformance audit (ariki-game .agents/audits/animation-standard-assessment-2026-07-23.md):
- tools/: cc_retarget + mixamo_retarget re-synced from ariki-game (were stale forks
missing --despike/--fingers/--map ual); kevin_retarget path now repo-relative;
mirror rule documented in exchange/GUIDE.md
- INBOX/lena: add canonical Ariki_Female_QuatSkin.glb; README marks MixamoSkin superseded
- REGISTRY: tide_dance_01 flagged (no DanceType enum entry); rain_dance note corrected
(RainDance IS in the enum); boat table notes live canoedismount1/run_to_dive; QC split
(loop_qc pre-commit vs anim_qc post-ingest) documented
- docs/iclone-bridge.md: stub created (GUIDE referenced it but it never existed)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
For PC import: standard-rig Lena (Ariki_Female_MixamoSkin.glb) as used
in-game, plus the rigged/unrigged T-pose FBX sources and toned textures.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
feat(exchange): native Kevin Iglesias pickaxe mining FBX for iClone editing
Two-hand Mining set (Begin/Loop Ground/Loop Wall/Stop) on the native B-* rig,
pulled from ariki-assets animations/kevin-iglesias. Native rig (not the
Quaternius-retargeted game GLB) so iClone can characterize the skeleton to HIK.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@
tools/dance_profile.py samples world-space bone positions per frame in
Blender headless and emits a per-beat motion-energy timeline (accents,
phrases, totals) at a given BPM. Profiles generated for war_dance_01,
fertility_dance_01, taming_dance_01.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Incoming iClone exports (dance2, haka2) plus mocap reference clips and Dance2.iProject for the next retarget batch.
Co-authored-by: Cursor <cursoragent@cursor.com>
tools/export_boat_prop.py (GLM-implemented, 2 rounds): hull at game scale
(8.5 m, keel 0, no recenter) + placeholder mast/sail/steering oar + 5 seat
markers + waterline + 1.9 m ref figure; self-verify incl. right-side-up
gates added after round 1 shipped an upside-down hull with all checks
green. Registry: boat actions table (6 slots, direct names). README
carries CC BY 4.0 attribution + iClone import/filming notes.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
hakadance1->war_dance_01, aloha1->fertility_dance_01, dance1->taming_dance_01,
each with a _pp loop variant (all SMOOTH per loop_qc). Loop rule: every
adopted dance ships base + _pp pair. GLM trim+blend loop variants archived
(ping-pong is the loop standard).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
13 ceremony slots tabled in the registry (12 DanceType + rain_dance),
provisional ids now nd_##; codes like war_dance_01 / WarDance01.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Keep aloha1(+pp), dance1(+pp), hakadance1. Archive hakadance2, alohaOG,
firedance1, hakaOG (all variants) to archive/. New dances get provisional
nd## ids at conversion; rename to a dance code (haka01 etc.) only on
adoption via tools/rename_clip.py. Registry: docs/dances/REGISTRY.md.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Forward+reversed baked as one clip: end==start by construction, drift
self-cancels, full choreography kept; motion reverses at the turn point.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Implemented by GLM from plans/loop-fix-plan-2026-07-16.md; all seven clips
verified SMOOTH by loop_qc (0° pose gap, 0 cm drift, 60-89% duration kept).
Results: plans/loop-fix-results-2026-07-16.md.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Pose gap / velocity gap / root drift at the LoopMode.Linear wrap; exit-code
gated. Skill updated: loop QC is workflow step 5, with the Blender-side
fixer playbook.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>