Face Rigging With NURBS Surfaces from ryan griffin on Vimeo.
Hi all. I have made some progress on my face rig research. I am really “attached” to the idea of using nurbs surfaces to determine the positioning of my joints. In the previous post I showed off an example of how this might look on the lips. The question I left everyone with was how to get my joints to move when the jaw rotates. Here is one possible solution.
To create this rig I made a nurbs surface that fit the underlying skull structure of one sector of the lips. I then used the geometry and normal constraints to get the joint to flow along the nurbs surface. A control object is placed above the constrained object so I can move the lip joint on the surface. The whole gizmo is then grouped and constrained to the jaw joint. One thing I like about this setup is the fact that I can change the value of the groups constraint so that it follows the jaw rotation by any percentage. So the mid lip could follow the jaw %100 while the outer lips would get a value of %20. This will give us a nice rounded mouth shape when the jaw opens.
I started tackling the mouth area this week. I find that the same trick I used on the brow also applies to the mouth. One issue stands out however. The lip joint needs to be effected by multiple constraints. I use the geometry and normal constraints to mimic the movement of the lips over the teeth and jaw, but I also need all the lip joints to move with the rotation of a jaw bone. I have a few ideas on how to make that happen and I will discuss those ideas in my next post. I would like to hear your thoughts on the problem, so feel free to speak up. For now I will leave you with this video that shows what I have so far.
I have decided to turn this series of posts into more of a stream of consciousness format. Problem solving is a dynamic event where we consider multiple solutions until we find a few that best suite the problem. Once we narrow down the possible answers, we can begin an exhaustive investigation that will hopefully reveal the ideal solution.
Our goal is to create a bone driven rig that provides realistic facial animation. The system should be script-able, and needs to have a joint cap of 52 bones. Earlier we took a look at blend shapes, muscle deformers, and a few options for joint driven deformation systems. Right from the start I am going to eliminate blend shapes, because they can not be used by the game engine, and they can not be scripted. Muscles can be used to drive joints, and it is likely that we could create a procedural system for creating the muscles. Currently I am most in favor of joints that ride along a surface or a curve. The system could be scripted, and we get the appearance of skin moving over an underlying bone structure.
In this example I have created a nurbs surface the represents the skull structure under the brow area. I then created a nurbs cone, which is constrained via a geometry constraint and a normal constraint. Here is description of a normal constraint from the Maya manual. I then constrained my joint to the cone. The results are promising. I will leave you with this video demonstrating the results of my experiment.
I said I would talk about blend shapes and muscle systems in this next post and that is what I intend to do. I do not intend to provide a tutorial on these systems. Instead I want to provide a brief overview while pointing out some of the benefits and downsides to each system. The idea behind this series of posts is to look at some of the ways we could rig a face. Once we have a clear understanding of the choices available to us, I will establish a scenario where in a face rig is needed that will provide the best results within a set of constraints. So without further ado, let’s discuss blend shapes.
What is a blend shape exactly? At the base level, it is just another tool to provide deformation.
A blend shape basically work like this. A polygon mesh is defined by the position of its vertices in XYZ coordinates. Each vertice is represented by a numerical value. In Maya we refer to this value as vertice order. So a base poly cube will have eight vertices. Each vertice will be assigned a number from zero to seven, and each vertice will have an X, Y, & Z value that represents that vertices position in world space. If we duplicate the cube, we get another object that has matching vertice order and position. Because of this, we can measure any changes between the two objects, thus creating a blend shape.
The nice thing about a blend shape is that you control the shape on a per vertice level. Each vertice can be carefully placed to get just the right look. The big down side is time. Hand sculpting takes a lot of time and since the process requires an artists hand, the procedure can’t be scripted. You will also run into interpolation problems. Each vertice will move in a straight line to get to it’s target position. You can correct that problem by sculpting intermediate shapes, but that is another expenditure of time. The eye lids are a perfect example of this problem. If you simple create an eye open and an eye closed shape, the eye lid will intersect the eye ball as it moves between shapes.
Muscle systems require a large amount of setup, but they can provide highly realistic animation. A Maya muscle is essentially a lofted surface that acts as a deformation object for a skinned mesh. Muscles squash and stretch to provide a realistic representation of the way real muscles work. I think muscles are fantastic because they maintain the volume of the mesh during animation. For the most part, muscle systems are easy to setup, although the weight painting can be a killer. I have not tried to do it, but it seems that a muscle setup could be scripted to a large degree, so the setup process could be automated. There is not much that I don’t like about muscle systems. My only complaints would be that they are exclusive to Maya Unlimited, and they still don’t give you the same level of control you get with a blend shape.
There is nothing stopping us from using any combination of joints, blend shapes, muscles, and other tricks when building our face rig. The key is to think about the task at hand, and use any tools available to get the job done. I have always said that it is not the knowledge of any particular tool set that makes a great character TD. The most important skill a TD can have is an ability to solve problems. Believe me, your problem solving skills are constantly challenged when you are working as a TD.
I think I have talked enough about the myriad of ways one could rig a face. Now I think it is time to do what I came here to do. Here is the scenario. I am a TD in the game business and I have been tasked with designing a face rig that will be used on the twenty characters going into our hot new project. Let’s call the project…. “Donkey Punchers”. The game engine I am working with only accepts joints so blend shapes and muscles are out unless I use them to drive joints. My joint count limit for the face is 36 joints. Any more joints than that and kittens will start bursting into flame world wide. I should make the system script-able since I will need to build the same rig twenty times plus iterations. This is a fighting game so the faces are fairly high-rez coming in at about 900 verts. The characters will have dialog cut scenes where they talk about each others mothers, so I really want to make sure they look good when speaking. I am not sure what sort of face controls my animators prefer, but I will be sure to find out before finalizing my rig. I don’t want to hear any complaining later.
Now I have all my basic information and it is time to do some planning and research. In my next post I will discuss my findings and I will share the rigging choices I made, and why I made those choices. In later posts we will rig the character, while we script out the rigging process.
Earlier I defined three primary ways of rigging the face. I mentioned, bones, blend shapes, and muscle systems. Let’s take a closer look at bone driven systems. Bone driven face rigs can be as set up fairly simply by placing a bone for each major muscle you want to represent. In this example I use 27 joints. Joint placement is based on anatomy, with some slight variation. Here is a list of the joints with an explanation on placement.
1. Creates an outer brow raiser mimicking the flexing of the occipitofrontalis.
2. Inner brow raiser via the frontalis, and the brow lowerer via the corrugator supercilii, depressor supercilii.
3. Optional joint to assist with brow lowering and the furrow.
4 & 5. Closing and opening eyelids. I sometimes add two joints here to assist with twisting the eyelids.
6. A lot of movement happens in the cheeks due to the movement of the masseter, buccinator, orbicularis oculi, an,d other surrounding muscles. For the sake of joint efficiency, I usually only add one joint here to simulate the movement in this area.
7. Tightening of the levatator labi, and for nostril raise and possibly flare.
8. Primarily used for cheek puffing and addition skin movement when jaw opens and closes. This joint is also useful for squashing and stretching the cheeks.
9. These are the joints I use for all of that intricate lip movement. A lot of muscle movements combine to move the lips, but I wont go into detail on that just yet.
Now we have our joints laid out and we are ready for skinning. As a general rule, I flood the weights %100 to the head joint. I then weight the mesh surrounding each joint %100 to that joint. Once this is done you can do I final pass to tune the weights.
The joints are laid out, and the mesh is weighted; yet this face is hardly rigged. We still have a few big problems. We need a control system for the animators and a way to move the jaw while providing automated movement for the lip joints. Another big problem is the way that the joints move.
We want it to look like there is an actual skull under the face. If we start animating the joints, we will quickly find that we are not mimicking a muscle rolling over hard bone. If this is rig is going to use set driven keys to define poses, you could set a driven key at the high and low points, and another key somewhere in the middle so you can define a nice arc. This will probably work alright, but this method would require a lot of setup and you will still not get the best results. Fortunately Maya comes with some built in constraints for this situation. Objects can be constrained to Nurbs surfaces via a normal constraint. Not only will this constraint keep the joint flowing along the bone, it also provides an up vector so your joint will rotate to follow the flow of the surface.
You get a much more realistic flow this way with a lot less tweaking. You may be able to find a better solution, but this will certainly do the trick.
Now we should talk about the jaw briefly. You want the bottom lip joints and possibly some of the top, following the rotation of the jaw to varying degrees. The goal is to get an “O” shape when the mouth opens. I have accomplished this many ways in the past. First, you could throw in a couple objects on top of the jaw that would inherit the jaws rotation minus a percent. You could then parent your mouth bones under these extra jaw bones. Heres an example.
Another solution is to draw a circular Nurbs object that runs around the lips. You could then attach joints to the curve. The curve would have clusters on each cv, and these clusters would be animated.
If you like this type of setup or you just want to try it, let me know and I will work on a tutorial.
The final thing to figure out is how to setup our control objects. There are a ton of options here, and the choice you make should be based off of your animators preferred setup. Personally, I like on face controls where each joint can be manipulated individually. I will often add another layer of control that offers preset poses. I am not going into control setup until later, so we will just stop here for now. Next time we will move on to blend shapes, and muscle systems.
I appreciate criticism more than compliments, so please let me know if I made any errors. I would love to hear your ideas on face rigging, in particular I would like to hear how you setup joint driven systems.
I feel it is time to start getting some useful information up on this site, so I have decided to start an in depth investigation into the art of face rigging for CG animation. In this series of posts I plan on looking at the wide range of systems that have been developed with the common goal of capturing the intricacy of human facial movement. First we will look at the primary ways to create deformation in Maya. Once we understand the basic methods of facial rigging, I will delve more deeply into each system so we can better understand how that system works. Finally, I will write a step by step tutorial that will guide you through the creation of a facial rig that we will design as I move through this series of posts. My proposal sounds like a tall order right? I know what your thinking ” Don’t write checks you’re butt can’t cash”. Well I promise to do this, and expect you to keep me to it. So lets get started.
What is the goal of a good facial rig? The primary goal is to allow for the creation of a believable performance.

