Morph targets / blend shapes

Preset versions of the same mesh blended with sliders, so a face can smile, blink, and form speech shapes without changing topology.

blend between two mesh shapesmake the face smilefacial expression slidersanimate a mouth without bonesshape keyshow do memoji faces copy my expressionmesh morphingmorf targets

See it

Live demo coming soon

What it is

A morph target stores an alternate position, and sometimes normal, for each vertex in a mesh. A weight blends that target with the base shape: 0 means neutral, 1 means the full target, and several targets can be mixed at once. Blender calls them shape keys; film and game tools often call them blend shapes.

They are the direct tool for facial expressions, speech visemes, eye blinks, muscle bulges, and controlled shape changes that bones handle poorly. Apple's ARKit face tracking exposes a standard set of 52 blend shapes, which is why so many avatar pipelines reuse those names. glTF stores morph targets and their weight animation, so named expressions authored in Blender can arrive in three.js with the model.

Gotcha: every target must keep exactly the same vertex count and vertex order as the base mesh. Retopologize first, then sculpt targets; editing topology afterward invalidates them. Targets also consume memory in proportion to vertex count, and combining extreme expressions can collapse lips or cheeks unless the target set includes corrective shapes.

Ask AI for it

Create Blender shape keys named Neutral, Blink_L, Blink_R, JawOpen, Smile_L, Smile_R, and the visemes AA, EE, OH, and FV on this head mesh. Keep vertex count and order identical across every key, add corrective keys for JawOpen plus Smile_L and JawOpen plus Smile_R, and export the mesh as GLB with morph targets and normals. In three.js, load it with GLTFLoader, resolve indices through morphTargetDictionary, drive weights through morphTargetInfluences, and crossfade each expression over 120ms instead of snapping.

You might have meant

rigging skinning skeletal animationmesh geometrygltf glbsurface normals backface cullingbaking