For years now, we’ve been using morph target based facial animation on our games at Volition. At the start of a new project there is a typical “bones vs. morphs” debate that occurs and we’ve always stuck to what we know. In the past, I’ve been on the recipient side of reviewing the results of debates and proposals. On a recent project, I had the opportunity to dive into this topic more hands on and I was quite surprised to hear myself recommending a ‘bones based’ approach…

You need to install or upgrade Flash Player to view this content, install or upgrade by clicking here.

NOTE: Normal map is inverted and wrinkle maps are not setup or shown here.
  • I made this simply to get an animated facial bone setup that we could use to test in our engine.  It is by no means final or indicative of quality. The animation is rough as quality of the performance was not under evaluation here.
  • This video is a screen capture from within 3ds Max of a 44 facial bone  setup (counting head, jaw, and tongue too).
  • I setup and animated the head in Softimage:Face Robot.
  • I did the eyes and head movement by capturing mouse tracking. The eye blinks were captured by setting keys during playback.
  • Lipsync was done with SI’s lip sync tool and it did a very nice job imo.

Head (work-in-progress) model courtesy of Ben Eoff.

Below is a summary of the goals that I was aiming for in researching this topic as well as the process I used, some thoughts, and some of the reference I used…

Goals – High Quality Facial Animation solution

Toggle ‘Goals’…


Toggle ‘Process’…


  • In contrast to our shared universal head and morph targets, a bone-based system allows the head to be modeled uniquely for the best visual result per character. E.G. modeling asymmetrically including physical features like scars, moles, facial hair, etc.
  • Per character, per animation bone offset animation can correct or push the animation further than universally shared morph targets.
  • Wrinkle Maps add extra fidelity and realism. Note: this could be added to a morph based solution as well.
  • Scalable Performance is possible. Bone LOD and features can be turned off based on visibility/proximity if desired.

Caveat:  A hybrid setup with unique morph targets, corrective shapes, and secondary runtime simulation per high resolution head would be ideal.  However, living in the game world of balancing 30fps+ performance with memory constraints means we can’t have everything!