- Create enough bones to cover the entire face, with enough detail for areas of interest (eyes, mouth)
- Skin those bones so that they pleasantly deform the face
- Attach a series of animator controls to those bones to drive their motion
- 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.