3d max - rigging 101
TRANSCRIPT
-
Rigging 101 By Sergio Mucino Software used: 3ds Max
WELCOME! Hi there! Welcome to the rigging 101 tutorial! I decided to post this one because I've noticed there are a lot of
novice users who have a hard time trying to learn rigging (I had one!!). So, here it is. I hope this tut will get you up
and running with character rigging, so you can start rigging your own models, and then move on to the heavy stuff...
nuff said!!
(NOTE: Even though this is a tutorial aimed at beginners, I still assume you have working knowledge of all of max's
basic transform and manipulation tools, and that you have a basic working knowledge of hierarchies, node creation
and modification, etc. I won't stop to explain these. If you still have problems following this tutorial, I'd suggest doing
the tutorials that ship with your copy of the software first, and moving on to this tut afterwards. Enjoy!)
WHAT YOU'LL NEED
Ok. Go get some paper, glue, scissors... oops! Wrong tut... umm... ah, yes! You'll need a ready character! Since I
haven't had much time, I'll just borrow one from the installation CD that you have (because you DO have one,
RIGHT???!!). Here's a pic of the model I'll use... our friend Alfred, the alien (I just gave him that name... I'm not sure
who created him and what name he had for him).
Fig 1. The model
So... go get your model and bring it into max, so we can get started.
PREPPING THE SCENE Ok. Let's get some work done before tackling the rigging part. Bring up your layers toolbar, and create 4 layers...
Model, Bones, IK Helpers, and Hierarchy Helpers. We'll use these layers to keep everything tidy and organized (if
you're still under R4 and have no layers, use RezN8's super-handy layer script "Layer Manager" (dig for it
at Scriptspot), or just use selection sets as needed).
-
Fig 2. Our layers.
Now, place the mesh in the "Model" layer. Open the layer properties panel, and freeze it, turn on see-through, and
turn off show frozen in gray. Also, you may need to set your transparency viewport settings to "best".
-
Fig 3. Mesh layer properties.
Ok. We're ready to start building a skeleton for our friend here.
THE SKELETON Let's first create some bones for our friend. This is the first step when rigging a character... creating the bones AND
making sure they're correctly oriented.
THE SPINE In the front viewport, create a straight bone chain to create the spine. I usually snap to the grid so I can make sure
the chain goes up straight. You can adjust bone positions afterwards if necessary. If you need to do so after creating
the spine, just open the Bone Tools floater (found in the character menu), turn on Bone Edit Mode, and move your
bones vertically to their proper position. To check for orientation, just turn on bone fins, and make sure the front fin
is actually facing to the front. Adjust the fin sizes so that they actually give you a visual representation of your
model's volume. Name the bones clearly (I used the Bones_spine01 through 04 I normally use). You should end up
with something like this...
Fig 4. Spine bones chain.
THE ARMS Let's now create the arms... create the bone chain in the top viewport, using the model as a reference. As you might
have noticed earlier, the model's arms are pointing downwards a bit (in my case), so you'll need to rotate the arms
downwards (rotate the root bone) afterwards, and move the bones into their proper positions. It's very likely your
joints will be short (in this case). So you'll need to enter Bone Editing mode, select the move tool, change your
referece coordinate system to local, and move the bones in their local x axis to position them properly. Check ALL
your viewports ALWAYS to ensure proper bone positioning. Name these bones (I use 'Bone_armRT',
'Bone_forearmRT' and 'Bone_armTermRT' respectively... changing the RT suffix to LT for the left side). Adjust fins
and overall properties to suit your particular model and/or needs and preferences. Here's what you should have
right now... (NOTE: You can mirror bone chains to create the opposite side chains, but apparently, there are some
-
issues with doing this... caution is recommended if you do this. If you decide to mirror the arm, just create a point
helper and align it to the root bone in the chain... in this case, it's be Bone_arm. Now, move it to X=0 [looking at it
from the front viewport]. Link this bone to the helper. Double click on the helper to select the whole hierarchy. Set
you coordinate system to parent, and your transform center to pivot point. Now mirror the bones. This will give you
a symmetrical mirror along the center of the universe [that is, coords 0,0,0]. I hope you modeled your character this
way in the first place!... you can delete the point helpers when you're done mirroring).
Fig 5. Arms.
THE HANDS
Ok. The hads are an important and kinda tricky area to bone the first time you do it. The general workflow (the
"easy" approach) is to bone the fingers first and the actual hand bones lastly. Again, do this in the top viewport, and
move/rotate your bones into place. Here are the bone fingers...
-
Fig 6. Fingers.
To create the hand bones, select the arm terminator (nub) bone (the small one at the end of the chain), and from
the bone tools menu (go to the Character menu, and open the Bone Tools floater), turn on Connect Bones... a
dashed line will appear... select the root bone for one of the fingers. A bone will be created in between them, and
will be automatically set as the parent for the finger root bone. Check it's orientation. If you need to adjust it (very
likely), unlink the finger root bone before doing so, rotate the hand bone, and relink. Here's what the connection
bone (hand bone) looks like once you've completed the operation...
Fig 7. Hand bone.
Repeat for the other fingers.
Fig 8. Finished hands.
-
THE LEGS The legs are pretty straightforward. Create them in the left viewport, and again, make sure to move and rotate them
into position. Also, remember to check for proper bone orientation. If you did create them in the left viewport, you
should be ok. Here's what the finished legs look like...
Fig 9. Legs.
THE FEET The feet should also be created in the left viewport. Create them just the way you see them, and afterwards
move/rotate them. You can do this by moving the root of the foot chain to the leg's terminator position (align them
in position pivot-pivot), and then align the foot's root bone orientation to the thigh or calf bone's (x,y, and z
orientation, pivot-pivot). Here's a view of the finished feet.
Fig 10. Feet.
-
You'll notice that this model required an extra set of special bones for the heels (these will be used for skinning
purposes)... this is not required for most characters. Feel free to experiment with different models and see how you
arrive at an efficient boning solution.
HIPS AND TAIL Let's start refining the rest of the
skeleton. We'll need to create a hip
bone, and in the case of this charcater,
a tail bone(s). Do this in the front
vieport, going from the belly area
downwards. When you're done, using
the left viewport, rotate them
accordingly. You might need to go into
Bone Edit mode (bone tools floater)
and move some bones a bit, if they're
too short. Make sure the root bone is
aligned in position with the root bone
for the spine chain. They should be
located in the same place (their
pivots). This will give us a better
motion in this area. Here's what these
new bones look like...
Fig 11. Hips and tail.
NECK, HEAD AND JAW. Create a chain going from the spine's
terminator bone pivot point up to the
tip of the head. I used two bones for
my character's neck, since it's kinda
long, and from the character design, it
looks like it needs to be able to bend
there... and one bone for the head. I
then created a smaller bone for the
jaw. Be sure to position it in the
middle of the model's jaw, and where
the jaw bone should be. Check your
jaw... your jaw bone's pivot should be
just below your ears. My character
has a very small jaw, so I positioned
the bone accordingly... here's what I
ended up with..
Fig 12. Neck, head and jaw.
-
CLAVICLES All that remains, are the clavicles. Create them by selecting the spine's terminator bone, and doing a bone connect
operation to each root bone of the arms chain. Select these new bones, unlink them, and rotate them if needed
(relinking them afterwards). Here's what you should have...
Fig 13. Clavicles.
FINISHED SKELETON Here's how your finished skeleton should look like now. Take a look at yours and see you're not missing anything.
We'll proceed to applying IK solvers, and some special controls.
-
Fig 14. Finished skeleton.
ABOUT IK IK, short for Inverse Kinematics, is the way to go to animate characters. It lacks some of the control provided by
Forward Kinematics solutions, but it's much faster to use and has some great advantages over FK. One of the most
important is that, since the IK solver is an object outside of the hierarchy, it can be used to anchor the IK-driven
chain to another object. Imagine you needed to animate a character doing pushups... doing so with FK could turn
into a nightmare, because the main animation would come from rotation the spine and hips, and keeping the feet
and hands at the exact same spot in the floor throughout the whole animation. Most people did this in the past
using a pen marker to mark on their monitors where the hands and feet were located, and rotating them using FK
every keyframe (not every frame! although it could happen...). And even if you were extremely careful, some sliding
was sometimes unavoidable.
However, with IK, since the solvers are at a different place in the hierarchy, they'd take care of keeping the whole
chain positioned at the exact same spot (for as long as you didn't move the solvers from their place). That made life a
WHOLE LOT easier for animatiors.So, those are some of the differences of IK and FK. If you need more info on this
subject, please read my FK/IK paper located at the papers section of my site. Hope all is clear. So, let's move on...
APPLYING IK SOLVERS Ok... we're gonna need four IK solvers here... one for each arm, and one for each leg. Let's ge one thing straight from
the beginning... you DO NOT use IK to animate fingers or necks/spines. I can think of a couple of situations where I
can think of using IK for fingers, but these are extremely rare and IK should NOT be incorporated into standard rigs at
these areas. Anyway, here goes...
Select the root bone for the arm chain (Bone_armRT in the case of the right arm). Go to the animation menu, and
select IK solvers/ HI Solver. This is the history independent solver, and it's the one you should use on every character
you build. The HD Solver is the one we had in max 3, and it's useful if you require sliding joints, so it's more used for
mechanical rigs. The Limb Solver is a "limited" version of the HI solver (it only supports 1-joint chains), and, if you're
using max5, we've got the all brand new SplineIK Solver... we'll use that one on the advanced tutorial.
Once you've selected the HI Solver, you'll notice a dashed line appearing in your viewport that follows your mouse.
It's part of the solver creation. It needs a second node to tell where the solver will end. All nodes included in an IK
solution MUST be part of the same hierarchy. You may not use different hierarchies under the same IK solver.
So, go ahead and select the arm chain's nub bone (Bone_armTermRT, in the case of the right arm). Once you did, a
-
blue cross will appear at the nub bone's location. This is what's called the goal. The IK solution will always try to solve
rotations to aim at this goal. So, whereever the goal goes, the chain will follow... go ahead, try moving the goal and
see how an IK-driven chain behaves...
Once you go this one, go ahead an add solvers to the rest of the chains (arms and legs). The leg's chains go from the
root of the legs to their nub bones (in the case of the right leg, it goes from Bone_legRT to Bone_legTermRT).
NOTE: Make sure each IK chain is set to Start Joint Parent Space. You can check this by selecting the IK chain's goal
and going to the motion panel.
This is what you should end up with...
Fig 15. IK solvers with resized goals
Ok. We've got IK solvers on out character. However, we'll need some extra controls to help us animate the character
properly and in a easier fashion.
-
ARM CONTROLS We'll need some controls to help us
animate the arms and hands
properly. I'll just go through the
process for one arm, and you can do
the other arm when you're done.
First, lets create a point helper, and
align its position to the nub bone's
pivot point (or you can use the IL's
goal, if you haven't moved it). Once
it's there, link the IK chain's goal to
this point helper. Set the point's
display properties to show the box
only, and size it to your liking. Name
it ArmControlRT (or LT, if you're
working on the left arm... you
already got the whole suffix idea,
right?). Try moving it and the whole
arm should move...
Fig 16. Arm control object
Now, create another point object, and align it to the nub bone again, but this time align both its position AND
orientation. Set the display properties to show the Axis tripod only. Size it so it's easily selectable. Now, link it to the
arms forearm bone (Bone_forearmRT). Now, link every bone in the hand chains to this helper (these would be the
bones that were created by connecting the fingers to the nub, remember?). Here are the bones you should link to
this helper...
Fig 17. Hand bones to be linked
Once they're linked, select again the helper you just created and name it HandControlRT. Go to the Link Info section
if the HIerarchy panel, and turn off ALL the rotation Inherit switches. This will keep the hand locked to "world space"
instead of local space". It means it will prevent sliding and rotating when the hand should be locked to the world.
-
The downside is you'll need to animate the rotations whenever the character moves its arm so the hand keeps with
it, but it's just a minor issued compared to keeping the hand locked to other objects.
Now, create another point object,
and align it to the shoulder
(Bone_armRT). Move it backwards to
the back of the character. Name it
ArmSwivel_RT, and link it to the
topmost bone in the spine
(Bone_spine04). This node will help
us aim the elbow. Select the IK
chain's goal, go to the motion panel,
and in the IK solver properties
rollout, click on the "Pick Target"
button under IK Solver Plane, and
select this point object. This will
orient the chain so that the elbow
faces towards this node. We linked
the point object to the spine so that
when the character bends his spine,
the arm keeps its orientation relative
to the spine. If you'd rather have the elbow's orientation locked to something else, you can link this point object to
something outside the spine hierarchy, such as the COM we'll create later (I like it the way it is now).
Fig 18. Swivel angle helper
Lastly, let's create a helper to aid us in rotating the clavicle in an easier way. Create a point object and align it to the
clavicle in both position and orientation. Name it ClavicleControlRT. Link it to the Spine04 bone. Now, link the
clavicle bone to it. That's it. If you rotate it, the clavicle should rotate, and the arm should follow. Here it is...
Fig 19. Clavicle control
-
That does it for the arm... let's move onto the legs.
First, create another point object and align it to the IK chain's goal. We'll use this object just like the one we created
for the arm... to animate the leg. You'll usually want these objects, since it's very rare to animate the goal directly.
Name the point object LegControlRT. Link the IK chain's goal to it. If you move it, the leg should follow now.
Fig 20. Leg Control
Create another point object, and set its display properties to show the axis tripod only. Align it to the leg's nub bone
in both position and orientation. Name it FootControlRT. Link it to the calf bone (Bone_calfRT). Now, link both feet
root bones (we usually have one only, but remember we had to create a 'special' chain for the heel of the foot) to
this helper. You may turn off rotation inhertinaces for this one, depending on what you need this character do.
We're done. This node is used to rotate the feet.
-
Fig 21. Foot Control
Now, let's add another helper to aid us in controling the rotation plane for the leg's IK solver (or, in other words, aim
the knee). Create another point object, and align it to the thigh bone's root (Bone_legRT). Now, move it forward to
the front of the character. Name it LegSwivel_RT. Link this node to the hips bone (Bone_hips). This will keep knee
orientation relative to the hips rotation. Now, select the IK chain's goal and go to the motion panel. Click on the Pick
Target button under IK Solver Plane in the IK Solver Properties rollout, and pick this object. Now the knee will always
aim towards this node.
Fig 22. Leg swivel angle control
Fig 23. Hips control
Create a big point object, and set its display properties to box. Name it COM (short for Center of Mass). Align it to
the spine root (Bone_spine01) in both position and rotation. Now, select the following nodes:
-
* Bone_spine01
* HipsControl
and link them to this new point object.
If you move this COM, you'll notice the
whole character moves, but the arms
and legs. This is good, because it
allows us to have the hands and feet
locked to the world, which is what we
usually want. However, it makes
posing the character and moving it to
different parts in the scene a bit
cumbersome. We'll add another object
to help us do this.
Fig 24. COM
Create another circle primitive, and
align it to the COM in both position
and orientation. If it ends up oriented
in the wrong way (left to right instead
of top to bottom), go into sub-object
mode, select the spline, and rotate it.
Now, move it to the bottom of the
character, where its feet are. Scale it
(in sub-object mode) so you can see it
and select it easily. Now, select the
following nodes:
* COM
* Both ArmControlxx nodes
* Both LegControlxx nodes
and link them to this object. Name this
circle "Character" or whatever name you deem proper for this guys. If you move it, the WHOLE character should
move. This way, you can move this character through the scene or make him jump or fly easily.
Fig 25. Character helper
And there it is... the finished rig...
-
And that's it. You're ready to get started animating him. Try doing some movements with this rig, like walking, falling,
carrying stuff, weaving, jumping, etc. See how hard or easy it is, and make notes on where the rig falls short. THINK
of ways to improve it. Try them out. See what works and what doesn't. Think of more stuff you'd like this rig to
support. THINK of how you'd get it to support them. This is what a character TD does. Keep playing with the ideas
exposed here, since they're the basis for EVERYTHING else you'll do to customize and improve rigs. The most
important part of rigging anything is to know where in the hierarchy should objects be places. It's also the trickiest.
Try placing objects in different parts of the hierarchy, and see what happens. Chances are you'll find new behaviours,
or that you'll break the rig. But that's no problem. Breaking stuff is the best way to learn (don't tell your ma I said
this, please), so don't be afraid to experiment. SAVE OFTEN, though... especially when playing with new possibilities.
And once you feel comfortable, move over to the other tuts where I touch on some more advanced stuff. I hope you
found all this useful and inspiring. Just remember... it's YOUR responsability to take it to the next level. And
remember... any questions/suggestions/donations (yeah, right....) ...'till nex time!!
Copyright 2003, Sergio Mucino. maxTD.