Pose Studio: IK handles -- draggable alpha cones at each chain end, solved by Pose Studio #530

Closed
opened 2026-10-08 02:15:17 +00:00 by sky_line · 1 comment
Owner

Owner's design for IK in Pose Studio (#500). Supersedes #253, which was written for the old Firestorm poser floater; its solver notes are carried over below.

How it should work

  • Handles: a translucent (alpha'd) cone at the end of each bone chain (hands, feet, head, tail tip, wing tips, ears where the skeleton has them), drawn in the world on the avatar being posed.
  • Drag and rotate: pick a cone and move it with the standard translate / rotate gizmos. Moving the cone sets the end effector's target position; rotating it sets the end bone's orientation (hand / foot / head facing).
  • Pose Studio solves: as the handle moves, Pose Studio runs IK and rotates the bones in that chain so the end reaches the handle. The result is ordinary Pose Studio bone rotations (the same per-bone values the dials show), so it saves, mirrors, sequences, eases and shares exactly like a hand-made pose.

Details

  • Chains (from the skeleton, data-driven like the figure files so pony / quadruped and human both work): arms / front legs (shoulder → elbow → wrist → hand/hoof), legs / hind legs (hip → knee → ankle → foot), spine → neck → head (look-at style), tail (mTail1–6), wings (mWing1–4), ears.
  • Solvers:
    • two-bone analytic IK for limbs, with a pole vector (elbow / knee direction) control — e.g. a small secondary handle or a twist dial;
    • FABRIK or CCD for longer chains (spine, tail, wings);
    • look-at for head / neck.
  • Respect the dial model: solved rotations go through the same per-bone model (the owner's OP Pose HUD generator axes, bone_axes.xml) and its per-bone limits, so solves stay natural and the dials show sensible values afterwards. If a target is out of reach, the chain stretches toward it and stops at the limits.
  • Pins: pin a handle in place (world), so moving the body or another chain doesn't move a pinned hand / foot ("feet stay planted"); optional pin to another joint (hand on hip).
  • Editing flow:
    • a toggle in Pose Studio: "IK handles" on/off (handles only drawn while editing);
    • dragging a handle edits only that chain's bones; the dials update live for the selected bone;
    • undo/redo covers IK drags (one step per drag);
    • mirror mode mirrors handle drags to the opposite chain.
  • Drawing: cones and gizmos on the Vulkan world overlay, depth-tested but visible through the avatar (x-ray when occluded), colour-coded per chain, highlighted on hover / selection; sizes scale with the avatar.
  • Bones edited by IK count as edited (they're saved; untouched bones keep animating).
  • Works on yourself, owned animesh, and anyone who has granted posing consent (#500), since it only produces normal pose data.

Done when

  • Each chain has a cone handle; dragging / rotating it moves the chain to follow, smoothly, within limits.
  • Pole control for elbows / knees.
  • Pins keep feet / hands in place while posing the rest.
  • IK-made poses save, load, mirror, sequence and share like any other pose.
Owner's design for IK in **Pose Studio** (#500). Supersedes #253, which was written for the old Firestorm poser floater; its solver notes are carried over below. ## How it should work - **Handles:** a translucent (alpha'd) **cone at the end of each bone chain** (hands, feet, head, tail tip, wing tips, ears where the skeleton has them), drawn in the world on the avatar being posed. - **Drag and rotate:** pick a cone and move it with the standard **translate / rotate gizmos**. Moving the cone sets the end effector's target position; rotating it sets the end bone's orientation (hand / foot / head facing). - **Pose Studio solves:** as the handle moves, Pose Studio runs IK and rotates the bones in that chain so the end reaches the handle. The result is ordinary Pose Studio bone rotations (the same per-bone values the dials show), so it saves, mirrors, sequences, eases and shares exactly like a hand-made pose. ## Details - **Chains** (from the skeleton, data-driven like the figure files so pony / quadruped and human both work): arms / front legs (shoulder → elbow → wrist → hand/hoof), legs / hind legs (hip → knee → ankle → foot), spine → neck → head (look-at style), tail (mTail1–6), wings (mWing1–4), ears. - **Solvers:** - two-bone analytic IK for limbs, with a **pole vector** (elbow / knee direction) control — e.g. a small secondary handle or a twist dial; - FABRIK or CCD for longer chains (spine, tail, wings); - look-at for head / neck. - **Respect the dial model:** solved rotations go through the same per-bone model (the owner's OP Pose HUD generator axes, `bone_axes.xml`) and its per-bone **limits**, so solves stay natural and the dials show sensible values afterwards. If a target is out of reach, the chain stretches toward it and stops at the limits. - **Pins:** pin a handle in place (world), so moving the body or another chain doesn't move a pinned hand / foot ("feet stay planted"); optional pin to another joint (hand on hip). - **Editing flow:** - a toggle in Pose Studio: "IK handles" on/off (handles only drawn while editing); - dragging a handle edits only that chain's bones; the dials update live for the selected bone; - undo/redo covers IK drags (one step per drag); - mirror mode mirrors handle drags to the opposite chain. - **Drawing:** cones and gizmos on the Vulkan world overlay, depth-tested but visible through the avatar (x-ray when occluded), colour-coded per chain, highlighted on hover / selection; sizes scale with the avatar. - **Bones edited by IK count as edited** (they're saved; untouched bones keep animating). - Works on yourself, owned animesh, and anyone who has granted posing consent (#500), since it only produces normal pose data. ## Done when - Each chain has a cone handle; dragging / rotating it moves the chain to follow, smoothly, within limits. - Pole control for elbows / knees. - Pins keep feet / hands in place while posing the rest. - IK-made poses save, load, mirror, sequence and share like any other pose.
sky_line added this to the Slipstream project 2026-10-08 02:15:17 +00:00
Author
Owner

Shipped in 1.3.0 Beta 3: IK handles placed from the worn rigged mesh (hooves, wings), persistent Blender-style targets, rotation rings like the build tool, and poles that bend the knee/elbow. Remaining rough edges can be filed as follow-ups.

Shipped in **1.3.0 Beta 3**: IK handles placed from the worn rigged mesh (hooves, wings), persistent Blender-style targets, rotation rings like the build tool, and poles that bend the knee/elbow. Remaining rough edges can be filed as follow-ups.
sky_line 2026-10-11 08:53:35 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#530
No description provided.