... then I got distracted.
Well, I finally got a face rig for Larry. Not all of the bones are "activated". I kind of lost the mane hair controls during the creation of the new rig so I have to put them back in from another file. And I still need to add a few bones for more face turning stuff like ears and facial hair.
The little "bubbles" to the left are markers for the head and jaw bones so I can turn off construction curves.
http://www.lowrestv.com/enchanted_fores ... aw_rig.mov

The tricky part were his teeth. I needed his teeth to be "inside" the mouth except for the fangs... but the fangs need to be hidden when his mouth closes.
This was causing no end of frustration for me.
What I have now is the "lips" or mouth area is split into two layers. A shape for the right side and a shape for the left side. I use z-depth scripted layer ordering to "flip" these layers up and down to allow the fangs and teeth to be over and under the gums as the head turns.
This will also handle the tongue perfectly! the tongue will be able to go in and out of the mouth and still be hidden when the mouth is closed.
The other tricky part was the protruding jaw itself. I have big teeth sticking out. I also need to have "rubbery" expressive lips that are independent of the teeth. For a "human" type character this is simple enough since the teeth in general are "flat" inside the mouth. For this guy it is a bit different.
In my original rig I ended up with HUNDREDS of "compound bones" to control the mouth and lips. Since then I have discovered a lot more cool things I can do with scripting that completely eliminates literally hundreds of bones.
I have code that allows me to apply translation constraints pointing to different bones at the same time by having "layered" sets of parented bones that are controlled by the script.
The basic problem was that a child of a bone doesn't work with a position constraint. Another bone using a child bone as a constraint target won't move if the targets parent moves. The targets translation never changes.
My script ADDS the translation of the parent to a specific bone so now a position constraint will pick up the ABSOLUTE value of a bones position.
By doing this I can have the head turn bone control all the "snout" and teeth bones. A second lower jaw bone ALSO moves the lower teeth but "adds" it to the existing motion.... thus eliminating any need for bunches of multiple controlling bones. I can apply this technique through out eliminating bunches of bones and still maintain control.
The lips are the same way. There are just a few bones to control the lips but now I can not only move them with the head turn but also control them for lip sync or expressions with another bone or bones.
By the way, each tooth is bound to its own bone. Each of these bones has a graduated position constraint to maintain position relative to either the head turn of the jaw opening and closing.
This rig can be used for all of my talking animal characters. Happy Bear has an identical jaw and teeth set up.
Garry the gopher probably won't even need the rig that much since his mouth never really opens when he talks.
-vern