Blendshapes vs. Bone-Based Rigging

Two ways to make a face move — sculpting every expression by hand, or hanging the skin on a skeleton of bones. Here’s how they actually work, where each one breaks down, and why the industry standard for facial performance is blendshapes.

Blendshapes Morph Targets

Sculpted vertex positions, blended by weight.

Each expression is a complete snapshot of where every vertex should sit. At runtime the engine mixes between these snapshots using a set of normalized weights — one per shape.

  • Per-vertex precision: every pore, wrinkle, and bulge is authored directly.
  • No skeleton required — the deformation is the data.
  • The standard behind Apple ARKit, MetaHuman, and most real-time face tracking.

Bone-Based LBS Linear Blend Skinning

Vertices weighted to a hierarchy of transformable bones.

A skeleton is bound to the mesh. Each vertex is assigned to one or more bones with a weight, and every frame the vertex position is the weighted sum of where those bones carry it.

  • Compact: animation is just a stream of bone transforms, not vertex data.
  • Reusable: one skeleton can drive many meshes; one animation can drive many characters.
  • The workhorse of body animation in every game engine and DCC tool.

How blendshapes work

You start with a base mesh — the neutral face. For every expression you want (a smile, a blink, a jaw open), you sculpt a target shape: the same mesh topology with vertices moved into that expression. The engine stores only the delta, the difference between the target and the base.

At render time, the final position of each vertex is the base position plus the sum of every active shape’s delta, scaled by its weight:

v′ = vbase + Σ (wi · Δi)
// v' = final position
// w_i = weight of shape i (0.0 – 1.0)
// Δi = per-vertex delta of shape i

Because every shape is a complete, hand-authored sculpture of one facial action, the result is only as good as the artistry that went into the targets — which is exactly why a skilled rigger matters. A set of 52 ARKit blendshapes (the set we rig every mesh to) gives you a basis that spans practically every expression a human face can make, and any expression can be expressed as a combination of those 52 weights.

How bone-based linear blend skinning works

A skeleton is a hierarchy of bones. In the bind pose (the neutral T- or A-pose), every vertex is assigned to one or more bones with skinning weights that sum to 1.0. Each bone has a transform (rotation, translation, and sometimes scale). Every frame, the engine computes, for each bone, a skin matrix that takes vertices from bind-pose space into that bone’s current animated space.

Each vertex is then transformed by every bone it’s weighted to, and the results are blended together:

v′ = Σ (wi · Mi · v)
// v' = final position
// w_i = skinning weight of bone i
// M_i = skin matrix of bone i (current → animated space)
// v = bind-pose position

This is efficient and elegant for limbs: an elbow is basically a hinge joint, and a couple of bones with well-painted weights can bend it convincingly. The same math, applied to a face, is where things get complicated.

Head-to-head

Neither technique is universally “better.” They optimize for different things. Here’s where the trade-offs land in practice:

Factor Blendshapes Bone-Based LBS
What's authored A full sculpt per expression (per-vertex deltas). A skeleton + per-vertex skinning weights.
Typical count Dozens to hundreds of shapes (ARKit: 52). Dozens of bones (a face rig might use 30–80).
Memory / file size Large — every shape stores a delta for every vertex. 50 shapes on a 20k-vertex face ≈ several MB of delta data. Small — animation is just bone transforms per frame; the skinning weights are a fixed, one-time cost.
Runtime cost Cheap and GPU-friendly: one base buffer + a few weighted deltas, computed in the vertex shader. Cheap and GPU-friendly: matrix-palette skinning, bounded by max bones per vertex (usually 4).
Fidelity of subtle detail Excellent — captures skin sliding, wrinkles, bulges, and asymmetry exactly as sculpted. Limited — detail is constrained by bone count and weight-painting resolution; soft-tissue dynamics are hard to fake.
Reusability Low — shapes are tied to one mesh topology. Transferring to a new head means re-authoring or retargeting. High — one skeleton drives many meshes; one animation clip retargets across characters.
Authoring skill Sculpting / shape-key artistry (intuitive, visual). Rigging + weight painting (technical, tedious to tune).
Best for… Faces, phonemes, emotional expression, any deformation that isn’t a clean hinge. Limbs, spines, tails, jaws-as-hinges — anywhere motion is dominated by rotation around a joint.

