Intermediate-Advanced Face Rigging for 3ds max
by Athey Moravetz
Written 11-01-07

Overview
This tutorial will cover creating custom facial rigs using morph targets, controller shapes, and the Reaction Manager. This tutorial makes the assumption that you already know how to use 3dsmax to some extent. This is NOT a beginner tutorial.


Start with a head model, ideally one with an internal mouth box and the teeth already created. I'm using a model I made of Monkey D Luffy from One Piece.

The better your edge loops are setup, the easier the morphs will be to create and the better they'll look. So ideally, you've got some good edge loops on your head model.

First I'm gonna go through the bone rig nessecary for the head. You really ought to have the body rigged at this point, and the head with it. I'm putting in a neck and head bone just as a sample because you should have these in whatever rig you'rd doing for your body.

The bone you need to add is a jaw bone. The human jaw rotates right around where the ear is. When you place the jaw bone, think in your mind, how is the jaw gonna rotate around the start of the jaw bone. If you place the jaw bone poorly, it won't stretch the jaw down very well and you'll have to re-do it.

This next step is mostly a precautionary step. This will help avoid trouble later on. This is to avoid problems caused by linking the jaw bone to whatever head bone you've got. This goes for all sorts of custom rigs, biped, etc.

Go to the create tab, and Dummies and chose Point.

Right-click on the snap button and it will open the Snap Settings window. Uncheck all except for Pivot. Close the window and make sure that snap is turned on.

Now you should see a blue-gizmo around your bone when your cursor gets near the end. Create the dummy point at the top of the bone.

Now, with the point still selected, click the Align button and the dialog should come up. UNCHECK all of the position options, and check all of the Align options. Now your Point Dummy will be aligned with the bone.

Now all you have to do is Link the bone to the Dummy, and your Dummy to the Head bone that you're using.

So why do all this?
Well when you link a bone to another bone it inheirits hiearchy from it and it makes subtle tweaks that can cause trouble when doing the Reaction Manager stuff later on.

This just avoids trouble. It's not even 100% nessecary, but it can help, so I do it anyway.


Next!

Now we're gonna skin the jaw bone. If the head is already skinned, just go the exisiting skin modifier and add the Jaw bone we just created. If it's not skinned yet, just Add a Skin Modifier, go to the Bones: Add button and the Select Bones window will pop up. Add all the bones you need.

Expand the Skin modifier so you can select the Envelopes. If you applied new skin, you'll want to check Verticies so you can select the verts, select the head Bone and then the verts of the whole head and scroll down to Abs. Effect and set it to 1. You will want to do some gradiation around the neck.

Next select the Jaw bone. I find it easiest to start rigging the jaw from a side viewport. I zoomed in and selected the lower lip and the chin and assigned them to the jaw bone 100%.

In order to test the skinning as you go, you should make a quick animation of the jaw bone going down.

Select the jaw bone, put a key at frame 0, move to frame 5, turn on Autokey, and rotate the jaw down. Now you can scrub between those frames to test your skinning as you go.

Go back to the skin modifier and keep tweaking the skinning until it's a smooth trasition.


Assuming you have eyes and teeth, you'll want to link those to the appropriate bones. Eyes and top teeth to the head bone, and lower teeth to the jaw bone.

Now to prepare for making some morph targets.
First I want to create a Base Head to duplicate the other morphs from. Select the eyes, teeth, and the head and Shift+move them up above the existing head.

If you've already got a skin modifier on the head (which you should) the head will automatically pop back down. Just select the newly duplicated head and delete Skin from the stack (don't collapse it, delete the modifier) and the head will pop back up to match the duplicated eyes and teeth.

Now dupicate the head again, this time moving it to the right or left.

Name this one BaseHead or something similar that you'll remember later.

On the head that's in place with the eyes and teeth we'll make our first morph.

Here we're creating a controller for the corner of the mouth.
We need FOUR MORPHS for this.
Corner OUT
Corner IN
Corner UP
Corner DOWN

