Character Rigging: Faces in Blender

elliott davis
5 min readJan 27, 2021

--

This tutorial lists some techniques for adding facial animation controls to an existing character model in Blender.

This tutorial assumes you have a character model, weighted to an armature skeleton.

This tutorial is written as a high-level list of steps for each technique. For a more detailed explanation, and an in-depth list of steps, please check out this companion, long-form tutorial: character-rigging-how-to-set-up-face-animation-controls-in-blender

Eye Movement

Separate the eyes as their own objects.

Create bones at the centers of the eyes, pointing forwards.

Use “Parent > Bone” to attach the eyes to the eye bones.

eyes looking around

Create target bones at a distance in front of the eyes (2m).

Give the target bones a parent centered between them.

Set the bones to ignore the scale of their parent (to let you scale the parent to focus the gaze at the point of the parent target.

Use a Track To constraint on each eye, specifying the target bones.

look target bones

Create the inside of the mouth

Use Rip to open the edges where the closed lips meet. Leave the edges a small distance apart.

Extrude the edges inwards in steps and round the shape to create a balloon. Use “Clipping region” (Alt-B) to work inside the head geometry.

Move the lip edges back together to meet or slightly overlap.

Optionally create teeth and gums.

rip mouth edges
starting a mouth cavity
finishing a mouth cavity

Shape Keys

Shape Keys are mesh deformations driven by a set of alternate vertex positions. Some face animations are suited for using Shape Keys instead of deformation bones. Shape Keys can also easily be controlled with scripting in a game engine like Unity. In Unity, importing a mesh with Shape Keys (and no armature or animation) will result in an asset that is a SkinnedMeshRenderer (instead of a MeshRenderer). The SkinnedMeshRenderer component will also have a dropdown called “BlendShapes” with the Shape Keys listed as sliders. You can use the SetBlendShapeWeight function on a reference to the SkinnedMeshRenderer, with the index of the blend shape, and a weight as parameters.

Mirror, and Subdivision Surface modifiers need to be applied, or Shape Keys won’t be exported.

These modifiers can’t be applied if the mesh already has Shape Keys on it; the existing Shape Keys need to be deleted before the modifiers can be applied.

Blink (Shape Key)

Add the “Basis” Shape Key, and an additional Shape Key; name it “Blink”.

Select the “Blink” Shape Key and edit the mesh, scaling the eyelids closed, and tweaking positions sculpturally.

Use the X-Axis Mirror setting to edit symmetrically.

Leave edit mode and scrub the Blink Shape Key’s value to test.

blink Shape Key

Mouth open (Shape Key)

Add a Shape Key and name it “MouthOpen”.

Select the “MouthOpen” Shape Key and enter edit mode.

Select the vertices along the jawline, place the cursor at the rotation point of the jaw, and use Proportional Editing with the “Connected” setting on to deform the chin as if the mouth were open.

Use Proportional Editing with the “Connected” setting on to adjust the lips to match.

proportional editing the jaw
previewing the mouth open Shape Key

Animating Shape Keys

Right-click on the Shape Key value and select “Insert Keyframe” to create a keyframe for the Shape Key at the current frame.

Switch to the Animation workspace and switch the Dope Sheet’s mode to “Shape Key Editor” to create and select from multiple Shape Key animations for your mesh object.

Open the Nonlinear Animation editor and use the “Push Down” operation there, or in the Shape Key Editor and Action Editor to add NLA Strips to the Nonlinear Animation timeline.

Arrange multiple animations into one timeline. An animation will be exported for each Action in an NLA track. Shape Key data within the beginning and end of each Action in the timeline will be included in that exported animation. The exported animations will be named with the names of the NLA Strips.

Nonlinear Animation editor with tracks for actions and shape key actions

Eyelid Deformation Bones

Create bones along the surface of the eyelids to be control bones.

Create bones connecting the bases of the control bones.

Clear the “Connected” value for all these bones and set their parent to the head bone.

Use a Copy Position constraint targeting the control bone at the base, and a Track To constraint targeting the control bone at the tail for each connecting bone.

Paint in the weights for each connecting bone, and erase the weights from the head bone for the eyelid regions.

Use the same technique for the eyebrows.

pulling weighted eyelid control bones
weight display, selecting the head and each eyelid bone

Mouth Deformation Bones

Create a jaw bone from a centered position in front of and at the bottom of the ears.

Paint in the weights of the jaw, and erase the weights from the head bone. Ensure the top lip is excluded by the jaw bone and the bottom lip is excluded by the head bone.

Attach bottom teeth and gums to the jaw using “Parent > Bone” if they exist.

Create control bones and connecting bones along the top and bottom lips using the same technique as the eyelid deformation bones section above.

Paint in the weights for each connecting bone, and erase the weights from the head and jaw bones for the upper and lower lip regions.

jaw bone with weights

This face rig is suitable for posing the face in expressions, and creating mouth movements for a talking character.

lip sync animation

For additional control, you might also want to add deformation bones along the cheek or in the nose.

cheek control bones

Tips for weight painting

Set the “Zero Weights” visualization to “Active” to easily spot near-zero values that would cause visible deformation in unintentional places.

Enable the new “Weight Contours” visualization to add lines to the weight color gradient.

--

--

No responses yet