This is a Python script I developed while working for Grow Goodness. It’s a geometry-agnostic auto-rigging solution for mouth and eyes of any kind. The rigger only has to make a few “guide meshes” and the script builds everything from there. It’s a bone-based rig, there are no shapekeys. The rig is designed to match the topology of the character, so that automatic skinning works without the need for any irksome weight-painting. This rig makes heavy use of Blender’s B-Bones, a feature that is as under-utilized as it is underrated. When both eyes and the mouth are in place, this rig has 3074 bones! Actually, the number of bones is relative to the guides that are used to generate the rig. It’s possible to generate a high-detail rig with lots of tweak-controls, or a simple rig with only a few tweak-controls. Thus, the rig is especially suitable for use in a low-poly mesh that is subdivided – but it’s flexible enough to work with high-poly or low-poly meshes.
There are a few advantages to using bones instead of shape keys. For one, it allows any kind of interpolation between poses. With blendshapes, you’re limited to linear interpolation between keys, and it’s tedious to produce extra shape keys in order to get nice interpolation. This is important in facial animation, where linear interpolation looks especially uncanny. A bone-based rig also makes it trivial to copy poses from face to face, or even to do something like pin something to a part of the face – say, a piece of jewelry on a character’s lip could be pinned to the bone that’s already there. But the most important advantage is that it can be generated with a program, without relying on a modeling artist.
(The model used in this demonstration was made by me. But you can see the rig’s usage in the Grow Goodness posts on this site.)
This automated workflow was critical to my workflow for Grow Goodness – because I was illustrating books, I needed extremely expressive faces for a huge cast of characters. Some of the characters had 2 eyes, some had 1. Each had slightly different proportions — and most challenging of all, many of them had fur. I needed a rig I could build fast, pose in the most insane and silly ways, and adapt to any geometry, all while keeping a clean enough wireframe to prevent the fur from bunching, thinning out, or glitching. We also used these facial rigs for animation.
Below is a quick demonstration of the process of generating the rig.