Positioning and Rotating the Full Body IK

Inverse Kinematics, IK, is a system where you can position and rotate a goal item. The IK hierarchy chain reaches toward that goal to make a faster and more intuitive animation workflow. Modo provides a Full Body IK option that is easy to setup and use. See the Full Body IK Setup topic for information about setting up the chain.

Solver

IK Solver Panel

When you apply any IK chain to a hierarchy, Modo creates an IK Solver item and parents it to the root of the hierarchy (by default, FullBodyIK). This has the settings that control the IK for the entire chain (including all child items of the root).

IK/FK Blend: Controls to what degree the chain is affected by the IK solver. This attenuates between the Fully Automatic IK solution at 100% toward fully manual keyframe positioning (FK) at 0%. You need to keyframe items in their driven state prior to blending toward FK; otherwise, the item interpolates toward the last keyframed position.

Solve Continuous: Specifies whether the IK solving starts from the chain's rest pose (Off) or from the previous IK solution (On). The differences are subtle, but the latter can be effective for things like tails or tentacles.

Steps: Indicates the maximum number of times the IK solver evaluates while trying to satisfy all the tasks on a chain and reach a final solution. If the IK solver finds a satisfactory solution before it reaches the maximum number of steps, then it stops early.

Precision: Controls how accurately the solver tries to match the tasks on the chain. Higher values decrease damping but require more calculations and may reduce performance depending on the complexity of the chain. Lower values increase damping and can result in less accurate solving.

Task Strength: Specifies the overall strength of the tasks assigned to this chain and determines how much influence the tasks have on the IK solving.

Limits Strength: Controls the overall strength of the limits on the chain. When joints approach their Min or Max rotation angles, they become stiffer and less likely to rotate further. Lower values for this setting result in softer damping of the rotation; higher values make the rotation of the joints decrease more abruptly. For very simple chains, this value needs to be raised before the limits come into effect.

Specify Tolerance: Uses the Tolerance value while solving (when enabled). When disabled, Modo calculates the tolerance internally based on the size and complexity of the chain and its tasks.

Tolerance: Determines (when enabled) how close a chain needs to match its tasks before the solver considers the solution to be complete. Lower values cause the joints to match their tasks more closely but require more steps to calculate.

Translate Root: Specifies (when enabled) whether the chain root item is allowed to move when solving the IK.

Weight: Controls how freely the chain root moves when you enable Translate Root. Zero (0) prevents it moving, but 1.0 allows it to move freely. Raise this setting above 1 to increase the likelihood of the root moving even more.

Joint Settings

Joint—

IK Item Panel

Active: Specifies (when enabled) whether the joint is affected by the IK solving. Disable this option to have it ignore IK.

Enable Limits: Specifies whether limits should be active on the joint in the IK system. You can have limits on a joint to restrict its rotation on each axis.

Limits Axis: Specifies the axis of the joint for any set limits. Use when you set limits on a joint. Normally, this is the axis that is pointing towards the joint's first child joint, which is usually the axis running along the IK segment.

Max Joint Velocity: Adjusts the amount of rotation a joint can make for each iteration of the IK solver. With larger values, the joint can rotate more. For very simple chains (for example, a two-segment arm or leg), increase this setting because there are fewer joints to spread the rotations across. On more complex chains, use this to reduce jitter that may occur when goals or tasks are moved a long way out of reach.

X/Y/Z Axis—

Each of the three axes provide identical options for you to enable or disable translations and rotations and limit the amount of movement.

Enable Translation: Allows (when enabled) the joint's child to move on the specified axis of the current joint while trying to reach its goal (This is not applicable to the chain root.)

Weight: Controls the amount of joint translation: 0% disables movement and 100% allows full movement. You can increase the value above 100% to make movement more likely — especially when several joints have Translation enabled.

Enable Rotations: Toggles rotation on the specified axis.

Weight: Adjusts the freedom of rotation around the specified axis. At 0% the joint does not rotate; at 100% it can rotate fully. Raising this value above 100% makes this axis more likely to rotate.

Use Limits: Forces (when enabled) the IK to only rotate within the specified values and to produce a hard stop when it reaches the Min or Max value.

Min/Max: Determine the range that a joint is allowed to rotate within. Modo only uses these limits when you enable Use Limits.

Task Options

When you add Goals to a Joint, Modo adds Task options to the target Joint for you to adjust how the joint changes to reach toward the goal. Tasks are related to goals because they are the instructions to the joint to retain a position or rotation (or both). For a Position Task, the IK solver attempts to keep the chain item at the World location the item had when you added the task. For a Rotation Task, the IK solver attempts to keep the chain item at the same World orientation that it had when you added the task.

Position Task—

Tasks Panel

Enable: Controls whether the task is currently active or not.

Weight: Specifies the strength of the task to determine how much effect it has on the chain. When there are multiple tasks on a chain, you can use this to make specific tasks have more or less influence on the solution.

Precision: Controls how closely the solver tries to match the joint to its task.

Number of Joints: Specifies the number of joints towards the root that this task affects. Set to -1 to affect all joints.

Orientation Task—

Enable: Controls whether the task is currently active or not.

Weight: Specifies the strength of the task to determine how much effect it has on the chain. When there are multiple tasks on a chain, you can use this to make specific tasks have more or less influence on the solution.

Precision: Controls how closely the solver tries to match the joint to its task.

Number of Joints: Specifies the number of joints towards the root that this task affects. Set to -1 to affect all joints.