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.

Best of both worlds

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.

Screenshot: Character with red/pink IK drag target spheres visible on hands and feet 800 × 600

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

JointTypeFlexionExtensionOther
KneeHinge0–130°5° wiggle
ElbowHinge0–140°3° wiggle
HipBall100°15°40° abduction, 45° rotation
ShoulderBall170°50°160° abduction, 80° rotation
AnkleUniversal20° dorsi45° plantar25° inversion, 15° eversion
WristUniversal80°70°20° radial, 35° ulnar
This happens automatically

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:

Screenshot: Constraint widget showing colored arc, yellow handles, and axis line on a knee joint 600 × 600
Constraint widgets are educational

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:

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.

ActionShortcutDetails
Import constraintsILoad a JSON constraint file. Handles bone name mismatches gracefully.
Export constraintsShift + ESave 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:

  1. 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.
  2. Refine with FK Switch to FK and fine-tune individual joint rotations. Add personality — a slight wrist rotation here, a spine twist there.
  3. 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