facial animation setup?


I agree. But if you use joints you can make presets for stuff like “smile” or “sad” where the joints would repositiong themselves into the pose “smile”. Ontop of that you can add blendshapes that enhance rinkles and stuff, because those are hard to get wth joint only.

I did a tutorial some weeks ago where I look into a joint based facial rig.

it might be interesting for your guys to check out:



Hey everyone,

Thought some of you might be interested in checking out my latest facial set up.
Its a network of joints that follow the basic contours of the face + pose space deformation to enhance the expressions.




Man that is a lot of weight painting. Lol. I have a couple of questions: On the lip roll did you use a spline, constraints or nodes to get the lips to roll like that? When moving the eye ball around the top eye lid tucks in on its self, was that just some fancy skiining or a deformer to help out? On the eye brows to get wrinkles in at different controlers, did you create a blendShape for every stage or are using map and just animating the map depending on the position of the controler?

That is really good stuff Andy.


Haha… so much weight painting. I think I burned thru a full wacom nib just on this guy.
What I really wanted, was to wrap the hi-res mesh to a low-res one, and build my PSD shapes from the wrapped hi-res mesh. But I haven’t found a tool that does that, and I’m not a good enough programmer to write something like that (yet!)

The lips have about 16 joints each. All the joints aim at each other via something similar to Aaron holly’s aim constraint locator hierarchy that he uses for the ribbon set up.
All I’ve done to get the lip roll happening is connected the .rx of the lip control to the .rx of all the lip joints. I might have multiplyDivides in between to have a ‘falloff’ towards the corners of the mouth.

For the eyebrows, I just sculpted up the final shape and used my tool to connect it all together.
There is a vid showing this technique on my vimeo page. Though it has my voice commentary (apologies!!)

Thanks for the feedback mate, much appreciated.


To be honest, I don’t get the logic here, especially as you’re using manual sculpting for the final expressions anyway. I personally always get frustrated with weight painting when there’s always the blendshape option to get each and every vertex into the exact position I want them to be…


You could potentially transfer some of the weight painting to other characters.
More range of shapes with less work. There’s only about 25 shapes sculpted for that character.
More freedom for the animators - they’re not bound to sliders, and can push shapes ‘further’ if needed. Also the animators could move the controllers non-linear way between the shapes if they desired.

You really don’t think there’s any merit in this at all?


p { margin-bottom: 0.08in; } Because of the weight painting is why I stay away from facial bone rigs. I prefer to use blends and wires as a mix and add some bones where needed. The jaw, eyes and cheeks, some times. But you did a very good job with the system you used. How did you get the joints to fallow the controller, in a way that was not linear? I ran into that problem a while back as constraints work great to get things to fallow but for faces since the face is more of a curve then a straight line, things did not fallow accordingly I had to use nulls for offsets to get a nice curve in the fall off. Never the less it turned extremely complicated and did not look as good as blends do. You seemed to pull it off tho.

As for the lips, I have not used that system in a while hooking up all those dived notes drove me crazy. Lol. Even scripting in I found it cumbersome when there are ikSplines that offer that fall off by default. And I could use the clusters to move the lips around and even scale them. Ooohhoo, the animators went berserker over that. They are such kids, let them squish and squash something and they loses their minds.

Thansk for shareing.


Well, that doesn’t always work as well as one would hope. And you can also transfer blendshapes to that extent with a few simple tricks using wrap deformers :wink:

More range of shapes with less work. There’s only about 25 shapes sculpted for that character.
More freedom for the animators - they’re not bound to sliders, and can push shapes ‘further’ if needed. Also the animators could move the controllers non-linear way between the shapes if they desired.

You really don’t think there’s any merit in this at all?

I think it’s great for cartoon characters - where the shape of the face is more simple because of the stylization and the animators are both expected and also free to push it far.

For a realistic face, precise control, consistency and subtlety are more important. I’m also trying to be more of a modeler than a rigger, maybe that’s another factor.

Also, non-linearity isn’t such an important factor here. Very few people would notice the linear transition with a jaw opening blendshape, but you can recreate the effect of skin and flesh sliding over the jaw bone far better this way. The thing is that every vertex can be moved along a completely different and unique direction, whereas with skinning you’re limited to a single transformation per joint, and so you’ll end up needing a LOT of joints and a lot of tweaking for even just relatively simple actions.
A proper jaw opening motion is almost impossible to do with simple skinning and a single jaw joint, and once you have to add a blendshape to correct the result, you’re ending up with more work to do - weight painting and shape sculpting instead of just the sculpting part.

