Character Rigging In Maya

Introduction

Hello, this is a tutorial to introduce people to the sometimes complicated world of character rigging.  As with all my tutorials, I intend to take you through this with as much help and explanation of the techniques as I can.  

Hopefully, at the end of this tutorial, we'll all have a completed rig for a biped character and a better understanding of the whole process in general, albeit aimed at beginners, I intend to get quite in depth later on, although like I said before, I will be explaining everything I can as I go along to help the understanding of why and what is going on in each section.

In most cases, these tutorials I create start out as being a collection of notes and findings of my own research, which, in turn, just so 'I' can understand the processes become easy to read notes, and then develop into my own tutorial on the subject matter, in this case, character rigging.  I will also delve a little into blend shapes, and also how to set up low-poly 'stand in' object for animating with, and how to export and import animation from the low-res version to the high-res version.

As in other tutorials of this kind, where you get pages and pages of instruction which is sometimes a little hard to understand and follow, I don't want to do that, instead, what I'm going to do is actually provide a model of one of my characters for you to work with and follow along properly with this tutorial, this means that you will be getting 'real world' experience as you progress and hopefully learn what you need to, to set up your own rigs and so on.

Ok, before we move onto the main part of the tutorial, I firstly want to introduce some basic information that will aid us later on in this tutorial, forgive me if it comes across a little basic right now, but I've aimed this at beginners to start with.  Hope you all follow along and enjoy this learning process! :)

Basic Information

Ok, this section is just to introduce some fairly basic terms before we move on into the main rigging tutorials, provided only as a basic heads up for beginners, who may or may not know these terms and explanations.

IK (Inverse Kinematics) and FK (Forward Kinematics)

Forward Kinematics (FK)

Forwards Kinematics or FK as it is more widely known is a way of posing or animating a skeleton each part / bone at a time, for example, in the case of an arm using FK, to animate it reaching forward, you would need to rotate the arm at the shoulder joint, and then you would need to rotate the joint directly below that at the elbow.  It is quite an intuitive way to animate as it provides a good visual way of posing the character just by rotating the joints into position.

Inverse Kinematics (IK)

Inverse Kinematics or IK as it is more widely known is a way of posing or animating a skeleton by using a goal based system, IK, in my opinion would be best described as imagine you have no control of you own arm, and someone else instead moves it for you, the easiest way for this person to move you arm into the required position would be to grab your arm at the wrist and then move it into position, the whole rest of the arm would follow accordingly, this is how IK works.  In the case of an arm, you would have shoulder and forearms joints, you would then create an IK chain from the top to the bottom, and then when you have done that, you would select the IK handle that would be created at the bottom of the forearm joint (wrist area) and the just move that, the whole arm would then move along accordingly.

Maya provides three different types of IK Solver, these are (default) ikRPSolver (Rotate Plane), ikSCSolver (Single Chain) and also the IK Spline Handle.  These are in turn described as  : -

ikRPSolver

The Rotate Plane IK Solver is the default IK Solver and is probably used the most when setting up characters, it is most useful when used in conjunction with chains in joints such as an arm  (where the elbow will need to be rotated into place) or a leg (where the knee will need to be rotated into place).  It essentially has the ability to control the twisting direction of the chain that it is controlling.

ikSCSolver

The Single Chain IK Solver is used when no twisting action is required of the joint chain, as in a characters foot for example.

IK Spline Handle

The IK Spline Handle is actually quite a powerful handle, it is best used when you would have a complex series of joints, for example a characters spine or a character who has a tail, in both cases you would require a solver that would simplify the process of animating a lot of joints together in the same area at the same time.  When a Spline Handle is used between a chain of joints, a Spline is created along the chain, and in turn the CV's (Control Vertices) are what would be selected and manipulated for animating with, generally the CV's would in turn be constrained to Cluster Deformers for ease of use when manipulating for animation.

Constraints

As the Maya Online Help states 'Constraints enable you to constrain the position, orientation, or scale of an object to other objects. Further, with constraints you can impose specific limits on objects and automate animation processes.'  Constraints are used quite a lot in animation and character setup, and it's worthwhile getting to know how they all work, so you can best utilise them within your scenes.  Maya offers a number of different types of constraints, these are : -

Point constraints - Point constraints constrain an object's position to the position of one or more objects.  For example, constraining a button to a characters shirt.

