Skip to content
← Back to Blog 3d-modeling

Blend Shapes and Morph Targets for Game Characters: Blender, Unity, and Unreal Engine 5

By BitSoul3D7 min read3,724 views

Facial expressions, lip sync, muscle flexing, cloth deformation — all of these rely on the same underlying technology: blend shapes (also called morph targets or shape keys). Yet this is one of the most misunderstood parts of the 3D-to-game-engine pipeline. Export them wrong and your entire face rig is silent in-engine. Get them right and you unlock some of the most powerful animation tools available in Unity and Unreal Engine 5.

Blend Shapes and Morph Targets for Game Characters: Blender, Unity, and Unreal Engine 5

This guide walks the full pipeline: authoring shape keys in Blender, exporting cleanly via FBX and GLB, then driving them at runtime in both Unity and UE5.

What Are Blend Shapes and Morph Targets?

A blend shape (Unity terminology) or morph target (Unreal Engine terminology) is a stored vertex-position delta — a snapshot of how each vertex moves from its rest position to a deformed state. At runtime the engine interpolates between the base mesh and one or more targets using a 0–1 weight value.

They are completely separate from skeletal animation. Bones rotate joints; blend shapes move individual vertices. The two systems work in parallel: a character can have a skeleton driving limb movement while blend shapes simultaneously drive facial expressions or muscle bulges.

Common use cases:

One key performance note: blend shapes are computed on the CPU (or a compute shader pass) per frame, so keep the vertex count on morphed meshes as low as possible. Shapes that affect the full body are expensive; isolate facial meshes from body meshes where feasible.

Creating Blend Shapes in Blender: Shape Keys

Blender calls these Shape Keys, found in the Object Data Properties panel (the green mesh icon) under the Shape Keys section.

Basic workflow

  1. Select your mesh in Object mode.
  2. In the Shape Keys panel click + to add a Basis key — this is the rest pose.
  3. Click + again to add a new key (e.g. mouth_open). Blender automatically names it Key 1; rename it immediately — the name becomes the blend shape name in-engine.
  4. Enter Edit mode. Move, sculpt, or use proportional editing to deform vertices into the target shape.
  5. Return to Object mode. Set the Value slider to 1.0 to preview the morph.

Shape key naming conventions

Use descriptive, consistent names from day one. Unity preserves the exact Blender name in SkinnedMeshRenderer.blendShapes; Unreal does the same in Pose Assets. A set like brow_raise_L, brow_raise_R, jaw_open, eye_blink_L, eye_blink_R maps cleanly to FACS and makes runtime code readable.

Avoid spaces in names — use underscores. Some engine importers stumble on spaces.

Relative vs. absolute shape keys

By default Blender uses relative shape keys: each key is a delta from a reference key (usually Basis). This is what game engines expect. Absolute shape keys are a Blender-specific animation tool and do not export correctly — keep relative mode on.

# Blender Python: list all shape keys and their current values
import bpy

obj = bpy.context.active_object
if obj.data.shape_keys:
    for kb in obj.data.shape_keys.key_blocks:
        print(f"{kb.name}: {kb.value:.3f}")

Relative vs. absolute shape keys — illustrated

Exporting Morph Targets via FBX and GLB

Shape keys survive export only if you tick the right options. This is where most pipelines silently break.

FBX export (File → Export → FBX)

In the FBX export dialog:

SettingValue
Apply ScalingsFBX Units Scale
Forward-Z Forward
UpY Up
Mesh > SmoothingFace (or Normals Only)
Armature > Add Leaf BonesOff
Geometry > Apply ModifiersOn (unless using subdivision — see note)

Critical: Blend shapes are geometry data. If you have a Subdivision Surface modifier above the Armature modifier in the stack and export with Apply Modifiers ON, your blend shapes on the unsubdivided mesh are lost. Workaround: keep the subdivision modifier below or separate the mesh into a no-modifier export copy.

GLB/GLTF export

GLTF 2.0 natively supports morph targets as mesh.primitives[].targets. In Blender's GLTF exporter, shape keys export automatically — no extra checkbox needed. GLTF is generally the cleaner choice for web targets and Godot 4; FBX remains more reliable for Unreal's import pipeline.

# Blender CLI batch export to FBX with shape keys preserved
blender --background scene.blend --python-expr "
import bpy
bpy.ops.export_scene.fbx(
    filepath='/output/character.fbx',
    use_selection=False,
    add_leaf_bones=False,
    bake_anim=True,
    use_mesh_modifiers=True
)"