We'll make the Right-side morphs first. Later I'm going to explain a trick for making mirrors of the morphs without having to do it manually.

Okay, so select the head that is going to be our first morph (the one that was just moved straight up, that is aligned with the eyes and teeth) and go to vertex edit mode. I find that Soft Selection helps a lot but of course you can't always rely on it, you'll have to make some manual tweaks. The more realisitc the face is you're doing, the more work you'll need to put into the morphs. I recommend getting a small mirror that you can look into to get an better idea of what shapes to make.
This one is the Mouth Corner out.

->

Now select this head and move it off to the side.

Select the BaseHead we duplicated earlier and Shift+Move it back to line up with the eyes and teeth.

Go into vetex mode again, turn on soft selection and do the adjustments to this one. For this morph I made the Mouth Corner In.

Move this head under the Mouth Corner Out head and duplicate another base head.

Make the Mouth Corner Up head and repeat.

Then the mouth Corner Down head.


Now we have 4 morphs for the corner of the mouth on the right side. We need the same morphs for the left side.

It seems like you should be able to mirror the heads and be done with it, but unfortunetly it's never that easy. The verticies on the heads are numbered and if you do something like that the morpher won't work properly. It'll create all sorts of weird distortions so we have to do this a more complicated way.

While these steps seem complex and confusing, after you've done it a couple times you get really fast at it.

Select all four heads and Shift+Move duplicates to the side.

Click the Mirror Button.

Now select each head individually and apply a Morpher to it.

Load the Base Head into the morph target slot on each one.

Turn on Autokey, go to frame 10.

Go to each head and set the Basehead morph to 100%. It should now be assigned to the base head morph at frame 10, but the Mouth Corner Head's default shape at frame 0.

Now select the BaseHead and duplicate a copy over towards the heads.

Click Align and line it up with the mirrored head.

MAKE SURE YOU ARE ON FRAME 10. The Base Head target should be active so the two heads should look just alike right now (only one is flipped).

On the BaseHead duplicate that you just lined up, apply a SKIN WRAP modifier.

Click the Add button and just click on your current head (it'll select the mirrored duplicate).

If you have a very high poly head, it make take a few seconds to calculate everything. Just wait for it. If it's a real simple head like this one, it'll only take a second.

Now zoom in on the heads and drag the slider back to 0. The mirrored head with the morpher on it is now trying to drag the duplicated base head with it. But you'll see it's not perfect. Go to wireframe view (F3) and you'll see better.

Select the duplicated base head with the Skin Wrap on it and adjust the Falloff and Face Limit until the two heads line up as close as possible. Now you can collapse the stack and delete the Mirroed Morpher head.

Repeat this on the other 3 heads.


Review:

1. Dup Base Head.
2. Align to Mirrored morph head.
3. Make sure you're on Frame 10.
4. Apply Skin Wrap and Add Mirrored Morph.
5. Drag to Frame 0.
6. Collapse stack and delete mirrored morph.

It's tricky the first time or two, but you really do get fast at this.

Once you've got all 4 heads done make sure to name everything.

Naming IS IMPORTANT with this stuff. When you go to do the reaction manager stuff, if things aren't named, you'll be totally lost.


Now go back to the real head.
The stack right now already has a skin modifier on it. We need the morpher modifier to be under the skin modifier so select the Editable Poly base (it may pop up with a question, just click ok)

Now apply a morpher modifier to it.

In the morpher click the Load Multiple Targets button and select all of the heads you've just made (no point in adding the base head because it's the exact same as the main head).

[b]Now we're ready to actually make the face controllers.[/b]

I could go through some long tedious explaination on how to script your own controller box.. OR you could just download a script that someone has already made just for this sort of thing.

Walter Osborn wrote a script that creates the controller for you. The rig controller is based off “Rigman” (Alvaro Sanint) controller Phatdady's Rig Tools script

Just extract it into your max scripts/startup folder. You'll have to restart max for the script to load up.