Aim constraints
- Aim constraints constrain an object's orientation so that it always aims at other objects.  For example, constraining eyes on a character so that they always look in a particular direction.

Orient constraints
- An orient constraint causes an object to follow the orientation of one or more objects. For example, a crowd scene may require all characters to look in a particular direction at the same time, you can orient constrain all the heads to one main character to set this up.

Scale constraints
- A scale constraint causes an object to follow the scaling of one or more objects.  For example, constraining two characters together so that when grows (scale Y), the other grows too.

Geometry constraints
- A geometry constraint restricts an object to a NURBS surface, NURBS curve, or polygonal surface (mesh).  For example, constraining a drinks can to a characters hand.

Normal constraints
- Normal constraints constrain an object's orientation so that it aligns with the normal vectors of a NURBS or polygonal surface (mesh).  For example, constraining a spider to a character to get it to walk over the surface correctly.

Tangent constraints
- Tangent constraints constrain an object's orientation so that the object always points in the direction a curve. For example constraining a fly character to a curve so that it animates along the curve and keeps the direction that the curves holds, i.e. if it goes up, the fly character would be facing up.

Pole vector constraints
-  A pole vector constraint constrains an IK rotate plane handle's pole vector.  For example,. controlling the position of a characters knee of elbow when animating (more information later).

Ok, we're done with the basics, I hope I haven't bored you too much yet, now we should be ready to move onto the main meat of the tutorial, but before we carry on, if your wanting to follow along completely so that you understand fully what your doing, download this model I have created which we will rig together as we progress : -

NOTE

NOT ALL DOWNLOADS ARE AVAILABLE PLEASE DOWNLOAD THIS ONE,
AS IT SHOULD CONTAIN THE MOST USED SCENE FILES IN THIS TUTORIAL

MAIN SCENE FILES DOWNLOAD


Ok, once you've downloaded this model, extract the contents and open the file up within Maya, you should have something like this : -

 

!  Note, In This Screengrab, I Have 'Wireframe On Shaded' Switched On  !


Now, it looks slightly different to the nice smooth versions posted above, the difference being this model is the low-polygon version that I normally build for conversion to either subdivision surfaces or polygon smoothing.  Because it is low-polygon, it  will be much easier to set up and rig due to the low overhead and uncomplicated layout, as opposed to the polygonally dense mesh that you would get with a 'smoothed' version.  There is some other notes I need to make about the scene, but I will do this as we progress on, now onward we go....

 

Setting Up The Skeleton

 

In the scene, open up the the Outliner, Window > Outliner.  Within the outliner, you will see two groups, one called Character and the other Guide_Curves,  The Character group node contains all of our characters body parts, such as his head, hands, legs, teeth, gums and so on, I've grouped them this way just to make the scene cleaner and more manageable when looking for things, the Guide_Curves group node is a group containg some Nurbs Curves which I have placed around the characters body, the 'Guide' curves will aid us in creating our Skeleton, and will be deleted later on, select the Guide_Curves group node within the Outliner, and then maximises your Perspective window and press number 4 to display the wireframe, you should be able to see the Nurbs Guide Curves a little better this way, it should resemble this diagram : -

 

 

As you can see, I have set up Guide Curves in some key areas, but not all, this step is not essential, but I find it helps me when placing my joints, the key areas I have covered are the centre pivots for the eyes, the head, the shoulders, each joint area in the fingers, the top of the leg, the knees and the ankle areas.  Let's start setting up our Skeleton now : -

ok, first things first, create a new layer and call it Skeleton_L, this will become the layer where we will store all of our joints.  Now that you have created the extra layer, we will now begin placing joints.  We will begin with the legs, press F2 if you are not already in animation mode, and then select SKELETON > JOINT TOOL, in the Layers Menu, set the Character_L Layer to T for Templated.  Although we have guide curves for both sides of the body, we're only going to be using one side, and then mirroring our joints across to the other side, we will be using our characters right side as your looking at him when setting up the joints to be mirrored.  Now, hopefully you should still have your Skeleton > Joint Tool still selected, if not, select it again, and then in your side view, draw the following joint chain : -

 

 

Now, we're going to move the joints into position, maximise your Perspective view by pressing the Space Bar quickly whilst holding the mouse over it, now switch on Snap To Points : -

 

 

