To test out facial expressions, I created shapes for winking, squinting, sniffing, and 'oh' phonemes. Then to see how they looked in-engine, I used Angelscript to weight them with asynchronous sine waves. This means that each shape cycles smoothly between its 'on' and 'off' state, and since they cycle at different rates, we can see them in every possible combination. Here is a video of the resulting face animation:
Be sure to check it out in HD!
The blend shapes can be controlled both via Angelscript and via animation keyframes, so all sorts of complex combinations are possible. For example, we could create a keyframed lipsynch animation, and use Angelscript to make the character squint if the sun is in his eyes.
What do you think of this face animation test? Do you have any ideas to make it better?