Monthly Archives: June 2012

Animation System 2 – Morphing & Facial Animation

From past two weeks I have been working on another kind of animation technique called Morphing Animation or per vertex animation. In this technique each pose of animation is referred to as morph target which is stored as a deformed version of the mesh. Then during runtime at each key frame vertices positions are interpolated between these stored positions in morph targets. I am using morphing animation for facial animation in my engine. (I already have skinning for character animation which is also better way to handle that.)

Here’s an example image from Nvidia Dawn Demo Article in GPU Gems –

So First of all I needed a system to load this special type of X file with base face model mesh and all the morph targets for different emotions, different types of faces etc. Also i needed to control eyes separately which later on together with Inverse Kinematics can provide functionality like looking at particular target etc.

So I ended up with –

FaceMesh class – It take cares of loading X file and extracting all the meshes. It is also responsible for rendering of the face including eyes.

FaceController – It controls the active morph target to provide functionality like dynamic emotions etc.

Eye – To manage Eye and eye related things like change focus etc.

FaceFactory – To generate random faces at runtime using the data loaded by Face mesh class.

Here’s a screenshot of my face demo –

(Models have been taken from samples provided with book Character Animation with DirectX. If some one knows any place where we can download some high quality face models with morph target that can be used in 3ds Max please post the the link in comments section.)

So for next task I am thinking to implement some basic Lip Sync. And then maybe Facial Bones also.

References –

Advertisements