Once you've got the plug-in installed, start max back up and go to the creat Tab, Geometry button, and from the Drop-Down (Says 'Standard Primitives' by default) choose Rigging Tools. If it's not there, you don't have the script installed properly, or you still need to reset max.

At this point I tend to set my views up like the image below. I'm lazy about it, so I just go to the 4-split view, and click the center where all 4 views meet and drag it upwards so that only the two bottom views fill the screen. I have my right panel set on Perspective, and the left panel set on the Front View. With the Rig Tools button selected, click in the front view to create the rig controller. I generally just create one and just duplicate the original one over and over. But you can just as easily keep creating brand new ones from the create tab.

For this tutorial I've created three controllers. Jaw, Right Corner, and Left Corner. Once you have your three controllers created, open the Reaction Manager (Animation > Reaction Manager).

I'm going to try to explain some things about the reaction manager, because it can be extreamly confusing. The reaction manager has master > slave relationships. You have one value that controlls other values. It can control more then one thing. So you can have the verticle (Y Transform) motion of the controller, actually effect a whole bunch of morph targets. HOWEVER nothing else can have those same morphs as a slave unless you add addition tracks (which is complicated and will be covered much later).

So a Master can control several slaves, but no other master can control those same slaves.
Confused yet? It's okay, just keep going.

First thing to do, select the Circle Control of the R Corner controller.
Now click the Show Selected button in the Reaction Manager. This button will be handy later when you've already created a whole bunch of reactions but don't want to have to sift through all of them (it gets full fast).

Now Click the + button (Add Master) and click on the circle controller. Options will pop up. Go to Transform > FK Sub-Control > Position > Y Position. Y is the Up and Down movement of the controller.

Now you'll want to make sure you can see the head model, so move the reaction manager window if you have to. In Reaction Manager click the 2nd + button, the Add Slave button.

Now Click on the head and another set of options will pop up. You want Modified Object > Modified Object > Morpher > and from here you should see a list of all of the morph targets you have on the head.
The First target we want to add is the R Corner UP (remember that this is the Up and Down movement of the controller, so it will control the up and down movement of the mouth corner).

Now click the + Add Slave button again, click on the head again, go through all the sub menus until you get to Morpher and this time choose the R Corner Down morph.

Those are all the slaves we need for the Y value, so now we need to clean up the States that were automatically created by adding the slaves. Select State01 and State02 that it created and click the Delete State button.

The States area should be totally empty again. Now cick the Create State button. It will create a SINGLE state that contains BOTH morphs, instead of having a seperate state for each (which can get confusing to work with).

Now go back to the controller shape. Select the cirlce and move it up to the top of the box. Back in the reaction manager window, click the Creat State button again.

Because this controller is a little screwy, you'll probably need to edit the value it put in for the state. It should be 5. (Positive 5 is all the way up, negative 5 is all the way down). And since we are in the Up position, we want the Corner Up morph to be 100% active. So change it's value to 100.

Move the Circle controller down and click the Create State button again. Now teh State value should be -5, and you want to set the R Corner Down morph to 100.

If you drag the controller up and down now, you'll see the face switching between the morphs depending on your position. Next we want to add in the X Position control.

Since the X Position is another Master, click the + Master button at the top and click on the Cirlce controller. Once again, the options pop up for you to sift through. Go Transform > FK Sub-Control > Position > X Position.

Now we've created a new master, so we need to add it's new slaves. This is the exact same as before, but since X controls right-to-left, we'll be adding in the Corner Out and In morphs.

Click the + Slave button, click on the Head and once again go through all the options and sub-options till you get to the Morpher. This time select the R Corner In morph. Repeat for the R Corner Out morph.

Just like before, we want to clean up and condense the slave states, so select the two states created by adding the morphs and delete them.

Click the Create State button to create the initial 'default position' state. Value should be 0, if it isn't, set it to 0.

