

# VAD → ARKit 52 Blendshape Mapping: Complete Emotion Analysis

This is a comprehensive reference for mapping emotions to ARKit blendshape activation patterns. All values are approximate targets at "moderate" intensity unless otherwise noted; I include intensity scaling notes for each emotion.

---

## 1. JOY / HAPPINESS (Duchenne Smile)

**FACS basis**: AU6 (cheek raiser) + AU12 (lip corner puller). The Duchenne marker is AU6 — the orbicularis oculi engagement that distinguishes genuine from social smiles.

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browInnerUp | 0.05–0.15 | Slight lift from overall facial elevation; NOT a primary driver |
| | browOuterUpLeft/Right | 0.0–0.10 | Minimal; brows stay relatively neutral in genuine joy |
| **Eye** | eyeSquintLeft/Right | **0.50–0.75** | **KEY DUCHENNE MARKER** — orbicularis oculi contraction pushes lower lid up, creating crow's feet |
| | eyeBlinkLeft/Right | 0.10–0.25 | Partial lid closure from cheek push-up; not a volitional blink |
| | eyeWideLeft/Right | 0.0 | Eyes narrow, not widen |
| **Cheek** | cheekSquintLeft/Right | **0.55–0.80** | **PRIMARY DRIVER** — cheek mass pushes upward; directly coupled with eyeSquint |
| | cheekPuff | 0.0–0.05 | Cheeks lift, not puff |
| **Mouth** | mouthSmileLeft/Right | **0.65–0.90** | **PRIMARY DRIVER** — zygomaticus major pulls corners up and laterally |
| | mouthUpperUpLeft/Right | 0.10–0.20 | Upper lip rises slightly, may expose upper teeth |
| | mouthDimpleLeft/Right | 0.10–0.25 | Nasolabial fold deepens |
| | mouthPressLeft/Right | 0.0–0.10 | Lips may press slightly in a contained smile |
| | jawOpen | 0.0–0.30 | 0 for closed-mouth smile; 0.20–0.30 for open-mouth laugh |
| | mouthStretchLeft/Right | 0.05–0.15 | Slight lateral stretch from zygomatic pull |
| **Nose** | noseSneerLeft/Right | 0.05–0.15 | Mild nasal wing lift from cheek elevation |

### Intensity Scaling
- **Mild (content smile)**: mouthSmile 0.30–0.45, eyeSquint 0.20–0.35, cheekSquint 0.25–0.40
- **Moderate (happy)**: Values as listed above
- **Intense (elated/laughing)**: mouthSmile 0.85–1.0, eyeSquint 0.75–0.90, cheekSquint 0.80–0.95, jawOpen 0.25–0.45, browInnerUp 0.15–0.25
- **Extreme (ecstatic laughter)**: jawOpen 0.40–0.65, add mouthFunnel 0.05–0.15 for open-mouth rounding during laugh vocalization

### Temporal Pattern
cheekSquint and mouthSmile onset nearly simultaneously (within ~50ms) → eyeSquint follows from mechanical cheek push (~80ms) → jawOpen if laughing (~150ms after smile onset). Decay is gradual — the Duchenne markers (eyeSquint, cheekSquint) persist longer than the mouth shape during genuine joy.

---

## 2. ANGER (Mild Irritation → Rage)

**FACS basis**: AU4 (brow lowerer) + AU5 (upper lid raiser) + AU7 (lid tightener) + AU23 (lip tightener) + AU24 (lip pressor). At higher intensities: AU9 (nose wrinkler), AU10 (upper lip raiser), AU25/26 (jaw drop).

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browDownLeft/Right | **0.60–0.85** | **PRIMARY DRIVER** — corrugator supercilii pulls brows down and medially, creating vertical furrows |
| | browInnerUp | 0.0 | Brows descend, not rise |
| | browOuterUpLeft/Right | 0.0 | Both inner and outer brow lower |
| **Eye** | eyeSquintLeft/Right | 0.30–0.50 | Lid tightening from orbicularis oculi tension (AU7) |
| | eyeWideLeft/Right | 0.15–0.40 | **Paradoxical co-activation** — upper lid raises (levator palpebrae) while lower lid tightens, creating an intense glare. This is key to the "anger stare." |
| | eyeBlinkLeft/Right | 0.0–0.10 | Eyes stay open and fixed |
| **Cheek** | cheekSquintLeft/Right | 0.15–0.30 | Secondary to eye squint |
| | cheekPuff | 0.0 | Not relevant |
| **Mouth** | mouthFrownLeft/Right | 0.20–0.45 | Depressor anguli oris pulls corners down |
| | mouthPressLeft/Right | **0.45–0.70** | **KEY MARKER** — lip compression indicates suppressed vocalization / tension |
| | mouthStretchLeft/Right | 0.10–0.25 | Platysma tension stretches mouth laterally |
| | mouthRollLower | 0.15–0.30 | Lower lip rolls inward from tension |
| | mouthRollUpper | 0.10–0.20 | Upper lip tightens |
| | mouthShrugLower | 0.10–0.20 | Mentalis contraction pushes chin boss up |
| | jawOpen | 0.0–0.15 (suppressed) / 0.35–0.60 (rage) | Clenched jaw vs. snarling open mouth |
| | mouthUpperUpLeft/Right | 0.15–0.35 (at high intensity) | Upper lip snarl at high anger |
| **Nose** | noseSneerLeft/Right | **0.35–0.65** | **KEY MARKER** — levator labii superioris alaeque nasi wrinkles the nose bridge; highly characteristic of anger |

### Intensity Scaling
- **Mild (irritation)**: browDown 0.25–0.40, mouthPress 0.20–0.35, noseSneer 0.10–0.20, mouth relatively neutral
- **Moderate (anger)**: Values as listed above
- **Intense (fury)**: browDown 0.80–1.0, noseSneer 0.60–0.85, jawOpen 0.30–0.50, mouthUpperUp 0.30–0.50 (snarl), eyeWide 0.35–0.55
- **Extreme (rage)**: All above maxed; add jawOpen 0.50–0.70, mouthStretch 0.30–0.45 for bared-teeth aggression display

### Temporal Pattern
browDown activates first (threat assessment, ~100ms) → noseSneer and mouthPress co-activate (~200ms) → eyeWide intensifies if anger escalates → jawOpen last if vocalization/shouting begins. In suppressed anger, the sequence stalls at mouthPress with jaw clenched.

---

## 3. SADNESS (Melancholy → Grief)

