Inverse Kinematics
Grab an end. Drag it. The joints figure themselves out. It's the future and it's here.
FK vs IK — When to Use What
With Forward Kinematics, you rotate each joint manually from parent to child. With Inverse Kinematics, you grab the end of a chain (a hand, a foot) and drag it where you want it. The solver calculates all the joint rotations needed to get the end effector to that position.
Forward Kinematics (FK)
Rotate shoulder → elbow → wrist one by one. Full manual control. Great for arcs and follow-through.
Inverse Kinematics (IK)
Grab the wrist, drag it to the table. Shoulder and elbow rotate automatically. Great for contact and posing.
Most animators use IK for blocking (setting up key poses quickly) and FK for refinement (adding personality and overlap). BlackBox lets you switch between them freely.
Enabling IK Mode
Click the IK toggle button in the viewport controls. When IK is active, red and pink drag targets appear on the character's extremities — hands, feet, and head.
Click and drag any target sphere to reposition the end effector. The entire chain from root to effector responds in real time. The solver uses CCD (Cyclic Coordinate Descent) — a fast, stable algorithm that handles complex chains gracefully.
Biomechanical Constraints
Here's where BlackBox gets serious. When IK is enabled, the solver automatically applies anatomically accurate joint constraints based on medical research from the American Academy of Orthopaedic Surgeons (AAOS) and Gray's Anatomy.
Translation: knees only bend one way. Elbows have realistic limits. Shoulders rotate within anatomical range. Your character won't contort into impossible poses — unless you want them to.
Joint Constraint Data
| Joint | Type | Flexion | Extension | Other |
|---|---|---|---|---|
| Knee | Hinge | 0–130° | 0° | 5° wiggle |
| Elbow | Hinge | 0–140° | 0° | 3° wiggle |
| Hip | Ball | 100° | 15° | 40° abduction, 45° rotation |
| Shoulder | Ball | 170° | 50° | 160° abduction, 80° rotation |
| Ankle | Universal | 20° dorsi | 45° plantar | 25° inversion, 15° eversion |
| Wrist | Universal | 80° | 70° | 20° radial, 35° ulnar |
You don't need to configure any of this. When the IK solver activates, it detects each bone's joint type and applies the appropriate constraints. The system uses detectHingeFlexAxis() to determine how each joint bends and detectFlexSign() to get the flex direction right.
The Constraint Editor
Want to see and adjust the constraints? Press C while in IK mode to open the Constraint Editor.
White spheres appear at each constrained joint. Click one to see its constraint visualization:
- Colored arcs — show the allowed rotation range for each axis
- Yellow handles — drag to adjust the min/max limits
- Blue line — current bone rotation relative to the constraint
- Press Tab to cycle through X, Y, and Z axes
Even if you're not adjusting constraints, the visual widgets are a fantastic way to understand how each joint works. Toggle them on, orbit around a joint, and you'll see the exact degrees of freedom available. It's like an anatomy lesson in your animation tool.
Joint Types
Hinge Joint
One axis of rotation, like a door. Knees and elbows. Can only bend one way (flex/extend) with minimal wiggle room.
Ball Joint
Three axes of rotation within a cone. Hips and shoulders. Wide range of motion bounded by a swing radius.
Universal Joint
Two primary axes. Wrists and ankles. Can flex/extend and deviate side-to-side, with limited twist.
Fixed Joint
Limited rotation. Spine segments. Each vertebra moves just a little, but the combined chain creates fluid torso motion.
Swing-Twist Decomposition
Under the hood, constraints use a swing-twist decomposition. Every rotation is split into two parts:
- Twist — rotation around the bone's length axis (like rolling your forearm). Constrained by min/max angles.
- Swing — rotation that changes the bone's direction (bending, abduction). Constrained by a cone radius.
This separation lets the solver enforce anatomical limits without the gimbal lock issues that plague Euler-angle constraints. The format is:
{ twistAxis: Vector3, twistMin: rad, twistMax: rad, swingRadius: rad }
Importing & Exporting Constraints
Spent time perfecting constraints for one character? Export them and reuse on others.
| Action | Shortcut | Details |
|---|---|---|
| Import constraints | I | Load a JSON constraint file. Handles bone name mismatches gracefully. |
| Export constraints | Shift + E | Save constraints as JSON v1.0 with metadata, hierarchy, and mirror mapping. |
The JSON format includes joint type detection, parent/child relationships, and automatic left/right mirror bone mapping. Import across different models and the system matches constraints to equivalent bones.
IK + FK Workflow
The most efficient animation workflow combines both:
- Block with IK Enable IK mode and quickly drag end effectors to set up your key poses. Get the hands where they need to be, plant the feet.
- Refine with FK Switch to FK and fine-tune individual joint rotations. Add personality — a slight wrist rotation here, a spine twist there.
- Polish timing Use the timeline to adjust keyframe spacing. Move keyframes closer for snappy movements, spread them out for smooth, flowing motion.
What's Next
Forward Kinematics
Master the bone-by-bone approach for precise animation control and polishing.
FK guide →Model Support
VRM, Meshy, TripoAI, and more. See what models work and how they're detected.
Supported models →Keyboard Shortcuts
Every hotkey at a glance. Maximize your animation speed.
See shortcuts →