and then in relation to where your joints are, snap each joint to the following points on each of the guide curves, as shown in this diagram : -


 

So, essentially, you start from the top of the leg and work your way down when snapping to the joints, with the 3 nurbs curves, you should snap in this order, 1st - Snap to to middle CV of the top curve, at the Knee Area, you should snap the 2nd Joint to the second CV in from the front of the knee, and then on the 3rd point your snapping to, make sure it is the second CV in from the back of the guide curve.  In the Layers menu, switch off the V - Visibility for the Curve_Guides Layer, and in the Charater_L Layer, change it from a template to an R - Reference Layer, now snap your next joint to the following Vertex on the sole of the foot: -

 

 

And then one more to finish, switch to your side view, and change your snapping to grid snapping instead and then snap to this grid point at the front of the shoe : -

 

 

Once you've snapped the last one, you should now have a chain of joints for your leg, similar to this diagram : -

 

 

Select the first Joint you created, joint1, and within the layers menu, right click over the Skeleton_L Layer and click on Add Selected Objects, if you haven't already done so, I would also add a colour to the layer, so you can easily identify what is contained within any given Layer, I've chosen Blue, as it stands out and is easy to read.  We haven't quite finished just yet though, we will be adding some more joints when we come to do the reverse foot setup, but that is later, right now, we're going to rename our currently created joints, open up the Outliner, and take a look at your joints, with respect to each one's position, rename them like this : -

 

 

That reads a lot better now, and you now have a much better idea of what each joints role will be in the hierarchy.  We will now move onto creating the arm joints, so again in the Layers Menu, set the Character_L Layer to T for Templated, and set the Curve_Guides back to V - Visible.  Switch to the front view, as this is where we will be placing our joints for the arm, and without any snapping turned on, create the following joints for the arm, don't worry too much about placement right now, just so long as it roughly matches this diagram : -

 

 

Within your Outliner, rename the joints, starting from the first one, like this : -

 

 

Now, we need to place them properly, maximise your Persp view, and keep your outliner open, within it, select the Left_Shoulder joint, now, Snap to the Middle CV on the nurbs curve in that area : -

 

 

Now, select the Left_Elbow joint, and in the top view, Do Not Snap, move it into position so it roughly matches this diagram : -

 

 

Now, select the Left_Wrist joint,  and again, in the top view, move that joint into position so it roughly matches this position : -

 

 

Now, the last joint will be fine, and so will not need moving.  Within the outliner, select the first joint, Left_Clavicle and then add it to the Skeleton_L Layer.  Now, let's place the finger joints, in the top view, using Grid Snapping, create the following joints, remember to press Enter when you have created the first lot, don't worry about where there being placed, as we'll be snapping them into place later : -

 

 

Next, maximise your Persp view, and then switch off Grid Snapping and instead use Point Snapping, and in turn snap each joint to it's corresponding Guide Curve, when snapping to the Guide Curve, snap to the Middle CV on it.  You should end up with something like this : -

 

 

Ok, we're not finished just yet, in your Top View, select the last joint in turn on each finger joints, and the  Thumb joint, turn your Character_L Layer from T - Template, to R - Reference, one, and 1 by 1 snap to these points on the end of the actual mesh, see this diagram : -

 

 

And the last joint in the Thumb Joint hierarchy (Probably best placed in the Persp View) : -

 

 

Now name your joints in turn, starting from the first set you created, I recommend the following naming convention, Left_Pinky_Finger_etc, Left_Index_Finger_etc, Left_Inner_Finger_etc, and finally, Left_Thumb_etc, you can see what I've done here, ( Tip - To save the tedium of repetitive typing, type the first name, and then select it, Press CTRL + C to copy it, and then with the next joint, press CTRL + V to past it in, and then change it to what you need ) : -

 

 

And finally, select all the new joints and add them to the Skeleton_L Layer.  You can set the Character_L Layer back to template now too.  Don't worry about the finger joints not being connected to anything, we'll sort that part out later.  Now we're going to move onto creating the Spine joints.

Because this tutorial is quite graphics intensive, I'm going to have to consider people with slower connections too, so I'm going to continue the tutorial on a new page : -

Just follow the link below : -

Character Rigging Tutorial - Second Page

 

Steven J. Tubbrit
(c) Copyright