← Back to Blog 3d-modeling

Morph Targets in Unreal Engine 5: Drive Facial Animation and Shape Key Blending for Game Characters

By BitSoul Team6/28/2026Updated 8/1/20266 min read81 views
Morph Targets in Unreal Engine 5: Drive Facial Animation and Shape Key Blending for Game Characters

Morph targets—known as shape keys in Blender—are the backbone of expressive character animation in games. They let you pre-compute vertex offsets for specific facial poses (a smile, a brow furrow, an open mouth) and blend between them at runtime with a single float value. If you've ever seen a game character react to dialogue with nuanced eye squints and lip movements, morph targets are doing most of that work.

The challenge isn't the concept—it's the pipeline. Blender uses shape keys, FBX encodes them as blend shapes, and UE5 calls them morph targets, but the data is the same. Mismatched export settings, wrong pivot origins, or missing morph data in the FBX are the typical failure points. This guide walks every step from Blender mesh setup through runtime Blueprint control in Unreal Engine 5.

Setting Up Shape Keys in Blender for FBX Export

Start in Blender with your character's base mesh in Object Mode. Open the Properties panel → Object Data PropertiesShape Keys. Click the `+` button to create the Basis key (this is the neutral pose—never modify it). Then add each expression as a new shape key: `mouth_open`, `brow_raise_L`, `brow_raise_R`, `eye_blink_L`, `eye_blink_R`, `cheek_puff`, and so on.

For each shape key, set its value to `1.0`, enter Edit Mode, and sculpt or move vertices to create the expression. Return to Object Mode, reset the value to `0.0`, and move on to the next key.

Naming matters. UE5 imports morph targets by name. Keep names lowercase with underscores. If you're targeting ARKit-compatible facial animation (useful for MetaHuman blending), use the Apple ARKit 52 blend shape names exactly.

```python
# Confirm all shape keys via Python console in Blender
import bpy
obj = bpy.context.active_object
for key in obj.data.shape_keys.key_blocks:
print(key.name, key.value)
```

Before exporting, apply all modifiers that affect vertex count—Subdivision Surface especially. Morph targets encode absolute vertex positions, so the vertex count at export must match the Basis exactly. A subdivision modifier left un-applied will silently zero out your blend shapes on import.

FBX Export Settings That Preserve Blend Shapes

FBX Export Settings That Preserve Blend Shapes — illustrated

In Blender's FBX exporter (`File → Export → FBX`), the critical settings are:

| Setting | Value | Why |
|---|---|---|
| Apply Scalings | FBX Units Scale | Prevents 100× scale mismatch in UE5 |
| Forward | -Z Forward | Matches UE5 coordinate system |
| Up | Y Up | Required for UE5 |
| Apply Unit | ✓ Enabled | Converts Blender metres to UE5 centimetres |
| Mesh → Smoothing | Face | Preserves hard edges |
| Armature → Add Leaf Bones | ✗ Disabled | Prevents phantom bones in UE5 |
| Mesh → Shape Keys | ✓ Enabled | This exports blend shapes |

The Shape Keys checkbox is easy to miss — it's buried in the Geometry section of the export dialog. Without it, the FBX contains no morph data.

Export as Binary FBX (not ASCII). UE5 handles both, but binary is smaller and parses faster. File size with 52 blend shapes on a 15,000-poly head mesh is typically 4–8 MB — expect that.

Importing Morph Targets into Unreal Engine 5

Drag the FBX into the Content Browser. In the import dialog:

After import, open the Skeletal Mesh asset. In the Morph Target Preview panel on the right, you'll see a list of all imported targets. Scrub each slider to 1.0 and verify the mesh deforms correctly. If the list is empty, the FBX export missed the Shape Keys checkbox — re-export.

UE5 stores morph target data in the LOD0 section of the skeletal mesh. If you have LODs, each LOD must have its own matching morph target data — UE5 will not automatically propagate morph targets down LOD levels. Generate LODs *before* rigging and shaping, or regenerate them after using the LOD Settings in the Skeletal Mesh editor with Regenerate LODs enabled.