**FACS basis**: AU1 (inner brow raiser) + AU4 (brow lowerer) + AU15 (lip corner depressor). The AU1+AU4 combination — inner brow raise with brow knit — is the "grief brow" and is extremely difficult to produce voluntarily, making it a reliable sadness marker.

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browInnerUp | **0.55–0.80** | **PRIMARY MARKER** — frontalis medialis lifts the inner brow, creating the oblique brow shape |
| | browDownLeft/Right | **0.25–0.45** | Co-activation with browInnerUp creates the "knit" — outer brow descends while inner rises. This is the grief brow. |
| | browOuterUpLeft/Right | 0.0–0.05 | Outer brow stays low or descends |
| **Eye** | eyeSquintLeft/Right | 0.15–0.35 | Mild tension from emotional strain, not cheek-driven |
| | eyeBlinkLeft/Right | 0.10–0.20 | Heavier lids from muscle fatigue / pre-cry tension |
| | eyeWideLeft/Right | 0.0 | Eyes droop, not widen |
| | eyeLookDownLeft/Right | 0.20–0.45 | Gaze aversion — looking down is characteristic of sadness |
| **Cheek** | cheekSquintLeft/Right | 0.10–0.20 | Mild; from eye squint coupling |
| | cheekPuff | 0.0 | Not relevant |
| **Mouth** | mouthFrownLeft/Right | **0.45–0.70** | **PRIMARY DRIVER** — depressor anguli oris pulls mouth corners down strongly |
| | mouthPressLeft/Right | 0.20–0.40 | Lip compression from trying to suppress crying |
| | mouthStretchLeft/Right | 0.15–0.30 | Platysma engagement in deep sadness |
| | mouthShrugLower | 0.20–0.40 | **KEY MARKER** — mentalis contraction pushes chin up, creating chin dimpling/trembling |
| | mouthRollLower | 0.10–0.25 | Lower lip pulled inward |
| | mouthLowerDownLeft/Right | 0.10–0.25 | Lower lip drops in grief/cry |
| | jawOpen | 0.05–0.20 | Slight opening, more in active crying (0.25–0.40) |
| | mouthPucker | 0.05–0.15 | Slight lip protrusion in pre-cry face |
| **Nose** | noseSneerLeft/Right | 0.10–0.25 | Mild nasal involvement in cry face |

### Intensity Scaling
- **Mild (melancholy)**: browInnerUp 0.25–0.40, mouthFrown 0.20–0.35, eyeLookDown 0.15–0.25, subtle overall
- **Moderate (sadness)**: Values as listed above
- **Intense (grief/crying)**: browInnerUp 0.75–0.95, mouthFrown 0.65–0.85, mouthShrugLower 0.40–0.60, jawOpen 0.25–0.40, eyeSquint 0.35–0.55, mouthStretch 0.25–0.40
- **Extreme (sobbing)**: Add jawOpen 0.40–0.60, mouthPucker 0.15–0.30, noseSneer 0.25–0.40, rapid oscillation of mouthShrugLower (chin tremble)

### Temporal Pattern
browInnerUp onset first (inner emotional recognition, ~150ms) → mouthFrown follows (~250ms) → mouthShrugLower (chin quiver) if intensifying → eyeSquint + mouthStretch in active crying. The grief brow (browInnerUp + browDown co-activation) is the earliest and most persistent marker — it can precede any mouth movement by several hundred milliseconds.

---

## 4. SURPRISE

**FACS basis**: AU1 (inner brow raise) + AU2 (outer brow raise) + AU5 (upper lid raise) + AU26/27 (jaw drop). Surprise is the most rapid-onset emotion — full expression within ~200ms.

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browInnerUp | **0.65–0.90** | **PRIMARY DRIVER** — entire frontalis contracts, lifting the full brow arch |
| | browOuterUpLeft/Right | **0.60–0.85** | Both inner and outer brow rise high — this is what distinguishes surprise from sadness (sadness only raises inner brow) |
| | browDownLeft/Right | 0.0 | Brows fully release downward |
| **Eye** | eyeWideLeft/Right | **0.65–0.90** | **PRIMARY DRIVER** — levator palpebrae fully retracts upper lid, exposing sclera above iris |
| | eyeSquintLeft/Right | 0.0 | Eyes open wide, no squint |
| | eyeBlinkLeft/Right | 0.0 | Lids fully retracted |
| **Cheek** | cheekSquintLeft/Right | 0.0 | No cheek engagement |
| | cheekPuff | 0.0 | Not relevant |
| **Mouth** | jawOpen | **0.35–0.60** | **PRIMARY DRIVER** — mandible drops passively from muscle relaxation |
| | mouthFunnel | 0.20–0.40 | Lips form an "O" shape — orbicularis oris partially contracts |
| | mouthPucker | 0.05–0.15 | Slight lip protrusion contributing to the "O" |
| | mouthSmileLeft/Right | 0.0 | Neutral corners (unless blending to positive surprise) |
| | mouthFrownLeft/Right | 0.0 | Neutral corners |
| | mouthStretchLeft/Right | 0.10–0.20 | Slight lateral stretch from jaw drop |
| **Nose** | noseSneerLeft/Right | 0.0 | No nasal involvement |

### Intensity Scaling
- **Mild (interested)**: browInnerUp 0.30–0.45, browOuterUp 0.25–0.40, eyeWide 0.25–0.40, jawOpen 0.10–0.20
- **Moderate (surprised)**: Values as listed above
- **Intense (shocked)**: browInnerUp 0.85–1.0, browOuterUp 0.80–1.0, eyeWide 0.85–1.0, jawOpen 0.55–0.75, mouthFunnel 0.35–0.55
- **Extreme (stunned)**: All maxed at 0.90–1.0; jaw drops to 0.70–0.85

### Temporal Pattern
Surprise is the fastest emotion — the entire pattern activates within one or two frames at 30fps. eyeWide and browInnerUp/browOuterUp onset nearly simultaneously (within ~30ms) → jawOpen follows (~80ms after brow/eye onset). Surprise is also the shortest-duration emotion; it decays or transitions to another emotion (fear, joy, anger) within 500ms–2s.

---

## 5. FEAR (Worry → Terror)

**FACS basis**: AU1+AU2 (brow raise) + AU4 (brow lower) + AU5 (upper lid raise) + AU7 (lid tighten) + AU20 (lip stretch) + AU26 (jaw drop). Fear shares brow-raise with surprise but adds the brow-knit (AU4) component and horizontal lip stretch rather than the "O" mouth.

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browInnerUp | **0.60–0.85** | Frontalis engagement similar to surprise, but with brow tension |
| | browOuterUpLeft/Right | 0.30–0.55 | Outer brow rises but LESS than in surprise — this is a key differentiator |
| | browDownLeft/Right | **0.20–0.40** | **KEY DIFFERENTIATOR FROM SURPRISE** — corrugator co-activates, creating a tense, knitted brow rather than the smooth arch of surprise |
| **Eye** | eyeWideLeft/Right | **0.55–0.80** | Upper lid retraction; strong but the co-activating squint makes the eye shape different from surprise |
| | eyeSquintLeft/Right | 0.15–0.35 | Lower lid tightens (AU7) — this does NOT happen in surprise and is a critical differentiator |
| | eyeBlinkLeft/Right | 0.0–0.10 | Eyes stay open; rapid blink rate may occur (animate as rapid oscillation) |
| **Cheek** | cheekSquintLeft/Right | 0.10–0.20 | Mild, from squint coupling |
| | cheekPuff | 0.0 | Not relevant |
| **Mouth** | mouthStretchLeft/Right | **0.40–0.65** | **KEY DIFFERENTIATOR FROM SURPRISE** — risorius/platysma stretches mouth horizontally (grimace) rather than the circular "O" of surprise |
| | jawOpen | 0.20–0.45 | Moderate jaw drop, typically less than surprise |
| | mouthFrownLeft/Right | 0.15–0.35 | Corners pull down and laterally |
| | mouthPressLeft/Right | 0.10–0.25 | Lip tension |
| | mouthFunnel | 0.0–0.10 | Much less than surprise — mouth stretches wide, not round |
| | mouthLowerDownLeft/Right | 0.15–0.30 | Lower lip drops from jaw opening |
| **Nose** | noseSneerLeft/Right | 0.05–0.15 | Mild nasal flare from rapid breathing |