Just like last time, we want to move the cirlce controller and create new states. First, move the controller to the left. Make sure the value is -5, and set the R Corner Out morph's value to 100.

Repeat for the the R Corner In target.

Guess what? You're done. :D Rejoice! Now you just have to do it again and again and again for every single controller! ...yippee?

Try out the controller. Click it and drag it all over and see how it effects the face.

The Left Corner control will work the exact same wat the the right side did. So just repeat all of the previous steps, but on the Left Corner controller instead.

Select the circle control for the Left Corner, and click off and on again the 'Show Selected' button. Add the Y Position as a master, and then add the L Corner Up and Down morphs as slaves. Set their states and then move onto to the X Position. Set the L Corner In and Out morphs as slaves. This time -5 (moving the cirlce to the left) will cause Corner In to go to 100, and 5 (moving circle to the right) will need to cause Corner Out to go to 100.

Once everything is done, try messing with the controllers. Obviously this is only the beginning, but you can already get some interesting variety of mouth positions, even with just two simple controls.


Next we can setup the jaw bone control. This time we'll be using the controller to control the rotation of another object, instead of the value of a morph. We'll make use of the 'Edit Mode' button for this one. First go ahead and hide the geometry (I left the eyes and teeth visible though) so you can see the bones better.

Lets start with the controller's Y Transform again. Select the cirlce control for the Jaw, turn off and back on the Show Selected button, then click the + Master button and click on the circle. Go through the menus to the Position Y option.

Click the + slave button, and click on the jaw bone and find it's Rotation on Z

Just like before, move the controller circle up and Add another state. (Make sure it's value is 5) Now, instead of typing in a value for the Z Rotation, we're going to actually rotate the jaw bone. First select the Z Rotation state and click the Edit Mode Button.

Now Select the jaw bone, and rotate it upwards a little.

If the value for Z Rotation is not changing you probably need to use a different rotation axis. Try X, and then Y until you get the right one).

UNCHECK THE EDIT MODE BUTTON

Then move the cirlce controller down to the bottom (value -5) and click the Create State button again. Now check the edit mode button again, and rotate the jaw bone down.

Now the up and down jaw movement is set up. You *can* technically leave it at this, if it's all you want. But a lot of people find it useful to have some more manuverability then just open and closed. So we're going to add in the X Position of the cirlce control as a Master and it will control BOTH remaining rotation axis of the jaw bone. So if Z was your open/close (up/down) movement, BOTH X and Y should be added as slaves.

Just like before, after adding both slaves, clean out the states and create a single new one. For each additional state (controller/jaw left, and controller/jaw right) use the Edit mode again and manually rotate the bone. Remember when you go to move the controller circle to TURN OFF EDIT MODE.

Finish setting that up, and Voila! You're done.
Try it out.


So... What about controlling a single morph with more then one master? Well, okay fine. I'll go over that too.

First we need to make some more morphs! Exact same thing as the beginning of the tutorial. Duplicate the BaseHead so that it lines up with the eyes and teeth again and edit it. We're going to make a controller for the Upper Lip going up and down on both sides (right and left).

So we'll need four morphs. Right Upper Lip UP, Right Upper Lip Down, Left Upper Lip UP, and Left Upper Lip Down.

We'll make just the right two (upper lip up and down) and then do the mirror/morpher/skin wrap technique to create mirrored copies.

So first make the Lip Up morph, move it off to the side, duplicate another base head, line it up with the eyes etc. and make the Lip Down morph. Move it off to the side under the Lip Up morph.

