User:Prof McCarthy/inverse kinematics

Inverse kinematics and 3D animation
Inverse kinematics is important to game programming and 3D animation, where it is used to connect game characters physically to the world, such as feet landing firmly on top of terrain.

An animated figure is modeled with a skeleton of rigid segments connected with joints, called a kinematic chain. The kinematic equations of the figure defines the relationship between the joint angles and the pose of the figure. The forward kinematic animation problem uses the kinematics equations to determine the pose given the joint angles. The inverse kinematics problem computes the joint angles for a desired pose of the figure.

Inverse kinematics is used in computer-aided design systems to animate assemblies and by computer-based artists and animators to position figures and characters. It is often easier for computer-based designers, artists and animators to define the spatial configuration of an assembly or figure by moving parts, or arms and legs rather than directly manipulate joint angles.

The assembly is modeled as rigid links connected by joints that are defined as mates, or geometric constraints. Movement of one element requires the computation of the joint angles for the other elements to maintain the joint constraints. For example, inverse kinematics allows an artist to move the hand of a 3D human model to a desired position and orientation and have an algorithm select the proper angles of the wrist, elbow, and shoulder joints. Successful implementation animation requires the figure move within reasonable anthropomorphic limits.

While analytical solutions to the inverse kinematics problem exist for a wide range of kinematic chains, computer modeling and animation tools generally use Newton's method to solve the non-linear kinematics equations.

The IKFast open-source program can solve for the complete analytical solutions of most common robot manipulators and generate C++ code for them. The generated solvers cover most degenerate cases and can finish in microseconds on recent computers.

Other applications of inverse kinematic algorithms include interactive manipulation, animation control and collision avoidance.