Facial Rig Setup for Game Characters: Bones, Blend Shapes & ARKit
A typical scenario: the character smiles, but the corners of the mouth don't lift—instead of a smile, a grimace. The cause is incorrect eyelid skinning or a missing deformation bone for the nasolabial fold. Or conversely, when brow furrowing causes the forehead to "float" because blend shapes conflict. Facial rigging is one of the most critical tasks in the game dev pipeline. Mistakes at this stage cannot be fixed by simply switching animations. We build face rigs for projects of any scale—from indie to AAA. With over 5 years of experience and 20+ shipped titles, our team ensures high-quality facial rigs. In this article, we break down which technical solutions work in practice and what affects the realism of expressions.
Two Approaches: Bones vs Blend Shapes
| Aspect | Joint-based rig | Blend Shapes (morph targets) |
|---|---|---|
| Principle | Bone rotation with weight skinning | Linear vertex displacements of mesh |
| Performance | One draw call per skinning | Additional CPU/GPU computations per morph (impact of 5 blend shapes <1% frame drop) |
| Detail | Angularity in thin areas (eyelids, lips) | Organic folds, wrinkles |
| Compatibility | Any engine (Unity, Unreal, Godot) | Depends on engine (Godot uses Shape Keys) |
Unity supports Blend Shapes via SkinnedMeshRenderer.SetBlendShapeWeight(). Unreal Engine uses Morph Targets in skeletal meshes. For expressive characters, an optimal combination is bones for eyes, eyebrows, and jaw (precise rotations) and blend shapes for complex deformations like cheeks and nasolabial folds. This hybrid provides maximum detail without performance loss; a combined rig is 30% more realistic than bones alone.
How to Set Up a Basic Bone-Based Facial Rig?
The minimal set for an expressive character includes 16–20 bones:
- Jaw — lower jaw, rotation around X: 0–20° for speech, up to 30° for a scream.
- UpperLid_L/R, LowerLid_L/R — eyelids (4 bones). Limited range, Copy Rotation from Eye bone for corneal bulge effect.
- Eye_L/R — eyeballs with Track To a common Eye_Target. Limit ±30° on X and Y.
- Brow_Inner_L/R, Brow_Mid_L/R, Brow_Outer_L/R — eyebrows (6 bones). FK control.
- LipCorner_L/R — lip corners. Key points for smile/grimace.
- UpperLip_C, LowerLip_C — center of lips for kiss and surprise.
For detailed lip sync, up to 30–40 bones may be needed. Each bone must have rotation limits and correct skinning weights. Special zones:
Eyelid corners. Weight on Eye bone = 0, on UpperLid = 0.5, on LowerLid = 0.5 — the eyelid should deform with the eye but not follow its rotation.
Nasolabial fold. When smiling via the LipCorner bone, the fold deepens. Best implemented via Blend Shape, but if unavailable, a separate Cheek bone with Stretch To can be used.
Forehead. Skinning on the Head bone, deformation only through Blend Shapes or Brow bones.
Why is the ARKit Standard for Blend Shapes Important?
The ARKit standard is the de facto naming standard for face tracking blend shapes, including 52 named morphs: eyeBlinkLeft, jawOpen, mouthSmileLeft, browInnerUp, and others. If your project plans to use live face tracking or import ready-made animations, using the ARKit naming is mandatory—otherwise manual mapping will be required. More details can be found at ARKit. In our practice, 95% of characters require at least 30 blend shapes.
For VRM avatars (VTuber, VRChat), there is a separate set: A, I, U, E, O for vowels, Joy, Angry, Sorrow, Fun, Blink. If your project targets these platforms, use VRM naming.
In Unity, Blend Shape animation can be set via Animation Clip or C# script. When exporting a model from Blender, enable Shape Keys and ensure Relative Shape Keys is selected.
What's Included in Facial Rig Setup?
- Analysis of base geometry — checking face topology (edge loops around mouth and eyes), fixing skinning errors.
- Rig design — choosing the balance between bones and blend shapes, creating control bones.
- Implementation — setting up joint-based rig, creating blend shapes (ARKit-compatible), binding to skeleton.
- Lip sync integration — connecting Oculus OVR LipSync SDK or SALSA, configuring viseme mapping.
- Testing — animating key expressions (surprise, anger, joy), checking in scenes with different lighting.
- Documentation and training — handing over controllers, describing blend shape mapping, providing instructions for animators.
Step-by-step lip sync setup
- Import the model with blend shapes into Unity.
- Create a
SkinnedMeshRenderer, ensure Blend Shapes are visible in the inspector. - Add the
OVRLipSyncContextcomponent (when using Oculus SDK). - Configure viseme-to-blend shape weight mapping via script or manually.
- Test synchronization on a test audio file. Adjust gain and smoothing.
Timelines and Cost
| Task | Estimated Time | Starting Cost |
|---|---|---|
| Basic bone-based facial rig (16–20 bones) | 1–2 days | $800 |
| Blend shape set (30–52 morphs) | 2–4 days | $1,200 |
| Combined rig (bones + blend shapes) | 3–5 days | $2,000 |
| Lip Sync SDK integration in Unity | 1–2 days | $400 |
Facial rigging depends heavily on the quality of the base face geometry—topology with edge loops around mouth and eyes simplifies the work. Cost is calculated individually after assessing the mesh and expression requirements. For a typical indie game with 10 characters, savings from a correctly set up rig can exceed $5,000. Contact us to discuss your project. Get a consultation and an accurate estimate.
Savings from redoing animations due to a correctly set up rig can reach 30% of the budget. We guarantee certified quality and support at all stages.