Using Morph Targets in Unity

Unity imports FBX blend shapes automatically into SkinnedMeshRenderer. No extra import setting is needed — they appear under the BlendShapes foldout in the Inspector.

Runtime control via script

using UnityEngine;

public class BlendShapeController : MonoBehaviour
{
    SkinnedMeshRenderer smr;
    int jawOpenIndex;

    void Start()
    {
        smr = GetComponent<SkinnedMeshRenderer>();
        // GetBlendShapeIndex returns -1 if name not found
        jawOpenIndex = smr.sharedMesh.GetBlendShapeIndex("jaw_open");
    }

    // weight: 0–100 (Unity uses 0–100, not 0–1)
    public void SetJawOpen(float weight)
    {
        if (jawOpenIndex >= 0)
            smr.SetBlendShapeWeight(jawOpenIndex, weight);
    }
}

Gotcha: Unity's blend shape weights run 0 to 100, not 0 to 1. This catches everyone at least once.

Animating blend shapes in the Unity Animator

Blend shapes are animatable properties. In the Animation window, record mode will capture SkinnedMeshRenderer.blendShape.<name> curves. This is how you author facial animation clips directly in Unity without importing animated shape key data from Blender.

For lip sync, tools like Oculus LipSync, Salsa LipSync, and uLipSync all drive Unity blend shape weights automatically from audio — just make sure your viseme shape names match the tool's expected naming convention.

Animating blend shapes in the Unity Animator — illustrated

Driving Morph Targets in Unreal Engine 5

Unreal imports FBX morph targets and stores them in the Skeletal Mesh asset. You can preview them in the mesh editor under the Morph Target Previewer panel.

Blueprint approach

In an Animation Blueprint, use the Set Morph Target node inside the AnimGraph or as a function call from Blueprint:

// In C++ (USkeletalMeshComponent)
SkeletalMeshComp->SetMorphTarget(FName("jaw_open"), 0.75f);

In Blueprint: Set Morph Target node, target = your Skeletal Mesh Component, Morph Target Name = jaw_open, Value = float 0–1.

Pose Assets (UE5 recommended workflow)

Unreal Engine 5 introduced Pose Assets as a first-class morph target container. Import your FBX, then in the Content Browser right-click the animation → Create Pose Asset. This lets you drive expressions via Pose Driver nodes and blends them with the full animation graph.

For MetaHuman-compatible facial rigs, the Pose Asset approach is mandatory — the Control Rig for MetaHuman drives 130+ morph targets via Pose Assets under the hood.

Performance checklist for morph targets in UE5

For rigging context that pairs with blend shapes, see how to rig a 3D character for Unity and animation retargeting across engines.

Blend Shape Best Practices: Quick Reference

ConcernRecommendation
Shape key countKeep under 50 per mesh for real-time characters
Vertex count on face meshAim for 3k–8k verts; isolate from body
Namingsnake_case, no spaces, FACS-aligned
Export formatFBX for UE5; GLB for Unity/Godot/web
Unity weight range0–100 (not 0–1)
UE5 weight range0–1
Corrective shapesAuthor in relative mode, reference the pose not Basis
LODsStrip low-priority shapes from LOD2 and above

Blend shapes are an underused superpower in real-time character pipelines. When integrated properly — clean Blender shape keys, correct FBX export settings, runtime scripting in Unity or UE5 — they add an enormous amount of life and expressiveness to characters at relatively low runtime cost. Explore production-ready character assets and full-body rigs with pre-built morph targets on the BitSoul marketplace, where assets are validated for Unity and Unreal Engine 5 compatibility out of the box. Open any character model in BitSoul's 3D Studio to inspect blend shape targets in the browser before downloading.


This post is part of the Ultimate Guide to Free 3D Game Assets — BitSoul's complete reference for formats, texturing, rigging, optimization, and engine integration.


Build with real assets: grab the 98-model Character Pack on the BitSoul marketplace and drop them straight into your project.

Tags: characters

Skip the modeling — download it instead

A free BitSoul3D account gets you 2 GLB downloads every month for personal use plus 25 one-time AI Engine credits, no card required. PBR-textured GLB downloads with a full 3D preview before you buy, for Unreal, Unity, Godot or Blender — OBJ and 3D-printable STL come with any purchase or paid plan.

Browse 1,051 models — from $4.99 → or start free (2 downloads a month)