Face Muscles
The human face has 52 muscles ( The actual number is under debate) with about 19 of them playing a major role in facial movement. Muscles tense and relax in symphony, to create the myriad of facial expressions that relay a human beings mood. In later posts I will go into more detail concerning how the face muscles move.
Our challenge as a rigger is to allow for subtle facial movement despite the limitation of our tools. Further limitations are set by the platform for which you will develop you rig. I do most of my rigging for video games; which means I am limited by only being able to use joint systems. If you are working on film, you can use a larger set of tools to get the job done. The key is finding a way to make the best possible rig within your projects boundaries. Lets take a look at some of the major methods for facial rigging so we can get a better understanding of the pros, cons, and similarities among these techniques.
Deformation: A change in the volume and/or shape.
In CG we create mesh objects that define the volume of a character. To animate the character we need a way to deform that mesh. This is done through the use of deformation objects. The most commonly used deformation objects are joints, blend shapes(sculpted meshes), advanced deformer objects such as muscle systems, or any combination of the previous.
Joint Driven Systems
Maya has a type of transform object known as a joint.
A mesh is bound to these joint objects thus allowing the joints to serve as influences for mesh deformation. When the joints are moved, the mesh area around the joint moves with it. Joints are the deformation object of choice for video games, because joint based deformation is the only type of deformation supported by most game engines. Joint driven rigs can work really well and the deformations evaluate quickly while animating. Joint systems are still more limiting than some of the other methods we will look at.
Blend Shapes
A blend shape is a sculpted mesh that is used as a deformation goal for the base mesh. For instance, you could sculpt the shape of an inner eyebrow raise onto a copy of your base head mesh.
This new mesh will be used as a blend shape. This means that your base mesh will match the shape of your blend shape mesh when the blend shape is activated. Because each muscle movement can be hand sculpted, the artist is given a great deal of flexibility when trying to achieve anatomically correct movement. The down side is that an artist much sculpt each individual shape. Blend shape systems also evaluate more slowly than joint driven systems.
Muscle Systems
Muscle systems are a relatively new technology that can simulate actual muscle movement beneath the skin. The muscle geometry expands and contracts like a real muscle, and the characters geometry is influenced by the muscle. This method is great because you can build an accurate system based off real world physiology.
Other Systems
These three methods for creating deformation are not the only ones being used. I have seen rigs that use lattices, non linear deformers, nurbs curves, and a whole variety of varied methods to get the job done. We will look into some of these methods in later posts as we continue this quest to understand the art of facial rigging.
References and resources.
Data Face. Great resource on how the face works.