It’s no wonder that nearly every realistic CG character is built with blendshapes - just as nearly every stylized cartoonish one is using joints.


Ahh yes, I guess I was trying to get the best of both worlds.
Thanks for your feedback mate, I read your notes from the Dobby presentation. So interesting!


Heh, small world :wink:

Anyway, I don’t think there’s anything wrong with a joint based face setup, it’s just that for me it’s a far longer road, like trying to play with legos while wearing pretty thick gloves. So in many ways I also look up on anyone willing to go with this approach :slight_smile:


Ahh to get the joints following the controllers in a non-linear way was a bit tricky. The hierarchy was quite deep for each ‘intetween’ joint. I’ll go thru the basics.
Take the left top lip section for example. There are two inbetween joints: inner and outer.
The inner joint’s parent null position would be constrained between the topLipMid_ctrl and the lfMouthCorner_ctrl, a third of the way along. The same goes for the outer joint but 2 thirds the way along.
Inner and outer joints are always aiming at lfMouthCorner (or topLipMid_ctrl, it doesn’t matter which)
Say the lfMouthCorner_ctrl is moved along z. You can use that value to offset the local position of your inbetween joint with a multiplyDivide node or an anim curve or something.
Its quite hard to explain! Maybe I should do a vid on it.


Heh, fair enough. I like your analogy there! I think my next setup will be much more blendShape heavy as I want to push my sculpting skills a bit. But I also want to push my math too. Gotta find a worthy project!!



I find at times the technology of facial rigging can get in the way of the aesthetics. Whatever way you go, keep your eye on the goal of making appealing shapes with the controls you have.

I actually made a face rig in a single day using the most basic approach, and making a few key shapes:

That said, my favorite method is a broad joint-based rig for the whole head, then a separate skin-cluster for the lipline and eyelids, and most everything else carefully made blendshapes --with lots of correctives.

I am making some nice facial rigs for AnimSchool.com, where we teach facial rigging etc.


How do you handle the correctives?



Site is down for the time being




Hi! They are built in Softimage because you can dynamically work on the base model at all times (transferred to Maya when it’s all done).

They are fired mostly with min max statements:
blendShapeFace.angleLfwidenLf = min(blendShapeFace.angleLf, blendShapeFace.widenLf);


Hi Dave,

Are they always interpolated linearly? Do you ever do non-linear correctives via the product of weights? eg:

shape c @ weight (a * b)

so that shape c, in fact exponentially ramps in:

(a * b) @ 0.25 = 0.0625
(a * b) @ 0.50 = 0.25
(a * b) @ 0.75 = 0.56
(a * b) @ 1.0 = 1.0

It gets even crazier when a combiner shape is the product of a weight position at an in between value e.g. shape c = weight a @ 0.5. So that shape a’s weight interpolation 0 > 0.5 > 1.0 actually returns 0.0 > 1.0 > 0.0 for shape c.

The actual interpolator could even be non-linear itself e.g weight a for t[0,0.5,1.0] = easeIn/easeOut

with this paradigm you can build complex layers of interpolation, DPK talks more about it here:


with a clip:


As im diving into maya, maybe it’ll be one of my learning projects to build a dag node to do it. One question though is that do you ever get a combiner shape that exists in a range that doesn’t start at 0?


shape c @ 1.0 = weight a @ 0.5 for t[0.25,0.75]



Hi! I use multiplying sometimes.

But yes, in all my face rigs, I use the method of making a corrective turn on when another shape is at half strength. This is so I can have a very large range of articulation and still control the shape.

For example, when the inner brow goes down halfway to its (quite) low pose, the mid pose isn’t very attractive, so it gets spruced up with a halfway corrective.


Your video was awesome man! - Like how you use poles as direction changers - essentially into ‘islands of detail’ - noes, mouth, eyes…

Thanks Eek.

 here is the mesh that I use for my base start for my
characters.  This is just a flat plane that I can punch out into the 3d design.

Cheers HD