Skip to content

feat(rigboy): add the first SD-style side-profile motion rig - #79

Merged
firejune merged 1 commit into
mainfrom
naru/78-rigboy
Oct 30, 2026
Merged

firejune merged 1 commit into
mainfrom
naru/78-rigboy

Conversation

@firejune

Copy link
Copy Markdown
Collaborator

Closes #78. Adds rigboy/, the first SD-style motion character rig in the examples: an original side-profile figure that takes Spineboy's motion-demo role.

Contents

  • Seven clips: idle, walk, run, jump, aim (a live ±8° dial), shoot, hit.
  • Source and inputs: painting, See-through inputs and layers with depth, and assembled parts with per-piece provenance.
  • Rig: config.json and motions.json author it; rig/ holds the generated rig and build/ the packed model, atlas and page.
  • Also: generation.json with its conditioning graph, preview.webp, and controls.js.
  • Root README: layout and credit rows updated.

Only the 181 files on the allowlist are committed. Lane-side candidates and diagnostic runs are excluded.

Verification

Check Result
allowlist hash/size re-read by HQ 181/181 match, 20.3 MB
packaged-copy RigPlayer smoke (job pool) exit 0
files before/after smoke 181 hash-equal
clips each draws its mesh canvases with nonzero material
page errors 0
aim dial −8/0/+8 toy world angles 82/90/98°, max error 0.0018°
travel helper stance drift ≤ 1.35e-5 px
arm settling on/off after a key pass
private paths / names in committed text none (grep)

model 9cfa2773…, atlas 3b44ba0e…, preview 57656f4d….

Limits (stated in the README)

The clips are modest on purpose. A single profile painting folds the knee meshes at deep flexion, and splitting or rigidifying the legs opens gaps instead. Deeper leg motion needs a source drawn in parts.

🤖 Generated with Claude Code

rigboy is an original short-haired boy in full side profile, holding a
two-handed toy blaster. It takes Spineboy's motion-demo role with
original art and authoring; no benchmark art, rig data or coordinates
were copied.

Seven modest samples: idle, walk, run, jump, aim, shoot and hit. aim is
a live dial over -8..+8 degrees, driven by the aim_dial slider. walk and
run are in-place cycles, and a travel helper adds the root advance used
for the world-contact checks.

Measured, on a fresh packaged copy run through the real RigPlayer on the
job pool (exit 0):
- all 181 files hash-equal before and after the run;
- every clip draws its mesh canvases with nonzero material;
- 0 page errors;
- the aim dial at -8/0/+8 gives toy world angles 82/90/98, max error
  0.0018 degrees;
- stance drift under the travel helper is at most 1.35e-5 px;
- arm settling on and off both pass after a key.
After the smoke, only the README's limits paragraph was shortened.

Limits are stated in the README. Deeper leg motion folds the knee meshes
of a single profile painting, so it needs a parts-drawn source. Those
attempts are excluded from this example and kept as lane receipts.

Closes #78

Co-Authored-By: Naru <342599188+fj-naru[bot]@users.noreply.github.com>
Co-Authored-By: Roa <342598975+fj-roa[bot]@users.noreply.github.com>
@firejune

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 30, 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-30T01:20:10.852931Z 9e3eb29 Manual request
ℹ️ 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.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9e3eb29403

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rigboy/controls.js
Comment on lines +9 to +10
if (travel && velocities[context.animation])
bones.bone('root').x += originX + velocities[context.animation] * (context.trackTime ?? 0);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve accumulated travel when stopping or changing clips

When an application follows the README's walk-to-shoot example, disabling travel removes the entire root offset instead of stopping at the current position: after two seconds of walking the helper applies 128 pixels, but setTravel(false) makes the next stationary frame return to the original position. Switching from walk to run similarly resets the displacement when the new clip's track time starts at zero. Retain the accumulated displacement across clip changes and continue applying it while travel is disabled, so stopping movement does not teleport the character.

Useful? React with 👍 / 👎.

@firejune

Copy link
Copy Markdown
Collaborator Author

HQ ruling on the Codex P2 (travel offset resets on setTravel(false) / clip change): rejected for this PR. setTravel is the contact-check aid the README describes, a root advance from unwrapped track time used to measure stance drift. The README states the model does not plant feet in an application's world and that the application owns movement. Accumulating a world position across clips is that application-side movement. Making the helper own it would move scene state into the example. Not a defect in the measured claim; one AI review per PR.

@firejune
firejune merged commit 8aa2207 into main Oct 30, 2026
2 checks passed
@firejune
firejune deleted the naru/78-rigboy branch October 30, 2026 01:21
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.

rigboy: an original sample character, Spineboy's role for rig-c — idle, walk, run, aim, shoot, jump, hit, look

1 participant