### Intensity Scaling
- **Mild (worry/anxiety)**: browInnerUp 0.30–0.45, browDown 0.15–0.25, eyeWide 0.20–0.35, mouthPress 0.15–0.30 (tense lips), mouthStretch minimal
- **Moderate (fear)**: Values as listed above
- **Intense (terror)**: browInnerUp 0.80–1.0, eyeWide 0.80–0.95, mouthStretch 0.60–0.80, jawOpen 0.40–0.60, eyeSquint 0.30–0.45
- **Extreme (frozen terror)**: All values near max; add mouthOpen 0.50–0.70; expression may "freeze" with minimal animation

### Temporal Pattern
browInnerUp + browDown co-activate first (threat appraisal, ~100ms) → eyeWide onset (~150ms) → mouthStretch (~250ms). Unlike surprise, fear builds more gradually and persists longer. The tense brow (browDown + browInnerUp) precedes the wide eyes, which precedes the mouth stretch.

---

## 6. DISGUST

**FACS basis**: AU9 (nose wrinkler) + AU10 (upper lip raiser) + AU4 (brow lower) + AU7 (lid tighten). The nose wrinkle is the defining characteristic.

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browDownLeft/Right | 0.35–0.55 | Brows lower from corrugator engagement |
| | browInnerUp | 0.0–0.10 | May have slight inner raise at low intensity; drops with full disgust |
| **Eye** | eyeSquintLeft/Right | **0.40–0.65** | Strong lid tightening — defensive eye narrowing |
| | eyeWideLeft/Right | 0.0 | Eyes narrow, not widen |
| | eyeBlinkLeft/Right | 0.10–0.20 | Partial closure from squint |
| **Cheek** | cheekSquintLeft/Right | **0.40–0.60** | Cheek elevation from nose wrinkle propagation |
| | cheekPuff | 0.0 | Not relevant (unless "holding back" nausea — then 0.15–0.30) |
| **Mouth** | mouthUpperUpLeft/Right | **0.45–0.70** | **PRIMARY DRIVER** — levator labii superioris lifts upper lip, exposing upper teeth/gums |
| | mouthFrownLeft/Right | 0.20–0.40 | Mouth corners descend |
| | mouthShrugUpper | 0.20–0.35 | Upper lip pushes upward |
| | mouthRollLower | 0.10–0.20 | Lower lip everts or rolls |
| | mouthLowerDownLeft/Right | 0.15–0.30 | Lower lip drops, exposing lower teeth |
| | jawOpen | 0.10–0.30 | Moderate opening; mouth gapes in extreme disgust |
| | mouthPressLeft/Right | 0.0–0.10 | Not primary |
| | tongueOut | 0.0–0.30 | Active tongue protrusion in extreme disgust / gag reflex |
| **Nose** | noseSneerLeft/Right | **0.60–0.90** | **PRIMARY DRIVER** — this is THE defining blendshape for disgust; strong nasal wrinkling from levator labii superioris alaeque nasi |

### Intensity Scaling
- **Mild (distaste)**: noseSneer 0.25–0.40, mouthUpperUp 0.15–0.30, eyeSquint 0.15–0.30
- **Moderate (disgust)**: Values as listed above
- **Intense (revulsion)**: noseSneer 0.85–1.0, mouthUpperUp 0.65–0.85, cheekSquint 0.55–0.75, jawOpen 0.25–0.40
- **Extreme (gag/retch)**: tongueOut 0.20–0.50, jawOpen 0.40–0.60, add mouthFunnel 0.10–0.20

### Temporal Pattern
noseSneer onset first (~100ms) → mouthUpperUp follows (~150ms) → eyeSquint + cheekSquint (~200ms) → browDown (~250ms). The nose wrinkle is always the leading indicator and the most persistent component.

---

## 7. CONTEMPT

**FACS basis**: AU12R or AU12L (unilateral lip corner pull) + AU14R or AU14L (dimpler). Contempt is unique among basic emotions — it is the ONLY asymmetric expression.

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browDownLeft | 0.10–0.20 | Mild brow lowering, slightly asymmetric |
| | browDownRight | 0.05–0.15 | Less engagement on the side of the smile |
| | browOuterUpLeft/Right | 0.05–0.15 | Slight outer brow raise (superiority signal) |
| **Eye** | eyeSquintLeft/Right | 0.15–0.30 | Mild narrowing — evaluative gaze |
| | eyeWideLeft/Right | 0.0 | Not relevant |
| | eyeLookDownLeft/Right | 0.10–0.25 | "Looking down" at someone — condescension marker |
| **Cheek** | cheekSquintLeft/Right | 0.10–0.25 (asymmetric) | Slightly more on the side of the mouth pull |
| **Mouth** | mouthSmileRight | **0.35–0.55** | **PRIMARY DRIVER** — unilateral lip corner raise. Convention: right side, but can be either. |
| | mouthSmileLeft | 0.0–0.10 | The OTHER side stays mostly neutral — the asymmetry IS the expression |
| | mouthDimpleRight | **0.30–0.50** | **KEY MARKER** — buccinator contraction creates the dimple/cheek compression on the active side |
| | mouthDimpleLeft | 0.0–0.10 | Minimal on opposite side |
| | mouthPressLeft/Right | 0.15–0.30 | Lip tightening — controlled, deliberate expression |
| | mouthFrownLeft | 0.05–0.15 | Slight depression on the non-smiling side |
| **Nose** | noseSneerRight | 0.10–0.25 | Mild unilateral sneer on the active side |
| | noseSneerLeft | 0.0–0.10 | Minimal on opposite side |

### Intensity Scaling
- **Mild (dismissive)**: mouthSmileRight 0.15–0.25, mouthDimpleRight 0.15–0.25, very subtle
- **Moderate (contempt)**: Values as listed above
- **Intense (scorn)**: mouthSmileRight 0.50–0.70, mouthDimpleRight 0.45–0.65, noseSneerRight 0.25–0.40, browDown 0.25–0.40

### Key Implementation Note
The critical aspect of contempt is **asymmetry**. The ratio between Left and Right blendshapes should be at least 3:1 on the primary markers (mouthSmile, mouthDimple, noseSneer). If both sides activate equally, it reads as a smirk or mild smile rather than contempt.

### Temporal Pattern
Slow onset expression. mouthSmileRight + mouthDimpleRight activate together (~200ms) → eyeSquint + eyeLookDown (~350ms) → browDown (~400ms). Contempt is a sustained expression — it can persist for seconds, unlike surprise.

---

## 8. GRATITUDE

**FACS basis**: AU6+AU12 (smile) modulated with AU1 (inner brow raise) — a warm smile with soft eyes and slightly raised inner brows expressing vulnerability/openness.

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browInnerUp | **0.25–0.45** | **KEY DIFFERENTIATOR** — inner brow raise shows emotional openness/vulnerability; more than in pure joy, less than in sadness |
| | browOuterUpLeft/Right | 0.05–0.15 | Slight lift |
| | browDownLeft/Right | 0.0 | Brows soft, not tense |
| **Eye** | eyeSquintLeft/Right | 0.35–0.55 | Warm eye squint — Duchenne component but softer than peak joy |
| | eyeBlinkLeft/Right | 0.10–0.20 | Soft, heavy-lidded quality (relaxed orbicularis) |
| | eyeWideLeft/Right | 0.0 | Soft eyes, not wide |
| | eyeLookUpLeft/Right | 0.0–0.15 | Slight upward gaze if looking at person being thanked |
| **Cheek** | cheekSquintLeft/Right | 0.30–0.50 | From genuine smile |
| **Mouth** | mouthSmileLeft/Right | 0.40–0.60 | Moderate genuine smile — warm, not ecstatic |
| | mouthPressLeft/Right | 0.10–0.25 | Slight lip press — "holding back" deeper emotion |
| | mouthDimpleLeft/Right | 0.10–0.20 | Nasolabial deepening |
| | jawOpen | 0.0–0.10 | Typically closed-mouth expression |
| **Nose** | noseSneerLeft/Right | 0.0–0.05 | Minimal |

