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.
Mouth and brows
Section titled “Mouth and brows”| 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.
Face and expression
Section titled “Face and expression”| 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 |
Capabilities
Section titled “Capabilities”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.