Skip to content

Gesture catalog

Every gesture has a dotted id, emits a start when it begins and an end when it stops, and carries a strength. Subscribe to one id ('blink'), a family ('head.*') or everything ('*').

Starts are stamped at the moment the gesture began, the first frame that crossed the line, not when Mimic became sure of it. A blink confirmed two frames later is still reported at its onset, so faster and slower cameras agree on when it happened.

Thresholds are relative to the player’s calibrated resting face, never absolute.

Id Fires when Needs Strength
blink Both eyes close: the more-open eye drops well below its resting openness. A wink never counts. landmarks How far it closed, 0 to 1
blink.left The player’s left eye closes (in the mirrored, selfie sense). Also fires during a blink. landmarks How far it closed
blink.right The player’s right eye closes. landmarks How far it closed
eyes.away The eyes leave the screen: gaze moves far from its resting point and stays there. Not raised while the eyes are shut. landmarks Distance past the line (1 = at it)
eyes.left, eyes.right The eyes look left or right without turning the head. landmarks Distance past the line
eyes.up The eyes look up. Uses the expression scores when the provider has them, which is far more reliable than the iris alone. landmarks (+ blendshapes recommended) Distance past the line

Want “any eye closed”? Subscribe to blink, blink.left and blink.right.

A held wink tends to make the open eye squint. Once one eye has been shut for a moment, the other only counts as closed if it really closes, so a long wink stays a wink.

There is no eyes.down. Looking down drops the upper eyelids exactly like the start of a blink, and the face tracker can’t tell the two apart, so a look down reads as a blink.

Id Fires when Needs Strength
smile The mouth widens and its corners lift, held for a few frames. Ignored while the eyes are mid-blink. landmarks 0 to 1, a full smile is 1
laugh A smile with the mouth open, held, or opening and closing in pulses. landmarks 0 to 1
mouth.open The lips part well beyond resting, smiling or not. landmarks Opening past the line (1 = at it)
brows.raise Both eyebrows lift clearly above resting. Blinks and wide eyes don’t move it. landmarks Lift past the line (1 = at it)

The mouth and brows are measured in 3D, so tilting the head up or down doesn’t read as a smile, an open mouth or raised brows.

Id Fires when Needs Strength
head.left, head.right The head turns past the line (in the player’s sense: their own left is head.left). pose Angle past the line (1 = at it)
head.up, head.down The head tilts up or down past the line. pose Angle past the line
head.neutral The head is centred. It is the complement of the four directions: it ends before a direction starts and starts after one ends. pose 1
head.tilt.left, head.tilt.right The head tilts sideways, an ear toward that shoulder (the player’s own left is head.tilt.left). Independent of turns and nods. pose Angle past the line (1 = at it)

When tracking drops while the head is already turning (looking far aside is exactly when it drops), the direction is held briefly rather than snapping back to neutral.

Id Fires when Needs Strength
face.found A face appears. none 1
face.lost The face has been missing for several frames in a row. none 1
expression.match The face matches a target expression you set with setExpressionTarget(), for example one read from a photo. blendshapes Similarity, 0 to 1

A provider declares what it can fill: landmarks (the face mesh), blendshapes (expression scores) and pose (head angles). Mimic arms only the gestures the provider can feed, and lists the rest in unsupported with what they’re missing, so a gesture never silently fails to fire. The built-in providers fill all three; on the web and React Native, pass blendshapes: true to turn the expression scores on.