### Distinguishing Feature
Gratitude = Joy + vulnerability. The browInnerUp component is the differentiator. Pure joy has minimal inner brow activity; gratitude adds that soft inner brow lift that signals emotional openness. The smile is also more restrained (0.40–0.60 vs. 0.65–0.90 for peak joy).

---

## 9. APOLOGY / GUILT

**FACS basis**: AU1+AU4 (oblique brow) + AU15 (lip corner depressor) + AU54 (head tilt down — not a blendshape but important context). Similar to sadness but with more gaze aversion and lip compression from self-regulation.

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browInnerUp | **0.45–0.65** | Strong oblique brow — vulnerability and distress |
| | browDownLeft/Right | 0.15–0.30 | Co-activation for the grief/guilt brow |
| | browOuterUpLeft/Right | 0.0 | Outer brow stays low |
| **Eye** | eyeSquintLeft/Right | 0.15–0.30 | Mild tension |
| | eyeBlinkLeft/Right | 0.15–0.25 | Increased blink rate (animate as frequent blinks) |
| | eyeLookDownLeft/Right | **0.35–0.55** | **KEY MARKER** — gaze aversion downward is central to guilt |
| **Cheek** | cheekSquintLeft/Right | 0.10–0.20 | Mild |
| **Mouth** | mouthFrownLeft/Right | 0.25–0.45 | Mouth corners descend |
| | mouthPressLeft/Right | **0.35–0.55** | **KEY MARKER** — lip compression from suppression, self-control |
| | mouthRollLower | 0.15–0.30 | Lower lip pulled inward (biting lip is characteristic) |
| | mouthRollUpper | 0.10–0.20 | Upper lip tension |
| | mouthShrugLower | 0.15–0.30 | Chin tension |
| | jawOpen | 0.0–0.05 | Mouth stays closed — this is a contained expression |
| | mouthSmileLeft/Right | 0.0–0.15 | May have a faint, inappropriate "appeasement smile" |
| **Nose** | noseSneerLeft/Right | 0.0–0.10 | Minimal |

### Key Differentiator from Sadness
Guilt has (1) stronger mouthPress (self-regulation/suppression), (2) stronger eyeLookDown (gaze aversion toward the ground), (3) possible faint appeasement smile, (4) less mouthFrown than sadness. The overall expression is more contained — sadness collapses outward, guilt turns inward.

---

## 10. RELIEF

**FACS basis**: AU1+AU2 (brow lift) → AU6+AU12 (smile) transition, combined with AU26 (jaw drop for exhale). Relief is a temporal expression — it is defined by a tension-release sequence.

### Blendshape Pattern (Post-Release State)

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browInnerUp | 0.20–0.40 | Residual brow lift from the "release" phase |
| | browOuterUpLeft/Right | 0.15–0.30 | Full brow lift during the release, then settles |
| | browDownLeft/Right | 0.0 | Brow tension fully releases |
| **Eye** | eyeBlinkLeft/Right | 0.20–0.35 | **KEY MARKER** — eyes close or heavy-blink during the exhale moment; prolonged blink (0.60–0.80 for 200–400ms) |
| | eyeSquintLeft/Right | 0.20–0.40 | Soft squint as smile develops |
| | eyeWideLeft/Right | 0.0 | Eyes relax, not widen |
| **Cheek** | cheekSquintLeft/Right | 0.20–0.40 | From smile onset |
| | cheekPuff | 0.10–0.25 | **DISTINCTIVE** — cheek puff from exhale/sigh; this is uncommon in other emotions |
| **Mouth** | mouthSmileLeft/Right | 0.30–0.50 | Gentle smile develops after the exhale |
| | jawOpen | 0.15–0.35 | Opens for the exhale/sigh |
| | mouthFunnel | 0.10–0.20 | Lips shape for the exhale |
| | mouthPressLeft/Right | 0.0 | All tension releases |
| | mouthShrugLower | 0.10–0.20 | Chin relaxes downward |
| **Nose** | noseSneerLeft/Right | 0.0 | No tension |

### Temporal Pattern (Critical for Relief)
Relief is uniquely temporal. The animation MUST have two phases:
1. **Tension phase** (pre-relief, ~200ms): browDown 0.30–0.50, mouthPress 0.30–0.50, eyeSquint 0.20–0.35
2. **Release phase** (~500ms): ALL tension markers rapidly decay to 0 → eyeBlink spike to 0.60–0.80 (exhale blink) → jawOpen increases (sigh) → cheekPuff briefly spikes → mouthSmile onset → browInnerUp rises → everything settles to the "post-release" values above

Without the tension-to-release transition, static "relief" values look like a tired smile.

---

## 11. EMBARRASSMENT

**FACS basis**: AU12+AU6 (smile) + AU52/54 (head turn/tilt — not blendshapes) + AU64 (eye gaze down). Embarrassment is characterized by the "inappropriate" smile combined with gaze aversion and often asymmetric or flickering mouth movements.

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browInnerUp | 0.20–0.40 | Mild distress/vulnerability signal |
| | browDownLeft/Right | 0.10–0.20 | Slight tension |
| **Eye** | eyeSquintLeft/Right | 0.25–0.45 | From the embarrassed smile |
| | eyeBlinkLeft/Right | 0.15–0.30 | Increased blink rate |
| | eyeLookDownLeft/Right | **0.40–0.60** | **PRIMARY MARKER** — strong downward gaze aversion |
| | eyeLookInLeft / eyeLookOutRight (or vice versa) | 0.15–0.30 | Lateral gaze aversion — looking away |
| **Cheek** | cheekSquintLeft/Right | 0.20–0.35 | From smile |
| **Mouth** | mouthSmileLeft/Right | **0.30–0.55** | **KEY MARKER** — the "embarrassed smile." It is genuine (Duchenne) but socially inappropriate — the person smiles while feeling distressed |
| | mouthPressLeft/Right | 0.25–0.45 | **KEY MARKER** — trying to suppress the smile; lip compression |
| | mouthRollLower | 0.10–0.25 | Lip bite gesture |
| | mouthDimpleLeft/Right | 0.10–0.20 | From attempted smile suppression |
| | jawOpen | 0.0–0.05 | Mouth stays closed |
| **Nose** | noseSneerLeft/Right | 0.05–0.15 | Mild nose wrinkle (self-disgust component) |

### Key Differentiator
The coexistence of mouthSmile + mouthPress is the hallmark — the person is BOTH smiling AND trying to suppress the smile. This oscillation (smile builds → press suppresses → smile breaks through) creates the characteristic flickering quality of embarrassment. In animation, modulate these two values with opposing sine waves at 2–4Hz.

---

## 12. ADMIRATION

