diff --git a/.claude/skills/character-pipeline/SKILL.md b/.claude/skills/character-pipeline/SKILL.md index 3bf2a7f..c698dbf 100644 --- a/.claude/skills/character-pipeline/SKILL.md +++ b/.claude/skills/character-pipeline/SKILL.md @@ -133,6 +133,18 @@ What "good" looks like on Taila, for calibration: | Solver cost | ~2.6 ms/character | 10 ms | | Stride vs. travel direction | < 10° (except a capped sidestep) | 90° | +## Characters currently shipping + +| Skin | Source | Meshes | Cloth chains | +|---|---|---|---| +| taila | rigged, Sketchfab CC-BY | 18 | 35 | +| kiyoko | VRoid, CC-BY | 13 | 20 | +| aria | VRoid, CC-BY | 15 | 15 | +| momo | VRoid, CC-BY | 5 | 9 | +| hikari | VRoid, CC-BY | 13 | 10 *(zero-length — do not simulate)* | +| miku | unrigged source, auto-rigged | 1 | 19 *(hair grown)* | +| mannequin | Quaternius CC0, from the animation library | 1 | 0 *(no costume)* | + ## Known-unsolved - **Peak cloth clipping** in a run, slide and dash sits at ~95 mm of thigh diff --git a/.claude/skills/character-pipeline/references/rigging.md b/.claude/skills/character-pipeline/references/rigging.md index e038859..87d330d 100644 --- a/.claude/skills/character-pipeline/references/rigging.md +++ b/.claude/skills/character-pipeline/references/rigging.md @@ -19,6 +19,31 @@ are `DEF-spine`, her head is `DEF-spine.006`, and she has **no bone with "neck" in its name at all** — unresolved, every lean, aim pitch and slide head-lift silently did nothing. +### Names lie. Anatomy does not. + +Four sources that were not authored against the library's spelling each broke +role resolution in a different way. All four fixes are in; the lesson is that +**anything guessing anatomy from a name needs a structural fallback.** + +- A bare `leg` is the SHIN on Mixamo (`LeftUpLeg` is the thigh) and the THIGH on + a rig whose shin is called `knee`. Same token, opposite bones, both common. So + `RigRoles` walks the leg upward from the foot and fills in whatever the names + could not, stepping over twist bones. +- Claims are granted **longest-stem first**. Taking the first role in + `LIMB_ORDER` that matched at all let shin's catch-all `"leg"` beat thigh's + exact `"upperleg"`, and the outcome depended on bone iteration order. +- Cosmetic and spring classes accept a **two-character positional suffix**: + `HairFL`, `HairFR`, `HairF_Top` tokenise to `hairfl` and matched nothing, so a + character imported with no hair chains at all. Two characters is short enough + that `forearm` and `earring` are still not swept in. +- VRoid spells legs `UpperLeg`/`LowerLeg`. Any CHECK that name-matches + `thigh`/`shin` will silently pass or silently fail on it — see + `verification.md`. + +If a new source fails with `could not identify these bones`, dump the joint names +first (`separation.md` has a no-Blender snippet) and decide whether it is a +missing stem or a case only anatomy can settle. + ## Rebuilding the hierarchy A Rigify DEF-rig exports its chain roots parented straight to the armature root,