Inverse kinematics

From Tech Artists Wiki

(Redirected from IK)
Jump to: navigation, search

Inverse kinematics (abbreviated IK) refers to a process to calculate the required articulation of a series of limbs or joints, such that the end of the limb ends up in a particular location. In contrast to forward kinematics, where each movement for each component must be planned, only the starting and ending locations of the limb are necessary.

A good rigger will need a very thorough understanding of IK systems, since rigging is rarely as simple at an all-FK or all-IK solution. Non-linear problem solving, using the principles of IK and FK, are necessary.

The IK System

The start joint is the first bone in the chain that rotates, and the end joint is the last. The effector or goal is the position of the tip of the end bone (the point the IK chain reaches for). The goal's rotation usually has no effect on its IK system.

To behave correctly, IK systems need a preferred angle between each bone. This defines the axis the joint will bend in. If the preferred angle is very low, the IK chain will not work properly (bending erratically or not at all).

The rotation of the joint system is controlled by the swivel angle or pole vector. A swivel angle is the amount, usually in degrees, of the rotation around the axis from the start joint to the IK goal. This value is usually relative to the rotation of the IK chain, and thus does not point in a constant direction. For constant rotation, use of a pole vector is suggested. It will orient the IK chain to face the target object, resulting in a consistently oriented IK chain with minimal flipping. Both are valid solutions for animation, however, and the choice of one over the other should be weighed during rigging.

Solvers

There are a number of different types of IK solvers, which calculate the rotation of the joints along the IK chain. The specific names and algorithms may vary in each program.

Rotate Plane IK (RPIK) and History-Independent IK (HIIK) solvers are the most common. The "history-independent" means that the solver does not depend on preceding frames. This is the most common type of IK solver.

Single Chain IK (SCIK) solvers are similar to RPIK, but the goal also solves rotation- for this reason, RPIK is preferred.

History-Dependent IK (HDIK) solvers are quite uncommon. Their main benefit is that they allow sliding joints, joint limits, and precedence (which can be achieved in other IK setups, but are not innate). However, because they are history-dependent, their solving depends on previous frames, making them slower the longer an animation goes. For this reason, they are mostly avoided.

Limb IK and 2 Bone IK solvers only solve for a two bone chain (such as the upper and lower arm, hip and calf, etc.). Practically, it is almost identical to the HI IK solver. But because it is set up for two bones always, it is very fast, and commonly used inside game engines (and can be exported directly from 3d apps, often).

Spline IK uses a spline to determine the rotation of a bone chain. The user adjusts control vertices on the spline, and the bones do their best to follow.

Multi-chain IK solves for multiple IK handles simultaneously, and is useful for animating complex motions.

Full Body IK (FBIK) is a specialized system where manipulating one IK chain manipulates the entire body. For example, a character may reach his arm forward- when his arm reaches maximum extention, he will begin to turn his shoulders, torso, pelvis, and finally, his legs.

Spring IK produces proportional rotations across all joints. For example, it would be possible to animate accordion-like compression and extension with spring IK, where a SCIK would produce less rotation in bones higher up the hierarchy.

Forward Instantaneous Kinematic (FIK) systems are not solvers: they are control systems that are controlled by FK and IK simultaneously.

Personal tools