**FACS basis**: AU1+AU2 (brow raise) + AU5 (upper lid raise) + AU12 (smile). A "soft surprise" combined with a warm smile — the eyes open with interest, the brows lift gently, and a smile develops.

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browInnerUp | 0.30–0.50 | Moderate lift — interest/openness |
| | browOuterUpLeft/Right | 0.25–0.40 | Both brow regions lift — "impressed" expression |
| | browDownLeft/Right | 0.0 | No brow tension |
| **Eye** | eyeWideLeft/Right | **0.25–0.45** | **KEY MARKER** — eyes open wider than neutral to take in what is admired; less intense than surprise |
| | eyeSquintLeft/Right | 0.15–0.30 | Mild squint from developing smile |
| | eyeLookUpLeft/Right | 0.10–0.25 | Slight upward gaze — "looking up to" someone |
| **Cheek** | cheekSquintLeft/Right | 0.20–0.35 | From smile |
| **Mouth** | mouthSmileLeft/Right | 0.35–0.55 | Warm, moderate smile |
| | jawOpen | 0.05–0.20 | Slight opening — "open-mouthed admiration" at higher intensity |
| | mouthFunnel | 0.0–0.10 | Slight at higher intensity |
| | mouthDimpleLeft/Right | 0.10–0.20 | Nasolabial fold |
| **Nose** | noseSneerLeft/Right | 0.0 | Clean, open expression |

### Key Differentiator from Surprise
Admiration has (1) lower eyeWide values (0.25–0.45 vs. 0.65–0.90), (2) a clear smile component (surprise has neutral mouth corners), (3) slower onset and longer sustain. It is "interested attention + warmth" rather than "startle response."

---

## 13. PRIDE

**FACS basis**: AU12 (slight smile) + AU53 (head tilt up — not a blendshape). Pride is notably subtle facially — much of pride is conveyed through posture (expanded chest, head tilt up). The facial expression is a small, controlled smile with slightly narrowed eyes.

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browDownLeft/Right | 0.05–0.15 | Very slight lowering — controlled, confident |
| | browOuterUpLeft/Right | 0.05–0.15 | Subtle outer raise — superiority signal |
| | browInnerUp | 0.0 | No vulnerability signal |
| **Eye** | eyeSquintLeft/Right | 0.20–0.35 | Slight narrowing — evaluative, confident gaze |
| | eyeWideLeft/Right | 0.0 | Eyes narrowed, not wide |
| | eyeBlinkLeft/Right | 0.0–0.10 | Slow, deliberate blinks |
| | eyeLookUpLeft/Right | 0.0 | Not looking up at anyone — looking level or down |
| **Cheek** | cheekSquintLeft/Right | 0.15–0.30 | Mild, from the contained smile |
| **Mouth** | mouthSmileLeft/Right | **0.25–0.45** | **KEY MARKER** — small, controlled, slightly asymmetric smile. NOT a broad grin. |
| | mouthPressLeft/Right | **0.20–0.40** | **KEY MARKER** — lip press gives the smile a "contained" quality — confidence without exuberance |
| | mouthDimpleLeft/Right | 0.15–0.25 | Controlled cheek engagement |
| | jawOpen | 0.0 | Mouth closed — pride is contained |
| **Nose** | noseSneerLeft/Right | 0.0–0.10 | Minimal, possibly faint nose elevation |

### Key Feature
Pride is defined by RESTRAINT. The values are deliberately moderate-to-low. The mouthSmile + mouthPress combination creates a "knowing smile" — confident but not exuberant. For a slight asymmetry, make one mouthSmile 0.05–0.10 higher than the other.

---

## 14. SHAME

**FACS basis**: AU1+AU4 (oblique brow) + AU15 (lip corner depressor) + AU54+AU64 (head down, gaze down). Shame is similar to guilt but with (1) more full-body collapse, (2) a desire to hide/disappear, and (3) less engagement with others.

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browInnerUp | **0.40–0.60** | Oblique brow — distress |
| | browDownLeft/Right | 0.25–0.45 | Strong co-activation with browInnerUp |
| | browOuterUpLeft/Right | 0.0 | Brows heavy |
| **Eye** | eyeBlinkLeft/Right | **0.30–0.50** | **KEY MARKER** — eyes close/droop heavily; the person is trying to hide, withdraw from visual contact |
| | eyeSquintLeft/Right | 0.25–0.40 | Tension around eyes |
| | eyeLookDownLeft/Right | **0.50–0.70** | **PRIMARY MARKER** — maximum downward gaze aversion |
| | eyeWideLeft/Right | 0.0 | Eyes close/narrow |
| **Cheek** | cheekSquintLeft/Right | 0.10–0.20 | From eye tension |
| **Mouth** | mouthFrownLeft/Right | **0.40–0.60** | Strong mouth corner depression |
| | mouthPressLeft/Right | 0.30–0.50 | Lip compression — holding back |
| | mouthRollLower | 0.15–0.30 | Lower lip pulled in |
| | mouthRollUpper | 0.10–0.20 | Upper lip tightens |
| | mouthShrugLower | 0.20–0.35 | Chin tension |
| | jawOpen | 0.0–0.05 | Mouth sealed |
| | mouthSmileLeft/Right | 0.0 | No smile whatsoever — unlike embarrassment |
| **Nose** | noseSneerLeft/Right | 0.10–0.25 | Self-directed disgust component |

### Key Differentiator from Guilt
Shame has (1) NO appeasement smile (guilt can have a faint one), (2) stronger eyeBlink/eye closure (hiding), (3) stronger eyeLookDown (deeper withdrawal), (4) a noseSneer component (self-disgust) that guilt lacks. Shame is fundamentally about the self being bad; guilt is about a specific action being bad.

### Key Differentiator from Sadness
Shame has (1) higher mouthPress (more self-control/suppression), (2) higher eyeBlink (trying to hide), (3) noseSneer (self-disgust), (4) less mouthShrugLower/chin trembling (more frozen than actively crying).

---

## 15. COMPASSION

**FACS basis**: AU1 (inner brow raise) + AU6+AU12 (soft smile) + AU4 (mild brow knit). Compassion combines the oblique brow of sadness with the warm smile of positive engagement — you feel their pain but offer warmth.

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browInnerUp | **0.40–0.60** | **PRIMARY MARKER** — the oblique brow signals shared distress / empathic mirroring |
| | browDownLeft/Right | 0.10–0.25 | Mild knit — concern |
| | browOuterUpLeft/Right | 0.0–0.10 | Slight lift possible |
| **Eye** | eyeSquintLeft/Right | 0.25–0.45 | Warm eye squint — from smile component |
| | eyeBlinkLeft/Right | 0.10–0.20 | Soft eyes |
| | eyeWideLeft/Right | 0.0 | Soft, not wide |
| **Cheek** | cheekSquintLeft/Right | 0.20–0.35 | From warm smile |
| **Mouth** | mouthSmileLeft/Right | **0.25–0.45** | **KEY COMPONENT** — a soft, warm smile coexisting with the sadness-brow. This coexistence IS compassion. |
| | mouthFrownLeft/Right | 0.05–0.15 | Slight downturn may blend with smile |
| | mouthPressLeft/Right | 0.10–0.25 | Gentle lip press — restrained emotion |
| | jawOpen | 0.0–0.05 | Closed or near-closed |
| **Nose** | noseSneerLeft/Right | 0.0–0.05 | Clean expression |

### Key Insight
Compassion is the ONLY emotion where a strong browInnerUp (sadness marker) coexists with a genuine mouthSmile (joy marker). This combination is the defining feature. In a VAD-to-blendshape system, if you detect moderate negative valence + moderate arousal + low dominance COMBINED with positive social intent, drive the compassion pattern.

---

## 16. EXCITEMENT