The volume problem (why bones struggle on faces)

Linear blend skinning has a well-known flaw: because it linearly blends the skin matrices, the result is not a pure rotation — it’s a matrix that includes shear and non-uniform scale. The visible symptom is volume loss at extreme angles. Bend an elbow 90° with two bones and the inner elbow pinches to almost nothing; the classic demo is a cylinder that collapses like a candy wrapper. Hence the name: the candy-wrapper artifact.

You can fight it with extra bones, with dual-quaternion skinning (which preserves rigidity better), or with corrective blendshapes that fire at extreme angles to restore volume. But notice where that last fix landed: you reached for blendshapes to fix the bones.

A face is almost nothing but the kind of deformation LBS handles poorly — soft tissue compressing, stretching, and sliding over bone, with no clean hinge joints anywhere except the jaw. Painting skinning weights fine enough to make a cheek fatten realistically as the mouth fills with air, or to make the skin bunch at the outer eye on a smile, is enormously labor-intensive and still rarely matches a sculpted target. That is the core reason the facial-animation standard settled on blendshapes.

Why ARKit (and FaceRigging) uses blendshapes

Apple’s ARKit face tracker doesn’t track bones. It fits a statistical face model to the camera image and outputs a vector of 52 normalized coefficients — one per predefined facial action. Those coefficients are, by definition, blendshape weights. The whole capture pipeline is built around them:

  • Tracking outputs weights — the neural network directly predicts blendshape coefficients, not bone transforms.
  • 52 shapes cover the action units — together they span the Facial Action Coding System (FACS), so any expression is reachable as a weighted combination.
  • Engine support is universal — glTF, USD, MetaHuman, ARKit, ARCore, and every major game engine consume blendshapes natively.
  • Deterministic and portable — the same 52 weights drive the same expression on any mesh rigged to the ARKit preset.

When we rig a mesh for you, we author those 52 ARKit blendshapes by hand so your mesh can be driven by any ARKit source — iPhone face capture, Live Link Face, MetaHuman Animator, or any pipeline that speaks the ARKit coefficient vector. That is the lingua franca of real-time facial performance right now.

Hybrid rigs: the best of both

In practice, high-end face rigs are usually hybrid. The two techniques aren’t mutually exclusive, and production rigs exploit each where it’s strongest:

  • Bones for the jaw, neck, and eye look-at. The jaw really is a hinge near the condyle, so a bone (or two) handles jaw-open and jaw-slide efficiently and lets the animator key a clean rotation.
  • Blendshapes for everything the bones can’t do. Lip corners, brow raises, cheek puffs, nose sneers, and the fine mouth shapes for speech all live as morph targets.
  • Bones driving blendshapes. A common pattern is to hook the jaw-open bone rotation to a set of corrective jaw blendshapes, so the hinge sets the gross pose and the shapes restore the soft-tissue volume the bone alone would lose.

The result is a rig where the animator works with intuitive controls, the skinning math stays cheap, and the final surface is as faithful as a sculpted target. Our standard rig focuses on the 52 ARKit blendshapes because that’s the portable, engine-agnostic core; if you need a bone-based jaw or control rig for Blender, that’s available as part of the optional facial control rig.

The verdict

Use blendshapes for the face. Use bones for the joints.

If your goal is faithful facial performance — capturing the way skin slides, fat pads shift, and corners of the mouth curl — blendshapes are the right tool and the industry standard. Bone-based LBS remains the right tool for bodies, limbs, and any motion dominated by clean rotational joints. The strongest production rigs combine both, using bones for gross pose and blendshapes for surface truth.