Skip to content

feat: step 9c — the side locks and the skirt answer the world, through the producer's cloth recipe (#12) - #14

Merged
firejune merged 1 commit into
mainfrom
gs-12-physics
Oct 21, 2026
Merged

firejune merged 1 commit into
mainfrom
gs-12-physics

Conversation

@firejune

Copy link
Copy Markdown
Contributor

Closes #12. Owner: "딴 머리 치마에 물리도 넣어줘" → narrowed to the two front side locks + the skirt ("땋은머리는 사실 안보여서 앞머리 양옆 두갈래만").

What

  • New step 9c "Let the hair and the skirt answer": a cloth block (bottomwear: 3 chains × 3 links, swing scales [1.2, 1, 1.2]; front hair: 1 chain × 3 links, edge strength 100), rig-parts propose --cloth config.json --write-config, then rig-parts build … --loop --lead-in 1. Producer-first: the recipe drafts everything (27 physics + 3 transform constraints: the side locks as lockt0_/lock1t0_, the fringe bang_*, skirt0_..2_ + skirt_swing under hip); their idle keys are removed; bones 70 → 46. The bun is back hair above the shoulders, which the recipe refuses — it keeps its key (the owner said the braid is not visible).
  • scripts/hello.ts --no-skirt-keys: in 9c the skirt is left to physics. Step 9b is byte-identical to PR feat: step 9b — a hello the producer builds: hm? → heh → elbow-down wave → weight-shift settle (#9) #11 (without physics the keys are still needed: thigh_l|bottomwear reads 48 px without them).
  • Two corrections the draft needs on this example, shown as commands in the step: the bun track's amplitude 0.8 → 1 (CHECK_CHAIN_LAG reads neck > head_ctl > bun_ctl as one chain once the siblings' keys are gone — the recipe as drafted fails check here; filed upstream) and lock edge strength 100 (the default 50 ghosts 122 px at the "hm?" head turn).
  • check-adapters.ts runs 9c and asserts 27 physics + 3 transforms and the named constraints. REFERENCE: constraint table, build lines, bars, angle/tip readings, wind reading, timings, versions.

Build lines: loop physics: 27 physics constraint(s) left out …; CLOTH_SETTLES: WARN — 9 physics chain(s) …: 4 of them settle before the loop's length (skirt trees 1.8–2.0 s, hair does not settle) — reported as is; ANIMATIONS_DO_NOT_FOLD: PASS on and off; check: PASS; 11 of 12, 1 skipped, 5 warnings (SEAM_OVER_MOTION, CLOTH_SETTLES); build: PASS. Without --lead-in, idle.gif jumps at the wrap (max |d| 209); with --lead-in 1, 0.

Bars (stated first; rigc render 24 fps, physics on from rest): all 15 seam pairs within gap ≤ 25 / ghost ≤ 50 on both idle and hello (closest face|hair_front 7/47 on the hello); pass-through 0/81 idle, 0/97 hello; sleeve_r0 4.00°.

What it moves: hello — locks trail the head ≈ 5 px, fringe ≈ 10 px at the "hm?" turn, skirt swing ≈ 3° / hem ≈ 7 px at the settle. Idle — after the 2 s settle the hair is near still (0.2–0.4 px) and the skirt < 0.01 px: by the parts guide's design a breath does not drive physics; the world does (wind reading: locks 9–10 px, hems 8–13 px under wind (2, 0)). Candidly, the idle now looks quieter than step 8's keyed 3.6° lock sway; a page-side wind through play's environment() would make it visible — not in this PR.

Reproduction: README as written from a clean folder, bun add resolved parts 1.49.1 (published mid-task): every expected line held; hello.anim.json, config.json, skeleton.json, skeleton.model.json, skeleton.png, idle.gif byte-identical to the 1.48.0 build measured. check-adapters.ts exit 0 (99 links, 0 failures).

Not measured: the hello layered over the idle on two tracks with physics (rigc render reads one animation); the player's own physics vs rigc's render.

🤖 Generated with Claude Code

…h the producer's cloth recipe (#12)

The walkthrough's build declared no constraints: the hair and the skirt
moved only where the idle or the hello keyed them. Step 9c writes a
`cloth` block (bottomwear: 3 chains x 3 links with a swing; front hair:
1 chain x 3 links, edge strength 100), runs `rig-parts propose --cloth
--write-config`, and rebuilds with `--loop --lead-in 1`:

- the recipe drafts 27 physics + 3 transform constraints (the two side
  locks -> lockt0_/lock1t0_, the fringe, skirt0_..2_ + skirt_swing under
  hip); bones 70 -> 46; their idle keys are removed; the bun (back hair
  above the shoulders) is not reached and keeps its key
- hello.ts gains --no-skirt-keys: in 9c the skirt is left to physics
  (without physics the keys are still needed: thigh_l|bottomwear 48 px)
- two corrections the draft needs on this example, shown as commands:
  the bun track's amplitude 0.8 -> 1 (CHECK_CHAIN_LAG reads neck >
  head_ctl > bun_ctl as one chain once the siblings' keys are gone) and
  lock edge strength 100 (default 50 ghosts 122 px at the head turn)
- bars on idle and hello with physics on: all 15 seam pairs within
  gap <= 25 / ghost <= 50 (closest face|hair_front 7/47), pass-through
  0/81 and 0/97, ANIMATIONS_DO_NOT_FOLD PASS, check PASS, build PASS,
  sleeve_r0 4.00 deg; CLOTH_SETTLES WARN (skirt trees settle in
  1.8-2.0 s, hair does not) reported as is
- README as written reproduces from a clean folder on parts 1.49.1
  (published mid-task) byte-identical to the 1.48.0 build measured;
  check-adapters runs 9c and asserts the constraints

Closes #12

Co-Authored-By: Roa <342598975+fj-roa[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Physics on the braided hair and the skirt, through the producer's cloth recipe

1 participant