**FACS basis**: AU1+AU2 (brow raise) + AU5 (upper lid raise) + AU6+AU12 (Duchenne smile) + AU25+AU26 (lips part, jaw drop). Excitement is essentially "high-arousal joy with surprise components."

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browInnerUp | **0.45–0.70** | Strong brow lift — arousal / energy |
| | browOuterUpLeft/Right | **0.40–0.65** | Full brow arch — wider than joy alone |
| | browDownLeft/Right | 0.0 | No tension |
| **Eye** | eyeWideLeft/Right | **0.35–0.60** | **KEY DIFFERENTIATOR FROM JOY** — eyes widen with arousal; joy narrows eyes, excitement widens them |
| | eyeSquintLeft/Right | 0.25–0.45 | From the smile, but competing with eyeWide. Net effect: open but crinkled. |
| | eyeBlinkLeft/Right | 0.0–0.05 | Eyes wide open |
| **Cheek** | cheekSquintLeft/Right | 0.40–0.60 | Strong smile-driven cheek lift |
| **Mouth** | mouthSmileLeft/Right | **0.65–0.90** | Broad, energetic smile |
| | jawOpen | **0.25–0.50** | **KEY DIFFERENTIATOR** — mouth opens in excited vocalization; wider than in calm joy |
| | mouthUpperUpLeft/Right | 0.15–0.30 | Upper teeth exposure |
| | mouthStretchLeft/Right | 0.10–0.25 | Lateral stretch from wide smile + jaw opening |
| | mouthDimpleLeft/Right | 0.10–0.20 | Deep nasolabial |
| **Nose** | noseSneerLeft/Right | 0.05–0.15 | From cheek elevation |

### Key Differentiator from Joy
Joy narrows the eyes (high eyeSquint, zero eyeWide). Excitement opens them (eyeWide 0.35–0.60 competing with eyeSquint). Joy is a warm, soft expression; excitement adds the "surprise" eye opening and jaw drop from high arousal.

---

## 17. SERENITY / CALM

**FACS basis**: Minimal AU activation — the defining feature is the ABSENCE of tension markers. Perhaps AU6+AU12 at very low intensity (micro-smile).

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browInnerUp | 0.0–0.05 | Nearly neutral — no tension, no effort |
| | browDownLeft/Right | 0.0 | No furrowing |
| | browOuterUpLeft/Right | 0.0–0.05 | Minimal |
| **Eye** | eyeBlinkLeft/Right | 0.10–0.25 | **KEY MARKER** — slightly heavy lids; relaxed orbicularis. Slow blink rate (~0.3Hz vs. normal ~0.5Hz) |
| | eyeSquintLeft/Right | 0.05–0.15 | Very faint "soft eyes" — barely perceptible cheek elevation |
| | eyeWideLeft/Right | 0.0 | Eyes relaxed, not wide |
| | eyeLookDownLeft/Right | 0.0–0.15 | Slight downward gaze — contemplative |
| **Cheek** | cheekSquintLeft/Right | 0.05–0.10 | Barely perceptible |
| **Mouth** | mouthSmileLeft/Right | 0.10–0.25 | **Subtle** — the "Mona Lisa" micro-smile. Barely above detection threshold. |
| | mouthPressLeft/Right | 0.0 | No tension |
| | mouthFrownLeft/Right | 0.0 | No negativity |
| | jawOpen | 0.0 | Relaxed, closed |
| **Nose** | noseSneerLeft/Right | 0.0 | No tension |

### Key Implementation Note
Serenity is the LOWEST activation emotion. The total sum of all blendshape weights should be well under 1.0 combined. The challenge is distinguishing it from a dead/neutral face. The micro-smile (mouthSmile 0.10–0.25) and the slightly heavy lids (eyeBlink 0.10–0.25) are the two features that differentiate serenity from "off." Consider adding very subtle, slow breathing animation through jawOpen (oscillating 0.0–0.05 at ~0.25Hz) and perhaps mouthFunnel (0.0–0.03).

---

## 18. DISAPPOINTMENT

**FACS basis**: AU1+AU4 (oblique brow, milder than sadness) + AU15 (lip corner depressor) + AU17 (chin raiser). Disappointment is "mild sadness with resignation."

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browInnerUp | 0.25–0.40 | Lower intensity than sadness (0.55–0.80) |
| | browDownLeft/Right | 0.15–0.30 | Mild knit |
| | browOuterUpLeft/Right | 0.0 | Heavy outer brow |
| **Eye** | eyeSquintLeft/Right | 0.10–0.25 | Mild |
| | eyeBlinkLeft/Right | 0.10–0.20 | Heavy lids — deflation |
| | eyeLookDownLeft/Right | 0.20–0.40 | Gaze drops as expectations deflate |
| | eyeWideLeft/Right | 0.0 | Not wide |
| **Cheek** | cheekSquintLeft/Right | 0.05–0.15 | Minimal |
| **Mouth** | mouthFrownLeft/Right | **0.30–0.50** | **PRIMARY MARKER** — similar to sadness but with more resignation (less active distress) |
| | mouthShrugLower | **0.25–0.45** | **KEY MARKER** — chin raise/shrug expressing "oh well" resignation; more prominent than in sadness |
| | mouthShrugUpper | 0.10–0.20 | Upper lip shrug component |
| | mouthPressLeft/Right | 0.15–0.30 | Lips press together — accepting the negative outcome |
| | jawOpen | 0.0–0.05 | Closed |
| | mouthRollLower | 0.10–0.20 | Lower lip tension |
| **Nose** | noseSneerLeft/Right | 0.0–0.10 | Minimal |

### Key Differentiator from Sadness
Disappointment has (1) **lower browInnerUp** (0.25–0.40 vs. 0.55–0.80 — less acute distress), (2) **higher mouthShrugLower** (resignation/acceptance component), (3) less mouthStretch (no crying grimace), (4) overall flatter/more deflated quality vs. sadness's active distress. In VAD terms, disappointment has lower arousal than sadness.

---

## 19. DETERMINATION

**FACS basis**: AU4 (brow lower) + AU7 (lid tighten) + AU23+AU24 (lip tighten + lip press). This is a controlled, focused expression — tension without the explosive quality of anger.

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browDownLeft/Right | **0.40–0.60** | **PRIMARY MARKER** — focused brow furrow; strong but without the nose sneer of anger |
| | browInnerUp | 0.0–0.10 | Minimal — no vulnerability |
| | browOuterUpLeft/Right | 0.0 | Brows held low |
| **Eye** | eyeSquintLeft/Right | **0.30–0.50** | **KEY MARKER** — lid tightening from focus/effort; similar to anger but without the eyeWide component |
| | eyeWideLeft/Right | 0.0–0.10 | Eyes tight, not wide — this differentiates from anger where eyeWide can be 0.15–0.40 |
| | eyeBlinkLeft/Right | 0.0–0.10 | Reduced blink rate (focused attention) |
| **Cheek** | cheekSquintLeft/Right | 0.15–0.30 | From eye squint |
| **Mouth** | mouthPressLeft/Right | **0.45–0.65** | **PRIMARY MARKER** — strong lip compression; "jaw set" / resolved expression |
| | mouthRollLower | 0.15–0.25 | Lower lip pulled in |
| | mouthRollUpper | 0.10–0.20 | Upper lip tightens |
| | mouthSmileLeft/Right | 0.0 | No smile |
| | mouthFrownLeft/Right | 0.05–0.15 | Slight downturn from effort, not sadness |
| | jawOpen | 0.0 | Jaw clenched/sealed |
| | mouthShrugLower | 0.10–0.20 | Mentalis engagement — jaw set |
| **Nose** | noseSneerLeft/Right | 0.0–0.15 | **KEY DIFFERENTIATOR FROM ANGER** — minimal or absent nose sneer. Anger has 0.35–0.65+; determination stays below 0.15 |

