Tuesday, September 7, 2010

Joint-Based Face Rig - Part 2: Brow-beater

My approach to rigging up the face using only bones is very simple:
  1. Create enough bones to cover the entire face, with enough detail for areas of interest (eyes, mouth)
  2. Skin those bones so that they pleasantly deform the face
  3. Attach a series of animator controls to those bones to drive their motion
In my research I found a variety of methods for filling the face up with bones, but most of them were needlessly complex and had way more than the 128 bones I am limited to. So I opted for a simple approach, using the minimum number of bones necessary to create facial expressions, but making use of as many of the tried-and-true techniques as I could. As it turned out, I ended up doing something slightly different for each bit of the face:
  • Brow (covered in this post)
  • Eyes (covered in part 3)
  • Cheeck/Nose (covered in part 4)
  • Mouth (covered in part 5)

The whole brow is connected. Movement on one side will pull at the other

 Any seasoned animator will tell you that the whole brow is connected as if it were a giant curve; when one side is pushed into a position, the other side is pulled over in response. Several of the tutorials I discovered used this as a basis for their rigs. I want to emulate that curve-like behavior, but Source does not support curves as deformers, only joints. This leaves me with two options: figure out a way to make joints attach themselves to a curve (but leave them adjustable for animation), or manually animate each and every joint to mimick curve-like behavior. Neither of those sound like very fun options.

My solution in a common tool used by animators called a pose manager. Rather than make an uber complex setup that limits the movement of the character's brow, I simple make a row of joints that span the brow, weight them in a very smooth gradient between each other, and use a pose manager to create the simple brow shapes that an animator can work with.

This prevents the need for complex curve-mimicking setups, and allows the animator to retain full control. I used five brow joints in the characters for this project. After some especially helpful advice from a veteran rigger, I have them all grouped under a non-used joint called Brow_REF, and that joint is connected back to the main head joint. Using empty "reference" joints like this can be a huge relief. It helps to keep the face neatly organized, and it only takes a few seconds to lock it down while you are skinning the weights.


  1. This really seems like an incredibly innovative and informative thesis, doubly so since it sounds like you're managing to figure out a lot of interesting techniques that few people if any have thought of before.

    Can you tell me if there is an analogous example for writing? I'd like a simple shortcut I can do that a few quick manipulations to which would ultimately result in a fully formed book. So is there, like, an app for that? Or is it more a plugin...?

  2. I'm not quite sure! Wordsmithing is a demanding task, and requires a firm grasp on language, which is not something that lends itself to being firmly grasped.

    I suppose you could find a good analogous example in... maybe tvtropes.com? You could consider each trope as a part of the rig. And just like I'm cobbling together bits of my rigs to make a character, you could start cobbling together various tropes to make a story.

    In fact, I think that would make an excellent exercise. See how many tropes can be crammed into a single novel. It could end up being a hit! If Jim Butcher can pull off a hit with Pokemon and the Lost Roman Legion, imagine how much could come from a vast repository of tropes.