Skip to content

feat: the settle is a stance change — shoes split through the producer, the splayed leg comes 40 % of the way in (#13) - #16

Merged
firejune merged 2 commits into
mainfrom
gs-13-stance
Oct 21, 2026
Merged

firejune merged 2 commits into
mainfrom
gs-13-stance

Conversation

@firejune

Copy link
Copy Markdown
Contributor

Closes #13. Stacked on #14 (base gs-12-physics); retarget to main after #14 merges. Owner: "짝다리 모션이 자연스러우려먼 발이 11자가 되었다가 돌아가면 될거 같은데, 이렇게 하면 치마물리도 훨씬 살아날거야".

What

  • Step 7 keypoint fix — l_ankle → [848, 2140] (the script's [855.7, 2154.1] sits 11.76 px off the leg art → LINT foot_l, shoes stay whole). With it: propose → 0 LINT line(s), 44 bone(s); step 8 → limb cut: "shoes" opaque 13735 = "foot_r" 8071 + "foot_l" 5664. The hand-placed set in docs/KEYPOINTS.md (CI's set, [850, 2110], 22 px off) is fixed at the source. Producer-only: no hand cut.
  • The settle (hello.ts): the splayed right leg's ankle slides inward along the floor by two-bone IK solved from rig.json — 40 % of the way to parallel (33.2 px; tilt 15.96° → 12.87°; leg_r0 +9.61°, leg_r1 −13.63°); left leg follows the hip (x −6) by IK; feet unkeyed, level; skirt0_0 (cloth) / skirt_r0 (plain) follows the right thigh. 3.15 → 3.75 out, hold to 4.15, back by 4.75 s, smoothstep. Hello = 4.75 s, 115 keys, loops. hello.ts refuses a rig without foot_r/foot_l and points to step 7.
  • Bone counts, step 8's check line (11 of 13 bar(s) measured, 2 skipped), REFERENCE section "The settle: a stance change" (keys, bars, the 50 % failure, readings, needs-a-part list), stale wave-build/ size fixed. check-adapters.ts: [bar:guide-feet] foot_r/foot_l, no shoes slot, 72 bones; hello 4.75 s.

Why 40 % and not the probe's 50 %: at 50 % the cloth build's topwear|bottomwear ghost read 54 over the hold (bar 50); every other pair passed and the plain build passed. Stepped down per the card; bars unchanged.

Bars at 40 % (gap/ghost px, worst frame, 24 fps, physics on where present)

pair 9b hello 9c hello
topwear|bottomwear 1/38 3/44
thigh_r|bottomwear 11/0 10/2
thigh_l|bottomwear 11/3 7/6
shin_r|thigh_r 1/38 1/38
face|hair_front 0/0 7/47
shin_r|foot_r 0/0 0/0
all others ≤ 8/26 ≤ 8/26
Idle on both builds inside. Pass-through 0/81 and 0/115; folds none; sleeve_r0 4.00°; feet: ankle and sole y move ≤ 0.001 px; FEET_STAY_LEVEL PASS; check: PASS, build: PASS on 9b and 9c.

Candid read: she re-plants her weight — modestly. The hem tilts with the right thigh; the hip-driven sway is smaller than #14's (the hip now moves over 0.6 s, not 0.35 s). A small notch shows on the inner right knee at 2× (knee ghost 38, inside the bar). The right shoe stays drawn toed-out 44°: the legs come together but the feet do not become a true "11" — that needs a second shoe painting (slot).

Verification: README-as-written clean run (parts 1.49.1, rig-c 2.64.1, pose 0.37.0, play 1.12.0) exit 0, 416.6 s; outputs byte-identical to the measured build; check-adapters.ts exit 0 (all bars PASS).

🤖 Generated with Claude Code

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-20T18:57:05.297958Z 7d857f0 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@firejune

Copy link
Copy Markdown
Contributor Author

55b529c: the no-Python route now reproduces the hello. Before this commit, a reader who used the hand-placed set in docs/KEYPOINTS.md got a different hello from the one on the keypoints.py route, and it failed the guide's own bars. The set is now within a pixel of the script's joints. The joints that mattered were the hips, the knees and the right ankle, which were 14–50 px off. An ablation that moved only those five joints gave the same result as the full retune.

Both routes at gs-13, with packages from the README's bun add (parts 1.53.0, rig-c 2.65.1, pose 0.37.1, play 1.12.0):

keypoints.py hand set, new hand set, old
9b hello.ts ankle 33.2 px, 15.96 → 12.87° 33.6 px, 16.05 → 12.92° 41.1 px, 16.70 → 12.62°
9b build warnings 1 (upperarm_r|forearm_r 23 px) 1 (26 px) 2 (+ thigh_r|shin_r 38 px)
9c build warnings 5 5 6
9c lead-in max |d| (README quotes 0) 0 0 1
hello seams at wind (1,0), worst gap thigh_r|bottomwear 10 11 —
hello seams at wind (1,0), worst ghost face|hair_front 47, topwear|bottomwear 44 46, 45 topwear|bottomwear 79
pass-through / folds 0 / 0 0 / 0 —

The bars are gap ≤ 25 and ghost ≤ 50, at the runtime's default wind (1,0), which is what ships. In still air (0,0) both routes leave the hem open: 33/46 on the keypoints.py route and 36/46 on the hand set. That is the skirt hanging in calm air, already filed as rig-c/parts#591, and not a keypoint matter.

The README's no-Python paragraph and KEYPOINTS.md now say the set was tuned to match the script.

🤖 Generated with Claude Code

firejune and others added 2 commits October 21, 2026 10:45
…r, the splayed leg comes 40 % of the way in (#13)

Step 7 corrects the left ankle keypoint ([848, 2140]; the script's lands
11.8 px off the leg art), so the producer's limbs rule splits the shoes:
propose prints 44 bones and 0 LINT, step 8's build prints
`limb cut: "shoes" opaque 13735 = "foot_r" 8071 + "foot_l" 5664`. The
hand-placed set in docs/KEYPOINTS.md is fixed at the source too.

hello.ts replaces the hip-only settle with a stance change solved from
rig.json: the splayed right leg's ankle slides 33.2 px inward along the
floor (40 % of the way to parallel; tilt 15.96 -> 12.87 deg; leg_r0
+9.61, leg_r1 -13.63) by two-bone IK, the left leg follows the hip
(-6 px) by IK, feet unkeyed and level, the skirt's first link follows the
right thigh; 3.15-4.75 s, smoothstep. The hello is 4.75 s and loops.

50 % (the probe's figure) failed one bar on the cloth build
(topwear|bottomwear ghost 54 > 50 over the hold), so it ships at 40 %;
bars unchanged. At 40 % all pairs are inside on 9b and 9c, idle and
hello (worst topwear|bottomwear 3/44), pass-through 0, no folds,
FEET_STAY_LEVEL PASS, check PASS, build PASS. The right shoe stays drawn
toed-out (a true "11" needs a second shoe painting).

check-adapters asserts foot_r/foot_l, no shoes slot, 72 bones and the
4.75 s hello. README as written reproduces from a clean folder on
parts 1.49.1, byte-identical to the measured build.

Closes #13

Co-Authored-By: Roa <342598975+fj-roa[bot]@users.noreply.github.com>
…ript's joints (#13)

The no-Python route's set put the right leg's painted stance at 16.70 deg
(script 15.96), so hello.ts brought the ankle 41.1 px in and the hello
failed the guide's own seam bars (topwear|bottomwear ghost 79, hem 32/30,
plus a thigh_r|shin_r seam warning). The hips, knees and right ankle were
14-50 px off; the set now sits within a pixel of keypoints.py's output and
the hello reads 33.6 px, 16.05 -> 12.92 deg, inside every bar.

Co-Authored-By: Roa <342598975+fj-roa[bot]@users.noreply.github.com>
@firejune
firejune changed the base branch from gs-12-physics to main October 21, 2026 01:45
@firejune firejune closed this Oct 21, 2026
@firejune firejune reopened this Oct 21, 2026
@firejune
firejune merged commit 3dcda7a into main Oct 21, 2026
@firejune
firejune deleted the gs-13-stance branch October 21, 2026 01:49
@firejune

Copy link
Copy Markdown
Contributor Author

Codex review on 7d857f0: no findings. The later commit (the hand-set fix, docs only) was not re-reviewed, per the one-review-per-PR rule.

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.

Settle as a stance change: split the shoes through the producer, bring the legs half-way to parallel, let the hip drive the skirt

1 participant