### Key Differentiator from Anger
Determination shares browDown and mouthPress with anger but critically lacks: (1) noseSneer (anger's 0.35–0.65 vs. determination's 0.0–0.15), (2) eyeWide (anger's glare), (3) mouthUpperUp (anger's snarl). Determination is *controlled* tension; anger is *explosive* tension. In VAD terms, similar arousal but anger has negative valence while determination is neutral-to-positive.

---

## 20. AWE

**FACS basis**: AU1+AU2 (brow raise) + AU5 (upper lid raise) + AU26 (jaw drop), similar to surprise but with slower onset, longer duration, and often a slight smile component. Awe is "sustained, positive surprise."

### Blendshape Pattern

| Region | Blendshape | Value | Rationale |
|--------|-----------|-------|-----------|
| **Brow** | browInnerUp | **0.50–0.75** | Strong brow lift — wonder |
| | browOuterUpLeft/Right | **0.45–0.65** | Full brow arch, slightly less than peak surprise |
| | browDownLeft/Right | 0.0 | No tension |
| **Eye** | eyeWideLeft/Right | **0.45–0.70** | **PRIMARY MARKER** — eyes open wide to "take it all in;" slightly less than surprise peak |
| | eyeSquintLeft/Right | 0.0–0.15 | Eyes open, minimal squint (unless smile develops) |
| | eyeBlinkLeft/Right | 0.0–0.05 | **Reduced blink rate** — staring in wonder; blink rate drops significantly during awe |
| | eyeLookUpLeft/Right | 0.15–0.35 | **KEY MARKER** — looking upward at something vast/magnificent |
| **Cheek** | cheekSquintLeft/Right | 0.05–0.15 | Minimal unless smile develops |
| **Mouth** | jawOpen | **0.20–0.45** | **PRIMARY MARKER** — "jaw-dropping" wonder; slightly less than surprise's peak |
| | mouthFunnel | 0.15–0.30 | Lips form soft "O" shape |
| | mouthSmileLeft/Right | 0.10–0.30 | **KEY DIFFERENTIATOR FROM SURPRISE** — a developing smile from positive evaluation |
| | mouthPucker | 0.05–0.15 | Contributing to the "O" |
| | mouthStretchLeft/Right | 0.05–0.15 | Slight lateral stretch |
| **Nose** | noseSneerLeft/Right | 0.0 | Clean, open expression |