Driving Morph Targets at Runtime via Blueprint and C++

Driving Morph Targets at Runtime via Blueprint and C++ — illustrated

Morph targets are controlled through the `Set Morph Target` function on a `Skeletal Mesh Component`. In Blueprint:

  1. Get a reference to the character's Skeletal Mesh Component
  2. Call Set Morph Target with the target name (string) and a float 0.0–1.0
  3. Call this in Tick or via Timeline for smooth interpolation

```cpp
// C++ equivalent — call in your character's Tick or via a curve asset
GetMesh()->SetMorphTarget(FName("mouth_open"), BlendValue);
```

For blending multiple targets simultaneously — like a smile that also raises the cheeks — drive each independently. Facial animation rigs often stack 6–12 targets per expression. Keep the blend math in a dedicated Animation Blueprint using the Modify Curve node rather than Blueprint Tick; the Anim Graph runs on a worker thread and is significantly cheaper.

UE5's Pose Asset system is a cleaner approach for complex rigs. Create a Pose Asset from your Skeletal Mesh, store named poses (each encoding multiple morph target values + bone transforms), and blend between poses using Pose Blender nodes in the Anim Graph. This is how MetaHuman facial animation works under the hood.

Performance checklist:

Debugging Common Import Failures

Three problems account for 90% of broken imports:

1. Empty morph target list after import. Shape Keys checkbox was unchecked in the Blender FBX exporter. Re-export with it enabled.

2. Morph targets import but deform incorrectly. The mesh was modified after shape keys were created — a vertex was added or removed, breaking the index mapping. In Blender, delete all shape keys, finalize the mesh geometry, then recreate them.

3. Scale is wrong — the morph deformation is huge or tiny. The Apply Scalings setting was wrong at export. Set to `FBX Units Scale` and re-export. In UE5 reimport, also check `Convert Scene Unit` is enabled.

If only some shape keys import and others don't, check for duplicate names. UE5 drops duplicates silently — rename any conflicting keys in Blender before export.

Sourcing Pre-Rigged Characters with Morph Targets

Building a 52-key facial rig from scratch takes days. For indie projects, starting with a pre-rigged asset from a marketplace and adding custom blend shapes on top cuts that to hours. The BitSoul marketplace carries humanoid character meshes in GLB and FBX format, many already including basic expression blend shapes compatible with standard Unreal Engine 5 Skeletal Mesh imports.

When evaluating marketplace characters for morph target compatibility, check:
- Polygon count on the face mesh (under 8,000 for mobile; up to 25,000 for PC)
- Whether blend shape names follow ARKit or a custom convention
- Whether the rig uses a separate head mesh (common in UE5 modular characters) or a unified body mesh

A modular head/body split is generally better for facial animation — it lets you swap heads between characters and keeps morph target evaluation isolated to the head component.

Conclusion

Morph targets are a precise, GPU-efficient tool for expressive character animation when set up correctly. The full pipeline is: shape keys authored in Blender → exported via FBX with Shape Keys enabled → imported into UE5 with Import Morph Targets on → driven at runtime via Pose Asset or direct `SetMorphTarget` calls in the Anim Graph. Each step has one or two critical settings that silently break the chain if missed — now you know where to look.

For ready-to-import characters and environment assets that skip the rigging groundwork, explore the BitSoul marketplace and get straight to building your game.

Tags: Unreal Engine 5 morph targets facial animation Blender shape keys game characters FBX export

Skip the modelling — download it instead

A free BitSoul account gets you 2 game-ready models every month plus 25 AI Engine credits to generate one of your own, no card required. Clean topology, PBR textures, and GLB downloads that drop straight into Unreal, Unity, Godot or Blender — plus OBJ and 3D-printable STL export.

Create a free account → Browse 846 models