From BlenderWiki

< Doc:Tutorials | Animation | Armatures | BSoD
Revision as of 13:18, 28 June 2009 by 72.221.83.129 (Talk)
(diff) ← Older revision | Current revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Image:LeftArrowHeader.png
[[{{{2}}}|      ]]>
Image:RightArrowHeader.png
[[{{{3}}}|      ]]>
Blender Summer of Documentation: Contents | Manual | Blender Version 2.42

[edit] Arm Rig Design


When designing a rig for a character's arm, it's important to consider the differences between computer bones and real bones. In the human forearm, there are two bones: the ulna and the radius. The wrist can rotate 180º, and it does this by moving the end of one around the other. With CG bones however, none of this matters. What matters is that the skin twists and the CG bones have to create that twist. The upperarm can also rotate--though not quite 180º--and it does this by rotating at the shoulder socket. But this also doesn't matter.

What this means is that the CG bones of both the upperarm and the forearm need to create a twisting motion. We can do this easily with a segmented b-bone, or if you want more control over the amount of twist at each section of the arm, you can use multiple bones.

Besides the issue of twisting, there is also the issues of elbow direction control, wrist rotation, and IK/FK blending. We will attempt to address all of these needs with the following tutorial about arm rigs.

[edit] Lets Build It!

Image:ArmRig1.jpg Image:ArmRig4.jpg

In top or side view, draw your bones as shown. Notice the slight bend. This is extremely important. If you don't build it this way, Blender won't know which way the arm is supposed to bend.

Add a new bone at the root position that points exactly to armIK, then size it down 50%.

Add a new bone at the end of the chain. This will be the IK effector.

Now is a good time to do the naming.

Then go into pose mode and IK constrain forearm to armIK, and set the ChainLen value to 2.


[edit] Elbow Direction Control

(Note from a reader: Also see "pole targets" which was introduced in 2.46. http://www.blender.org/development/release-logs/blender-246/inverse-kinematics/ )

Ever seen someone do a dance called "the funky chicken"? In case you haven't, place your hands near your arm pits and flap your arms as if they were wings. When you do this, your hands are--for the most part--motionless. But your elbows are moving up and down. When you use an IK solver, it controls the placement of the character's hand, but it doesn't give you any control over the direction the character's elbow is pointing.

One solution might be to rotate the root bone of the chain. This can work fine for character posing, but it doesn't work for animation. Between keyframes, you are trusting Blender to choose the correct way to interpolate the rotation of the root bone, but the math behind IK chains and rotated root bones is hardly predictable. In short, it will lead to spastic, uncontrollable arm rotations. This is why we created an arm bone. We can control it's direction and roll, so it provides a good basis upon which to build an IK chain.


[edit] Finding Some Direction

For this next step, you have to choose which system you think will be the best to animate with.

Option 1: Using IK tracking, and a 1D rotation control bone
Option 2: Using Track To tracking, and Locked Track to give the up vector


[edit] But How Do I Choose!?

Note:

Please see the page on Tracking to be sure you understand what is happening here.

Basically, the first option is nicer to work with because you don't have more bones floating around the character. The second method is more precise though, because the input that determines the elbow direction is not based on the rotation of another bone in the arm, but is instead a direct child of the COG.

If you're not sure, here's some advice:

  • Option 1: Use this for most of your characters. It's compact, easier to use, and can handle most all situations just fine.

Animation Tip:

In a situation like this, you can snap the cursor to the armUV bone, and rotate the armIK bone around with the cursor set as the pivot point. This will allow you to easily keyframe the IK effector traveling through a perfect arc.

  • Option 2: Lets say you have a character that is going to be arm wrestling, and then doing push-ups. In a scenario like this, you might want to use this design. I would also say that you might want to use FK to animate the arm wrestling and then blend to IK for the push-ups, but it might be easier to use IK for the whole thing. This rig lends itself to a situation like arm wrestling because the elbow is planted on a surface. This design allows you to set the target for the elbow on the table, so you know the elbow won't slide around on the table. But, because you're using IK, you'll have to use more keyframes on the hand to keep the elbow from going through the table, or lifting away from it.

[edit] Building Option 1

In option 1, your hierarchy should be like this:

  • armIK
  • arm
    • armUV
      • upperarm
        • forearm

The key to making option 1 usable, is to lock all the axes of armUV, except for the rotation axis that aligns with the Y axis of arm. You can orient armUV anyway you like, but ideally, one of it's axes aligns with the Y axis of the bone arm.

[edit] Building Option 2

In option 2, your hierarchy should be like this:

  • armIK
  • armUV
  • arm
    • upperarm
      • forearm

After you decide which technique you want to use to control elbow direction, you can then build more bones on top of the existing bones. If you decide to use FK and IK in the same rig, it is desirable to have one bone for the upperarm, and one bone for the forearm. To make the arm bones twist though, we my want to have many more bones for each part of the arm.

Shown on the right are two instances of the same armature, but in two different draw modes. In b-bones display mode, we see that the shorter interior bones are segmented. This is one way to create the twisting effect that we see in the human forearm and upperarm. It's important to understand the various range limitations that the human arm has. Consider the following examples:

The first image shows the roll range (rotation on the Y axis) for the upperarm. This is the most that the bone itself can rotate. The arm can move farther if the subject rolls the shoulder.


[edit] IK/FK Blending


--Wavez 18:31, 19 July 2006 (CEST)







Redirects to fix

  • BSoD/Introduction to Rigging/Hand Rigs → Doc:Tutorials/Animation/Armatures/BSoD/Hand Rigs
  • BSoD/Introduction to Rigging/Tracking → Doc:Tutorials/Animation/Armatures/BSoD/Tracking
  • Blender Summer of Documentation → BSoD
  • Manual/Manual → Manual