modo bubbble logo

Full Body IK


Home >> Rigging & Animation >> Full Body IK

back next

Inverse Kinematics, or IK for short, is a system where users can positions and rotate a goal item and the IK hierarchy chain will reach toward that goal, making for a faster and more intuitive animation workflow. Modo provides a Full Body IK option that is easy to setup and use. The set-up of the chain is covered on the "Full Body IK Setup" page of the documentation.

IK Solver PanelSolver--
When any IK chain is applied to a hierarchy, an IK Solver item is created and parented to the Root of the hierarchy, named by default "FullBodyIK". It contains the settings that control the IK for the entire chain (all children items of the root).

IK/FK Blend: Using the IK/FK Blend option, users can control to what degree an the chain is affected by the IK solver, attenuating between the Fully Automatic IK solution at 100% toward fully manual keyframe positioning (FK) at 0%. Items need to be keyframed in their driven state prior to blending toward FK, otherwise the item will interpolate toward their last keyframed position.

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

Steps: This is the maximum number of times the IK solver will evaluate while trying to satisfy all the tasks on a chain and reach a final solution. If a satisfactory solution is found before the maximum number of steps is reached then the solver will stop early.

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

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

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

Specify Tolerance: When enabled the value set under 'Tolerance' (see below) will be used while solving. Otherwise the tolerance will be calculated internally based on the size and complexity of the chain and it's tasks.

Tolerance: Then 'Specify Tolerance' is enabled, this option determines how close a chain needs to match it's tasks before the solver will consider the solution to be completed. Lower values will cause the joints to match their tasks more closely but will require more steps to calculate.

Translate Root: When enabled, this option specifies whether the Chain Root item is allowed to move when solving the IK.

Weight: This controls how freely the Chain Root will move when the setting above is enabled. Zero will prevent it moving while 1.0 will allow it to move freely. This setting can be raised above one if you want to increase the likelihood of the root moving even more.

 

 

Joint Settings

 

IK Item PanelJoint--

Active: When enabled, this option specifies that the joint will be affected by the IK solving, disable the option to have it ignore IK.

Enable Limits: Limits on a joint can be used to restrict it's rotation on each axis. This setting is used by the IK system to determine whether limits should be active on the joint.

Limits Axis: When limits are used on a joint this control should be set to the axis of the joint that limits will be calculated from. Normally this is the axis that is pointing towards the joint's first child joint, i.e. the axis running along the IK segment.

Max Joint Velocity: The "Max Joint Velocity' setting is used to adjust the amount of rotation a joint is allowed to make for each iteration of the IK solver. Larger values allow the joint to rotate more. For very simple chains, e.g. a two segment arm or leg, this setting should be increased as there are fewer joints to spread the rotations across. On more complex chains this can be used 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 allowing users to enable/disable translations and rotations and limit the amount of movement.

Enable Translation: When this is enabled the joint's child is allowed to move on the specified axis of the current joint while trying to reach it's goal (Not applicable to the chain root).

Weight: The 'Weight' option can be used to control the amount of joint translation, zero percent will disable movement, 100% allows full movement. The value can be increased above 100% to make movement more likely, especially when several joints have translation active.

Enable Rotations: This option is used to toggle rotation on the specified axis.

Weight: This control can be used to adjust the freedom of rotation round this axis. At zero percent the joint will not rotate around this axis, at 100% full rotation is allowed. Raising this value above 100% will make this axis more likely to rotate.

Use Limits: The Use Limits options will force the IK only rotate within the specified values, producing a hard stop when the Min or Max values are reached.

Min/Max: The 'Min' and 'Max' values determine the range that a joint is allowed to rotate within. Only applies when 'Use Limits' is enabled.

 

 

Task Options
When Goals are added to a Joint, additional 'Task' options are added to the target Joint to adjust how the joint changes to reach toward the goal. Tasks are related to Goals, as they are the instructions to the joint to retain a Position, Rotation or Both. For a 'Position Task' the IK solver will attempt to keep the chain item at the world location the item had when the task was added. For a 'Rotation Task' the IK solver will attempt to keep the chain item at the same world orientation that it had when the task was added.

Tasks PanelPosition Task--

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

Weight: This is the strength of the task, i.e. how much effect it has on the chain. When there are multiple tasks on a chain this can be used to make particular tasks have more or less influence on the solution.

Precision: This controls how closely the solver will try to match the joint to it's task.

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

Orientation Task--

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

Weight: This is the strength of the task, i.e. how much effect it has on the chain. When there are multiple tasks on a chain this can be used to make particular tasks have more or less influence on the solution.

Precision: This controls how closely the solver will try to match the joint to it's task.

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

Top

back next