Facial Animation
Morph targets, blend shapes, VRM expressions — make your character feel things.
What Are Morph Targets?
Morph targets (also called blend shapes) are pre-sculpted deformations of a mesh. Each morph target represents a specific facial pose — a smile, a frown, an eyebrow raise, puffed cheeks. By blending between the base mesh and these target shapes, you create smooth, convincing facial animation.
Unlike skeletal animation (bones rotating), morph targets move individual vertices. This makes them perfect for soft tissue deformation like facial muscles, lip sync, and eye movement.
VRM Expressions
VRM models come with a standardized expression set. These aren't just arbitrary blend shapes — they're semantic expressions that any VRM-compatible runtime can understand:
| Expression | What It Does |
|---|---|
| Happy | Smile, raised cheeks |
| Angry | Furrowed brows, tight mouth |
| Sad | Downturned mouth, raised inner brows |
| Surprised | Wide eyes, open mouth |
| Relaxed | Neutral-positive, slight smile |
| Blink | Both eyes close |
| BlinkLeft / BlinkRight | Individual eye winks |
| LookUp / LookDown | Eye gaze direction (morph-based) |
| LookLeft / LookRight | Eye gaze direction (morph-based) |
The Multi-Mesh Challenge
Here's a gotcha that trips up many 3D tools: VRoid Studio splits morph targets across multiple SkinnedMeshes. The face mesh has some blend shapes, the body mesh has others, the hair mesh has even more. If your tool only applies morphs to one mesh, you get broken expressions.
BlackBox solves this automatically. When a morph target is activated, the engine applies it to every SkinnedMesh in the model that contains that blend shape. No manual configuration. No "which mesh is the face mesh?" guessing game.
A "smile" expression might deform the face mesh, the body mesh (for cheek geometry that overlaps), and even the mouth interior mesh. BlackBox hits all of them simultaneously. This is why VRM expressions look correct in BlackBox but often break in simpler viewers.
Export Profiles & Optimization
Morph targets are the biggest contributor to GLB file size. A model with dozens of blend shapes can easily hit 50+ MB. BlackBox gives you control over this trade-off:
| Profile | What's Included | File Size |
|---|---|---|
| Full (Video) | All morph targets, full precision deltas | ~12.9 MB |
| Game | Essential expression morphs, zero-delta pruning, influence reset | ~6–7 MB |
| None | No morph targets at all | ~5 MB |
Select the profile in the export dropdown before exporting. The Game profile is the sweet spot for most use cases — you keep the important expressions while cutting file size in half.
Many morph targets contain vertices that don't actually move (zero deltas). These waste space. The optimizer strips them out. It also resets influence weights on unused blend shapes to prevent "bleed" from corrupting nearby morph targets. The result: same visual quality, dramatically smaller files.