Rigging 101

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

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.

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.

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.

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.

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.

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.

Fig 7. Hand bone.

Repeat for the other fingers.

Fig 8. Finished hands.

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.

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.

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.

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.

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.

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.

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

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

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

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

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

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

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

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 22. Leg swivel angle control

Fig 23. Hips 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

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

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.

Fetching comments...

Post a comment