From BlenderWiki
If you want to document Blender 2.5 features please edit pages under Doc:2.5/Manual.
If a "2.5" page doesn't exist please copy the text from 2.4x Manual and edit the new page (i.e. you should paste the wikitext from this 2.4x page to this new 2.5x page and then update the latter with 2.5 features)
[edit] Inverse Kinematics
[Much work has been done on the Inverse Kinematics Solver] both to improve its performance and to add new features. Additionally, setting up IK is now easier than ever!
[edit] Interface
Mode: Pose Mode
To enable IK solving, you first need something for the bone chain to point to as a target. This target can be an empty, or another bone that is not in the bone chain. There are two ways to initialize the constraint: via hotkey or using the Constraints panel in Pose mode. For this example, select the tip of the bone chain and press Ctrl I, choosing "To New Empty Object" from the popup menu. A new empty is created, and is set as the target of the IK chain. The bone is colored yellow, and a dashed line indicates how far up the chain of bones the IK solver will work. The new "ChainLen" option of the IK Solver constraint (found in the Object buttons panel) allows control over how far up the chain the IK solver extends, replacing the old "IK" toggle in edit mode. A chain of 0 is all bones from that bone back through and connected to it, all the way back to the root bone. This also means that bones in an IK chain no longer have to be connected, but allow an offset from their parent. The other popup menu option, "Without Target", is discussed at the end of this article, under "Mixing IK and FK".
In order to use a bone as an IK target (without creating an empty), select the target bone first, then hold down SHIFT and select the bone at the tip of your IK chain. Pressing Ctrl I and choosing "To Selected Bone" from the popup menu sets the tip bone to use the target bone for its IK target. Note that the target bone cannot be a part of the bone chain that will have IK.
[edit] Tree IK
There is now support for "tree IK". IK chains starting in the same bone will automatically be solved together, affecting each other as needed to reach their targets. The "PosW" slider defines the importance of each target, in case not all targets can be reached.
[edit] IK target rotation
The "Rot" option of the IK Solver constraint makes the tip of the chain match the rotation of the target. Its importance relative to reaching the position of the target can be controlled with the "RotW" slider.
[edit] IK Pole Target
This bone constraint allows you to define a "pole", which is the direction in which a knee, or middle joint in the IK chain, should point track to. [See Release log for more info.] The bone IK Solver constraint for a bone chain has both an IK target (what the end bone points to) as well as a Pole Target, which is the target that the chain points to, or stays "facing" as it bends. This is most useful in knees and elbows, but would also work to allow you to control which way a tail "crinks" when compressing. Parent an empty to the armature, and then use it as a pole target. Animate the location of that empty, which would guide the bone chain's orientation as it bends. For knees, float the empty out in front of the leg (study mocap to see how the leg/hip rotation results in knee orientation during the walk cycle). For elbows, float the empty behind the arm, and study mocap to see how the elbows fly out or stay tucked in for different movements.
| What is a Pole Target?: | |
| "A pole target is a secondary target for a bone with an IK constraint. The first target is where the chain of bones is trying to get to, and the second target (pole target), is where the chain bends to to get to this target. A possible setup is this: A chain of bones (like upperarm->forearm) has an IK constraint on the last child bone (forearm) and is set to target an IK target (like a replacement target bone for the hand). Then to control the direction the elbow is pointing, one uses another target, the pole target."
|
[edit] Rotation limits
The behavior of individual bones in an IK chain can be modified. For bones in an IK chain there are a number of options available in pose mode, in the Edit buttons.
By default bones have 3 degrees of freedom (DoF), meaning they can rotate over the X and Z axes, and roll or twist along the Y axis. Each DoF can now be locked, to disable rotation over that particular axis.
As an example, let us consider a human arm. The wrist has 2 DoF. It can bend in any direction, but it cannot twist. The elbow also has 2 DoF: it can twist, and bend in one direction. Finally, the shoulder has 3 DoF. An example of a 1 DoF joint is the knee.
The "stiffness" defines per DoF how eager the bone is to rotate.
[edit] Setting rotation range
The range of rotation can also be limited. "Limit X" and "Limit Z" define how far the bone can rotate over the X and Z axes respectively. If both are enabled this defines an ellipsoid region. "Limit Y" defines how much the bone can twist.
There are two important things to remember:
- DoF and rotation limits are defined with respect to the rest position of the bone.
- They only work for bones in IK chains.
[edit] Mixing IK and FK
In many cases you only want to use IK to assist in posing characters, without having an IK defining the motion at all times during an animation. For that purpose, two features were added:
- Targetless IK
When an IK chain has no target defined, it can still be used for posing. Unlike normal IK, you must set keys on all of the bones in the chain if you want to retain the pose. Bones using this type of IK are drawn in a orangish color.
- Automatic IK
This option, in the Editing Buttons, "Armature" Panel, automatically assigns a temporary IK chain to any translated bone, giving the same effect as if the selected bone had been assigned Targetless IK. This chain then only propagates over the connected Bones of the grabbed one.
Redirects to fix
- Manual/Mesh Skin Weighting → Doc:Manual/Animation/Armatures/Mesh Skin Weighting
- Manual/Posing Armatures → Doc:Manual/Animation/Armatures/Posing








![[]](/skins/blender/open.png)