.

  • Take the two Right Side morphs, and duplicate them (Shift + Move) to the side.
  • Mirror the two new duplicated morphs.
  • Add Morpher to mirrored duplicates.
  • Add BaseHead target to morpher on each head.
  • Go to Frame 10, turn on AutoKey
  • Set the BaseHead morph to 100 for each head. Turn off autokey.

  • Duplicate a copy of the BaseHead and align it to one of the mirrored heads.
  • Make sure you are on frame 10!
  • On the BaseHead duplicate, apply a Skin Wrap
  • Click Add button, and click on the head (it will select the Mirrored Morph)
  • Drag time slider to 0
  • Adjust Fallof and Face Limit so that the two heads match up exactly.

    Repeat on 2nd head and delete the old Mirrored Morphs.
    You now have 4 new morph targets for the upper lip.

    Now go back to the actual head and go to the morpher modifier. Click the Load Multiple targets button and add the new morphs you just finished creating.

    Now lets go back to our split view so we can see the front viewport and the perspective viewport. Select one of the controllers and shift+move it down to duplicate it. Rename the parts appropriately.

    Here is where we start to divert from the earlier stuff. Before you were assigning the morph targets as slaves. But you can only assign a morph as a slave to ONE master. It can't have more then one master. For this controller we need BOTH X and Y to control ALL of the morphs. So we need to add new beziar float controls to the new morphs.

    Go to Graph Editors and open the Track View

    When it opens up resize the window so you just see the objects along the side. We dont need the curve editor for any of this. Select the head if you haven't already and it should show the head in the outline.

    Find the part where it says Modified Object. This is just like before when we were grabbing the morphs as slaves. Expand this until you can see all the individual morph targets.

    Select all four new morphs and RIGHT-CLICK on them. From the options that pop up, click on Assign Controller

    From the Assign Float Controller window that pops up, choose Flat List and click OK.

    You'll notice that now these morphs have new expandable tracks (they have + signs in front of them). With all of the morphs still selected, right-click and choose Expand Tracks.

    Each target already has One Bezier Float channel, but we need TWO. Select all of the Available Tracks adn right-click on them and choose Assign Controller again.

    This time choose Bezier Float from the list and click OK.

    It should now look like this. You are now done with the track viewer and you can close it.

    Okay, back to the Reaction Manager!
    Open it up, select the circle of the new Upper Lip controller and click the Show Selected button. Ahh.. much cleaner. Okay, click the + Master button, click on the circle and navigate to the Position > Y Position option.

    Click the + Slave button and click on the head. Navigate to the Morph target list like normal. But now you'll notice that by the four new targets is another menu extention. It lists two Bezzier Floats. Select the Right Upper Lip UP morph target, and it's top Bezier Float option.

    Do it again for all four new targets and do them in this order:
    Right Lip UP
    Left Lip Up
    Right Lip Down
    Left Lip Down

    The states will be a mess again, so select all of them and delete.

    Click the Create State button and you'll see a single clean state with all four targets in it... but wait.. what's this? they don't have names!?! That's right. No names. They'll just say "Float Reaction" on every one. This is why it's important to pay attention to exactly what order you added them in. I usually type it out in a notpad file so I can refer to it when I get confused.

    This is the Y position master, so we're controlling Up and Down here. When the controller is UP, we want both of the UP morphs to bet set to 100. When the controller is DOWN we want both DOWN morphs to be set to 100.

    It should look like this when you're done:

    Now we do it all over again for X. The EXACT same steps as before, but this time when you are choose the morphs as slaves you'll be selecting the 2nd Bezier Float instead of the 1st.

    Add all of the morphs in as slaves and clean up the states by deleting them all and then creating a single state that holds them all.

    The X Position controls Right to Left. What we'll be doing here is actually turning OFF morphs. So instead of entering 100 in the morph target's value, we'll be entering -100. When the controller is to the left (-5) we want the two Left morphs to be set at -100. When the controller is to the right (5) we want the two right morphs to be set to -100. It should look like this when you're done:

    And that's it. We are now officially done with this tutorial. You can creat more and more morph combinations and more and more controllers to suit your needs.

    I hope that it has been benificial to you in one way or another. I also hope it wasn't too terribly confusing, but given the subject matter, it is difficult to avoid some confusion. If it has helped you I'd appriciate a kind word, or a few $$ in my paypal account :D haha

    Created by Athey Moravetz © 2007. Do not republish without permission. email