### Key Differentiator from Surprise
Awe has (1) slower onset (500ms+ vs. surprise's ~200ms), (2) longer sustained duration (seconds to tens of seconds vs. surprise's <2s), (3) a mild smile component (mouthSmile 0.10–0.30 vs. surprise's 0.0), (4) upward gaze tendency (eyeLookUp), (5) slightly lower peak values across brow and eye markers. Awe is contemplative; surprise is reactive.

---

## CROSS-EMOTION ANALYSIS

### Shared Blendshapes Across Multiple Emotions

#### browInnerUp — The Most Versatile Blendshape

| Emotion | browInnerUp Value | Meaning in Context |
|---------|------------------|-------------------|
| Sadness | 0.55–0.80 | Grief / distress (with browDown co-activation) |
| Fear | 0.60–0.85 | Alarm / threat (with browDown + eyeWide) |
| Surprise | 0.65–0.90 | Startle (with browOuterUp, WITHOUT browDown) |
| Awe | 0.50–0.75 | Wonder (with browOuterUp + slow onset) |
| Compassion | 0.40–0.60 | Empathic concern (with mouthSmile) |
| Guilt | 0.45–0.65 | Remorse (with eyeLookDown) |
| Shame | 0.40–0.60 | Self-reproach (with eyeBlink closure) |
| Gratitude | 0.25–0.45 | Warm vulnerability (with mouthSmile) |
| Excitement | 0.45–0.70 | Energy (with browOuterUp + eyeWide + mouthSmile) |
| Disappointment | 0.25–0.40 | Deflation (with mouthShrugLower) |
| Serenity | 0.0–0.05 | Absence of activation |
| Anger | 0.0 | Absent |
| Determination | 0.0–0.10 | Absent or trace |

**Disambiguation strategy**: browInnerUp alone is ambiguous. You MUST look at co-activating blendshapes:
- browInnerUp + browOuterUp = **surprise family** (surprise, awe, excitement)
- browInnerUp + browDown = **distress family** (sadness, fear, guilt, shame, compassion)
- browInnerUp + mouthSmile = **positive vulnerability** (gratitude, compassion)
- browInnerUp alone at moderate values = **concern/worry**

#### mouthPressLeft/Right — Suppression/Control Marker

| Emotion | mouthPress Value | Meaning in Context |
|---------|-----------------|-------------------|
| Determination | 0.45–0.65 | Focused resolve, jaw set |
| Anger (suppressed) | 0.45–0.70 | Holding back explosive response |
| Guilt | 0.35–0.55 | Self-regulation, holding back |
| Embarrassment | 0.25–0.45 | Trying to suppress inappropriate smile |
| Shame | 0.30–0.50 | Containing distress |
| Pride | 0.20–0.40 | Contained satisfaction |

#### eyeSquintLeft/Right — Multiple Functions

| Emotion | eyeSquint Value | Mechanism |
|---------|----------------|-----------|
| Joy | 0.50–0.75 | Cheek-driven (Duchenne, AU6) |
| Disgust | 0.40–0.65 | Defensive eye protection |
| Anger | 0.30–0.50 | Lid tightening (AU7) |
| Determination | 0.30–0.50 | Focus/effort |
| Compassion | 0.25–0.45 | Warm eyes from soft smile |
| Embarrassment | 0.25–0.45 | From embarrassed smile |

#### noseSneerLeft/Right — Negative Evaluation

| Emotion | noseSneer Value | Meaning |
|---------|----------------|---------|
| Disgust | 0.60–0.90 | Primary marker — revulsion |
| Anger | 0.35–0.65 | Threat/aggression |
| Contempt | 0.10–0.25 (unilateral) | Mild disdain |
| Shame | 0.10–0.25 | Self-directed disgust |
| Determination | 0.0–0.15 | Critically LOW — this differentiates from anger |

---

### Disambiguation: Similar Emotion Pairs

#### Sadness vs. Disappointment
| Feature | Sadness | Disappointment |
|---------|---------|----------------|
| browInnerUp | 0.55–0.80 | 0.25–0.40 |
| mouthFrown | 0.45–0.70 | 0.30–0.50 |
| mouthShrugLower | 0.20–0.40 | **0.25–0.45** (higher, resignation) |
| Arousal | Higher (active distress) | Lower (deflation) |
| Overall intensity | Greater | Muted |

**Programmatic rule**: If browInnerUp < 0.45 AND mouthShrugLower > mouthFrown * 0.6 → lean toward disappointment.

#### Anger vs. Determination
| Feature | Anger | Determination |
|---------|-------|---------------|
| noseSneer | **0.35–0.65** | 0.0–0.15 |
| eyeWide | 0.15–0.40 | 0.0–0.10 |
| mouthUpperUp | 0.15–0.35 | 0.0 |
| mouthStretch | 0.10–0.25 | 0.0–0.05 |

**Programmatic rule**: If noseSneer > 0.25 → anger. If noseSneer < 0.15 AND browDown > 0.35 AND mouthPress > 0.40 → determination.

#### Fear vs. Surprise
| Feature | Fear | Surprise |
|---------|------|----------|
| browDown co-activation | **0.20–0.40** | 0.0 |
| eyeSquint | 0.15–0.35 | 0.0 |
| mouthStretch | **0.40–0.65** (grimace) | 0.10–0.20 |
| mouthFunnel | 0.0–0.10 | **0.20–0.40** ("O" mouth) |
| Duration | Sustained | <2 seconds |

**Programmatic rule**: If browDown > 0.15 AND mouthStretch > mouthFunnel → fear. If browDown < 0.10 AND mouthFunnel > mouthStretch → surprise.

#### Guilt vs. Shame
| Feature | Guilt | Shame |
|---------|-------|-------|
| mouthSmile (appeasement) | 0.0–0.15 | 0.0 |
| eyeBlink (closure) | 0.15–0.25 | **0.30–0.50** |
| eyeLookDown | 0.35–0.55 | **0.50–0.70** |
| noseSneer (self-disgust) | 0.0–0.10 | **0.10–0.25** |

**Programmatic rule**: If eyeBlink > 0.28 AND eyeLookDown > 0.48 → shame. If mouthSmile > 0.08 AND eyeBlink < 0.28 → guilt.

#### Joy vs. Excitement
| Feature | Joy | Excitement |
|---------|-----|-----------|
| eyeWide | 0.0 | **0.35–0.60** |
| eyeSquint | 0.50–0.75 | 0.25–0.45 (lower, competing with wide) |
| browOuterUp | 0.0–0.10 | **0.40–0.65** |
| jawOpen | 0.0–0.30 | **0.25–0.50** |

**Programmatic rule**: If eyeWide > 0.25 AND browOuterUp > 0.30 → excitement. If eyeSquint > 0.45 AND eyeWide < 0.10 → joy.

---

### Temporal Dynamics

#### Fast-onset emotions (< 300ms to peak)
1. **Surprise** (~200ms) — fastest; brow+eye+jaw nearly simultaneous
2. **Fear** (~300ms) — brow → eyes → mouth
3. **Anger** (~350ms for initial response; builds)

#### Moderate-onset emotions (300ms–1s)
4. **Disgust** (~400ms) — nose → mouth → eyes
5. **Joy** (~500ms) — cheek/mouth → eyes
6. **Excitement** (~500ms) — similar to joy but with wider eyes
7. **Contempt** (~500ms) — slow, deliberate unilateral movement

#### Slow-onset emotions (> 1s)
8. **Awe** (1–2s) — gradual eye/brow opening
9. **Sadness** (1–3s) — brow changes precede mouth by significant margin
10. **Serenity** (2–5s) — extremely gradual from neutral
11. **Pride** (1–2s) — subtle, building

#### Key temporal principles for animation:
- **Brow leads in negative/threat emotions** (sadness, fear, anger): browInnerUp or browDown is the first responder
- **Mouth leads in positive social emotions** (joy, gratitude): mouthSmile activates before eyeSquint
- **Eyes lead in startle/attention emotions** (surprise): eyeWide is the fastest single blendshape
- **Nose leads in disgust**: noseSneer precedes all other activations
- **Decay is always slower than onset**: Expressions build quickly but fade slowly (at roughly 0.5-0.7x the onset speed)

---

### VAD Mapping Summary

For your VAD → blendshape system, here is a high-level mapping of where each emotion sits in VAD space:

| Emotion | Valence | Arousal | Dominance | Key Blendshapes |
|---------|---------|---------|-----------|-----------------|
| Joy | +High | +Medium | +Medium | mouthSmile, eyeSquint, cheekSquint |
| Anger | -High | +High | +High | browDown, noseSneer, mouthPress |
| Sadness | -High | -Medium | -High | browInnerUp+browDown, mouthFrown, mouthShrugLower |
| Surprise | Neutral | +High | -Medium | browInnerUp+browOuterUp, eyeWide, jawOpen |
| Fear | -High | +High | -High | browInnerUp+browDown, eyeWide+eyeSquint, mouthStretch |
| Disgust | -High | -Low to +Low | +Medium | noseSneer, mouthUpperUp, eyeSquint |
| Contempt | -Medium | -Low | +High | mouthSmileR (unilateral), mouthDimpleR |
| Gratitude | +High | +Low | -Medium | browInnerUp, mouthSmile (moderate), eyeSquint |
| Guilt | -Medium | -Low | -High | browInnerUp+browDown, mouthPress, eyeLookDown |
| Relief | +Medium | -Medium (post) | Neutral | eyeBlink (release), mouthSmile, cheekPuff, jawOpen (exhale) |
| Embarrassment | -Medium | +Medium | -High | mouthSmile+mouthPress, eyeLookDown |
| Admiration | +High | +Medium | -Medium | browInnerUp+browOuterUp, eyeWide (mild), mouthSmile |
| Pride | +Medium | +Low | +High | mouthSmile+mouthPress (small), browDown (slight) |
| Shame | -High | -Medium | -High | eyeBlink, eyeLookDown, browInnerUp+browDown, noseSneer |
| Compassion | Neutral to -Low | +Low | Neutral | browInnerUp+browDown (mild), mouthSmile |
| Excitement | +High | +High | +Medium | mouthSmile, eyeWide, browInnerUp+browOuterUp, jawOpen |
| Serenity | +Medium | -High | Neutral | Near-zero activation; micro mouthSmile, eyeBlink (heavy) |
| Disappointment | -Medium | -Medium | -Medium | browInnerUp (mild), mouthFrown, mouthShrugLower |
| Determination | Neutral | +Medium | +High | browDown, eyeSquint, mouthPress |
| Awe | +Medium | +Medium | -High | browInnerUp+browOuterUp, eyeWide, jawOpen, mouthSmile (faint) |

---

### Implementation Notes for VAD → Blendshape System

1. **Do not interpolate linearly in VAD space between emotion prototypes.** Facial expressions are not linear combinations. A point midway between "joy" and "anger" in VAD space should not produce half-smile plus half-sneer. Instead, use a winner-take-most strategy or soft attention mechanism where the nearest 2–3 emotion prototypes contribute weights based on inverse distance, then compose their blendshape patterns.

2. **Use separate channels for upper face and lower face.** The brow/eye region and the mouth region often carry different emotional signals. The brow may signal "concern" (browInnerUp+browDown) while the mouth signals "encouragement" (mouthSmile) — this is compassion. Interpolating the whole face as one unit will miss these split-face patterns.

3. **Intensity modulation**: Once you determine the emotion prototype, multiply all blendshape values by an intensity factor derived from arousal magnitude and valence magnitude. Higher arousal = higher blendshape values, but the PATTERN stays the same (the ratios between blendshapes remain constant at different intensities).

4. **Temporal smoothing**: Use exponential smoothing (lowpass filter) on blendshape values with time constants matched to each emotion's natural onset speed. Surprise needs a fast time constant (~100ms); serenity needs a very slow one (~2s). This prevents jarring jumps when VAD values shift rapidly.

5. **Corrective blendshapes / conflict resolution**: When mixing emotion patterns, watch for physically impossible combinations (e.g., jawOpen + mouthPress, or eyeWide + eyeBlink). Implement priority rules — typically the higher-arousal emotion wins on conflicting blendshapes.