Rue du Bugnon 9, CH-1005, Lausanne, VD, Switzerland
+41 21 692 51 06 (Prof. J-Y. Chatton, Coordinator)
Contact : supportcif@unil.ch

Morph Target Animation New ((exclusive))

Morph Target Animation: The New Standard for High-Fidelity Facial & Deformation Systems

In the golden era of real-time graphics, two animation techniques have dominated character rigging: Skeletal Animation (bones) and Morph Target Animation (blend shapes). While skeletal animation handles the gross movement of limbs, morph target animation is experiencing a renaissance. It has become the new non-negotiable standard for realistic facial expressions, muscle bulging, and corrective shapes.

But why "new"? Because modern GPU power and next-gen engine features (like Unreal Engine 5's MetaHuman and Unity's Digital Human package) have removed the old limitations, allowing artists to sculpt detail pixel-perfectly.

4. Production pipelines

Practical tip: provide animators with both macro (high-level) controls and access to raw sliders; macro controls call multiple underlying blendshapes with mapped weights for expressive leverage.

Morph Target Animation: A Modern Treatise

Morph target animation (also known as blendshape animation or vertex morphing) is a foundational technique for producing smooth, expressive deformations of a mesh by interpolating between multiple stored vertex configurations. Though decades old, morph targets remain essential in character facial animation, corrective shapes, stylized transformations, and increasingly in real-time applications (games, AR/VR) thanks to improved tooling and GPU techniques. This treatise surveys principles, practical workflows, performance considerations, and advanced practices for “morph target animation—new” (i.e., contemporary usage and innovations). morph target animation new

1. Delta Encoding & Sparse Morph Targets

The old way: Store full vertex positions for each target → huge VRAM waste.

New approach:

Implementation tip (HLSL/GLSL):

// Instead of full vertex buffer per target, use a structured buffer of deltas
struct SparseDelta 
    uint vertexIndex;
    float3 deltaPosition;
    float3 deltaNormal; // optional
;

The vertex shader accumulates only relevant deltas for the current vertex.

A. The Data Structure

For a long piece (e.g., a cat's tail), you do not want to store a morph target for every single frame of an animation. That would be memory prohibitive.

Instead, you use a Dimensional Reduction approach. Morph Target Animation: The New Standard for High-Fidelity

  1. The Base Mesh: The rest pose of the long piece (straight or curled).
  2. The Shapes (Targets): Instead of "Frame 1, Frame 2, Frame 3," you create specific states:
    • Target_A_BendLeft: The piece curves sharply to the left.
    • Target_B_BendRight: The piece curves sharply to the right.
    • Target_C_Slack: The piece becomes loose and wavy.

2. GPU-based Parallel Blending (Compute Shaders)

Instead of blending on the CPU or in the vertex shader serially:

Benefits:

Example kernel concept (simplified):

RWStructuredBuffer<Vertex> outputVertices : register(u0);
StructuredBuffer<MorphDelta> deltas[MAX_TARGETS];
float weights[MAX_TARGETS];

[numthreads(64,1,1)] void MorphBlendCS(uint3 id : SV_DispatchThreadID) uint vertexIdx = id.x; float3 finalPos = basePositions[vertexIdx]; for (int t = 0; t < numActiveTargets; t++) finalPos += deltas[t][vertexIdx].delta * weights[t]; outputVertices[vertexIdx].position = finalPos;