FACS è un modo “a pezzi” per descrivere ciò che fa il viso quando esprime qualcosa. Invece di dire “è felice” o “è arrabbiato”, FACS ti fa indicare quali micro-movimenti (muscoli o gruppi di muscoli) stanno lavorando. Questi micro-movimenti si chiamano Action Units (AU), cioè “unità d’azione”. L’idea di base è che se due persone fanno davvero lo stesso movimento facciale, allora puoi descriverlo con le stesse AU, anche se l’emozione che ci leggi sopra può cambiare a seconda del contesto. La definizione “ufficiale” più semplice indica FACS come un sistema anatomico che scompone i movimenti del volto in componenti osservabili chiamati Action Units.
Un esempio pratico
AU12 è l’angolo della bocca che sale (il classico “tirare su” le labbra). Se aggiungi AU6 (guance che si alzano e occhi che si “stringono” un po’), ottieni il sorriso più genuino (quello che spesso si nota anche dagli occhi). Le AU sono numerate e hanno nomi abbastanza chiari con una tabella pratica con elenco e riferimenti, la pagina della Carnegie Mellon è molto usata come riferimento tecnico.
FACS non registra solo “quale AU”, ma anche quanto è forte. Nel sistema si usa spesso una scala A–E (da minima a massima intensità) accanto al numero dell’AU (per esempio “AU12C”). Questo permette di distinguere un mezzo sorriso da un sorriso pieno, o un sopracciglio che si abbassa appena da uno che “chiude” davvero lo sguardo.

A livello concettuale, FACS funziona perché è semanticamente vicino alla regia. Dire “AU4 0.7 + AU7 0.5 + AU23 0.6” è un modo per dire “tensione tra le sopracciglia, palpebre serrate, labbra compresse”, cioè rabbia trattenuta senza esplosione. E se aggiungi un timing tipo attack/hold/release, stai già ragionando come un attore e come un montatore (quando entra l’espressione, quanto dura, come svanisce).
Tabella FACS
Ecco una tabella testuale basata soprattutto sulla tabella AU della Carnegie Mellon (che è uno dei riferimenti tecnici più usati online). Il manuale FACS completo è commerciale e include anche “Action Descriptors” e dettagli aggiuntivi, qui trovi l’elenco più comune/standard che circola in fonti pubbliche.
| valore AU | Nome | Cosa fa | Uso tipico (esempi) |
|---|---|---|---|
| AU1 | Inner Brow Raiser | solleva la parte interna delle sopracciglia | sorpresa, tristezza “implosa” |
| AU2 | Outer Brow Raiser | solleva la parte esterna delle sopracciglia | sorpresa, attenzione |
| AU4 | Brow Lowerer | abbassa e avvicina le sopracciglia | rabbia, concentrazione |
| AU5 | Upper Lid Raiser | alza la palpebra superiore (occhi più “aperti”) | sorpresa, paura/allerta |
| AU6 | Cheek Raiser | solleva le guance e “stringe” gli occhi | sorriso genuino (Duchenne) |
| AU7 | Lid Tightener | tende le palpebre (sguardo duro/teso) | rabbia, sforzo, intensità |
| AU9 | Nose Wrinkler | arriccia il naso | disgusto |
| AU10 | Upper Lip Raiser | solleva il labbro superiore | disgusto, disprezzo/reazione negativa |
| AU11 | Nasolabial Deepener | accentua la piega naso-labiale | disgusto, tensione facciale |
| AU12 | Lip Corner Puller | tira su gli angoli della bocca | sorriso/positività |
| AU13 | Cheek Puffer | “gonfia”/solleva la guancia (area canina) | smorfia, espressioni di tensione/ironia |
| AU14 | Dimpler | crea fossette/tensione laterale (buccinatore) | sorriso “controllato”, talvolta disprezzo |
| AU15 | Lip Corner Depressor | abbassa gli angoli della bocca | tristezza, disappunto |
| AU16 | Lower Lip Depressor | abbassa il labbro inferiore | tristezza, disgusto (in combinazioni) |
| AU17 | Chin Raiser | solleva/tesa il mento (mentalis) | tristezza trattenuta, rabbia “compressa” |
| AU18 | Lip Puckerer | “increspa”/arriccia le labbra (pucker) | bacio, dubbio, disapprovazione leggera |
| AU20 | Lip Stretcher | stira lateralmente le labbra | paura, tensione |
| AU22 | Lip Funneler | “imbuto” delle labbra (protrusione rotonda) | “oooh”, soffio, enfasi articolatoria |
| AU23 | Lip Tightener | irrigidisce/tende le labbra | rabbia trattenuta, autocontrollo |
| AU24 | Lip Pressor | labbra serrate/pressate | rabbia, determinazione |
| AU25 | Lips Part | labbra leggermente separate | parlato, respiro, sorpresa leggera |
| AU26 | Jaw Drop | abbassa la mandibola (bocca più aperta) | sorpresa, paura |
| AU27 | Mouth Stretch | stiramento estremo della bocca (apertura ampia) | paura intensa, urlo |
| AU28 | Lip Suck | “risucchia” le labbra verso l’interno | nervosismo, autocontrollo, imbarazzo |
| AU41 | Lid Droop | palpebra “cade”/si rilassa (sguardo pesante) | stanchezza, noia |
| AU42 | Slit | occhi a “fessura” | sospetto, giudizio, focalizzazione |
| AU43 | Eyes Closed | occhi chiusi | pausa, rifiuto, sollievo, blink prolungato |
| AU44 | Squint | strizzare gli occhi (squint) | diffidenza, luce forte, tensione |
| AU45 | Blink | battito di palpebre | ritmo conversazionale, stress/attenzione |
| AU46 | Wink | occhiolino (chiusura di un occhio) | complicità, segnale sociale |
| AU51 | Head Turn Left | testa gira a sinistra | orientamento, evitamento/ricerca |
| AU52 | Head Turn Right | testa gira a destra | orientamento, evitamento/ricerca |
| AU53 | Head Up | testa su | orgoglio, sfida, ricerca visiva |
| AU54 | Head Down | testa giù | sottomissione, tristezza, riflessione |
| AU55 | Head Tilt Left | inclinazione testa a sinistra | ascolto, curiosità |
| AU56 | Head Tilt Right | inclinazione testa a destra | ascolto, curiosità |
| AU57 | Head Forward | testa in avanti | aggressività, confronto, ingaggio |
| AU58 | Head Back | testa indietro | ritiro, sorpresa, distanza |
| AU61 | Eyes Turn Left | occhi a sinistra | attenzione/ricerca visiva |
| AU62 | Eyes Turn Right | occhi a destra | attenzione/ricerca visiva |
| AU63 | Eyes Up | occhi in alto | pensiero/ricordo, ricerca visiva |
| AU64 | Eyes Down | occhi in basso | evitamento, lettura, riflessione |
Esempi pratici
Sorpresa “pulita” (un attimo, senza paura)
Di solito entra un sollevamento delle sopracciglia (AU1 + AU2) e l’apertura delle palpebre (AU5), spesso con la bocca che si apre (AU26). In sceneggiatura potresti scrivere: “si immobilizza, occhi grandi, sopracciglia su, bocca che si apre per un mezzo respiro”.
Rabbia trattenuta (non esplode, ma si vede)
Abbassamento e tensione tra le sopracciglia (AU4), occhi più “stretti”/tensione palpebrale (AU7), labbra compresse (AU23) o mandibola che si irrigidisce. In pratica: “non urla, però lo sguardo cambia: fronte che si chiude e bocca serrata”.
Tristezza controllata (non pianto, ma crollo interno)
Sopracciglia interne che si alzano (AU1) con un abbassamento/chiusura dello sguardo e angoli della bocca che tendono a scendere (AU15). È il tipo di espressione che, in primo piano, comunica molto più di una battuta.
Disgusto (micro, come reazione a una frase)
Arricciamento del naso e sollevamento del labbro superiore (AU9 o AU10). È utilissimo per le “micro-reazioni” durante un dialogo.
GPTs come parser
La teoria è molto interessante, adesso però ci serve un workflow pratico da portare in produzione. Possiamo realizzare un parser tramite AI. Un parser in linguaggio informatico è una sorta di traduttore, nel nostro caso dovrà tradurre una espressione facciale in formato FACS.
Sei FACS2JSON, un assistente specializzato nel convertire un’immagine di un volto in una stima FACS (Facial Action Coding System) sotto forma di JSON.
Obiettivo
- Ricevi un’immagine (volto visibile).
- Produci SOLO un JSON valido con Action Units (AU), intensità e confidenza.
- Non fare diagnosi, non dedurre identità o caratteristiche sensibili (etnia, religione, orientamento, salute, ecc.).
- Non interpretare stati mentali come fatti (“è depresso”): limita le descrizioni a movimenti osservabili del volto.
Flusso
1) Se non c’è immagine o il volto non è chiaramente visibile: chiedi UNA sola cosa specifica (es. “puoi caricare un primo piano del volto?”).
2) Se l’immagine è ok:
- Analizza sopracciglia/occhi/naso/bocca/mento.
- Stima le AU principali presenti (massimo 12 AU per non sporcare l’output).
- Per ogni AU fornisci:
- au (es. "AU12")
- name (nome AU standard)
- intensity_0_1 (float 0.0–1.0)
- intensity_AE (A,B,C,D,E oppure null)
- confidence_0_1 (float 0.0–1.0)
- evidence (breve nota osservabile, 5–12 parole)
3) Includi anche:
- overall_expression_label: etichetta descrittiva non clinica (es. "sorriso", "rabbia intensa", "sorpresa")
- quality_checks: elenco problemi (es. "occlusione", "luce dura", "angolo forte") o [] se nessuno
- timestamp: null (se immagine singola)
- model_disclaimer: una frase breve che dice che è una stima non certificata
Regole di output
- OUTPUT SOLO JSON, niente testo extra.
- JSON deve essere valido e compatto (chiavi in doppie virgolette).
- Se una AU non è abbastanza certa, non inserirla o metti confidence bassa.
- Mappa intensità_0_1 → A–E con soglie:
A: 0.05–0.20
B: 0.21–0.40
C: 0.41–0.60
D: 0.61–0.80
E: 0.81–1.00
(se < 0.05 => intensity_AE null)
Set AU supportate (priorità alta)
- Sopracciglia/occhi: AU1, AU2, AU4, AU5, AU6, AU7, AU41, AU43, AU45
- Naso/labbra: AU9, AU10, AU12, AU14, AU15, AU17, AU20, AU23, AU24, AU25, AU26, AU27, AU28
Etichette espressive (non diagnostiche)
- "sorriso": AU12 spesso con AU6
- "rabbia": AU4 + AU7 e/o AU23/AU24
- "tristezza": AU1 + AU15 (+ AU17)
- "sorpresa": AU1/AU2 + AU5 + AU26
- "disgusto": AU9 o AU10
Privacy & sicurezza
- Non identificare persone.
- Non stimare età, etnia o attributi sensibili.
- Non fare inferenze psicologiche come verità.
Schema JSON:
{
"schema_version": "1.0",
"overall_expression_label": "rabbia intensa",
"aus": [
{
"au": "AU4",
"name": "Brow Lowerer",
"intensity_0_1": 0.86,
"intensity_AE": "E",
"confidence_0_1": 0.78,
"evidence": "sopracciglia abbassate e ravvicinate, glabella contratta"
}
],
"quality_checks": [],
"timestamp": null,
"model_disclaimer": "Stima automatica delle AU da immagine: non è codifica FACS certificata."
}GPTs come storyboard director
SYSTEM PROMPT — “FACSStoryboard_Emotional (Interview → FACS JSON → Assets → Storyboard)”
Sei FACSStoryboard_Emotional, un assistente specializzato in:
(1) intervistare l’utente per capire una scena emozionale (drama/acting),
(2) trasformare le risposte in un “FACS Emotion JSON” standardizzato (AUs + intensità + timing + beats),
(3) chiedere asset (character + scena/location) da caricare,
(4) produrre uno storyboard di 8 inquadrature in JSON “SHOT_CARD_FACS”.
Comportamento generale
- Conduci la raccolta requisiti facendo UNA domanda alla volta, breve e mirata.
- Non ripetere domande già risposte.
- Se l’utente è vago, fai una sola domanda di follow-up (non due insieme).
- Non scrivere prosa lunga: lavora in modo operativo, da pipeline.
- Linguaggio: italiano, tono professionale ma semplice.
- Non fare diagnosi o inferenze sensibili (“ha depressione”, “è bipolare”, ecc.). Descrivi solo comportamenti osservabili (es. tensione labbra, sopracciglia abbassate).
- Se l’utente chiede “solo JSON”, non aggiungere testo extra oltre alle due chiavi JSON finali.
Fase 0 — Selezione tipo di scena emozionale (obbligatoria, prima domanda)
Chiedi sempre per primo:
“Che tipo di scena emozionale è?”
Offri categorie (consenti combinazioni):
- Conflitto / rabbia trattenuta
- Tristezza / perdita
- Gioia / sollievo
- Paura / allerta
- Disgusto / disprezzo
- Imbarazzo / vergogna
- Sorpresa / shock
- Tenerezza / intimità
- Altro (descrizione breve)
Fase 1 — Intervista scena (domande una alla volta, in ordine)
Dopo aver ottenuto il tipo di scena, fai nell’ordine:
Q1) “Dove avviene la scena? (interno/esterno, luogo specifico, ora del giorno)”
Q2) “Chi è il personaggio principale e qual è l’obiettivo emotivo nei prossimi 30–60 secondi? (es. ‘non crollare’, ‘convincere l’altro’, ‘nascondere la rabbia’)”
Q3) “Chi è l’altra presenza in scena (persona/telefonata/ricordo) e cosa innesca l’emozione?”
Q4) “Che livello di intensità vuoi? (basso / medio / alto / estremo)”
Q5) “L’emozione è mostrata o mascherata? (aperta / trattenuta / finta / ambigua)”
Q6) “Qual è l’arco in 3 atti dentro la scena? (inizio → picco → rilascio) Descrivilo in una frase.”
Q7) “Che stile di regia vuoi? (realistico, cinematografico, minimalista, melodrammatico)”
Q8) “Che ritmo vuoi? (lento/medio/veloce) e quanto durano gli sguardi? (brevi/medi/lunghi)”
Q9) “Dialogo: c’è una battuta chiave da includere? (se no: ‘nessuna’)”
Regola: se l’utente indica “scena senza dialoghi”, salta Q9 e chiedi:
“Che gesto minimo deve sostituire la battuta? (es. deglutisce, inspira, distoglie lo sguardo)”
Fase 2 — Output 1: FACS Emotion JSON (prima dello storyboard)
Quando hai abbastanza informazioni, generi sempre un JSON chiamato “facs_emotion_profile”.
Il JSON descrive:
- scene_meta: tipo scena, tono, durata stimata, stile regia
- characters: 1–2 personaggi con note (età apparente opzionale, non sensibile; no etnia/religione)
- emotional_arc: start / peak / release (testo breve + target intensity)
- facs_palette: 2–5 “set” ricorrenti (label + lista AU con intensità A–E + note visive)
- timing_model: regole generali (attack_ms, hold_ms, release_ms) e variazioni (micro vs macro)
- beats: 6–10 beat astratti (non shot) con:
- beat_id
- label
- intent (cosa vuole comunicare il personaggio)
- facs (AU + intensità)
- gaze (contatto visivo / evitamento / sguardo laterale / sguardo basso)
- breath (calmo / spezzato / trattenuto)
- subtext (max 1 frase, non psicodiagnosi)
Regole per AU
- Usa solo AU dal set supportato (sotto).
- Intensità: A–E (A minima, E massima).
- Se “mascherata/finta”: includi una palette “mask” (es. AU12 senza AU6) e una palette “leak” (micro segnali: AU4, AU7, AU14, AU17, AU23/24).
Set AU supportate (principali)
- Sopracciglia/occhi: AU1, AU2, AU4, AU5, AU6, AU7, AU41, AU43, AU45
- Naso/labbra/mento: AU9, AU10, AU12, AU14, AU15, AU17, AU20, AU23, AU24, AU25, AU26, AU27, AU28
Mappature pratiche (solo come guida, non rigida)
- sorriso genuino: AU12 + AU6
- sorriso sociale/finto: AU12 senza AU6 (o AU12 basso)
- rabbia: AU4 + AU7 + AU23/24 (eventualmente AU5)
- tristezza: AU1 + AU15 (+ AU17)
- sorpresa: AU1/AU2 + AU5 + AU26
- disgusto/disprezzo: AU9 o AU10 (+ AU14 spesso “smirk” laterale)
Il JSON deve essere valido e senza commenti.
Fase 3 — Richiesta asset (obbligatoria, dopo il FACS Emotion JSON)
Subito dopo aver mostrato “facs_emotion_profile”, chiedi:
“Carica un’immagine del character (o reference), e un’immagine della scena/location (o reference).”
Se non può caricare: chiedi descrizione testuale dettagliata (volto/capelli/abbigliamento e layout della location + luce).
Fase 4 — Output 2: Storyboard JSON (solo dopo asset o descrizione alternativa)
Quando hai asset o descrizione sufficiente, produci “storyboard_shotcard_json” con 8 shot:
- shot_id: SHOT_01..SHOT_08
- dur_sec (somma ~ durata target)
- framing (ECU/CU/MCU/MS/WS)
- lens_mm (opzionale)
- camera_move (static/handheld/dolly-in/dolly-out/pan/tilt)
- subject (chi è in quadro)
- action_beat (azione minima visibile)
- dialogue (testo o "")
- subtext (max 1 frase)
- facs:
- au_list: [{au, name, intensity_AE, evidence}]
- timing: {attack_ms, hold_ms, release_ms}
- gaze: (eye_contact/avoid/side/down/up)
- continuity_note (coerenza con shot precedente)
- intent (cosa deve “passare” allo spettatore)
Regole di coerenza e qualità
- Evoluzione emozionale: start → escalation → peak → release → aftertaste.
- Alterna macro-espressioni e micro-espressioni: non tutto “alto” sempre.
- Se l’emozione è “trattenuta”: usa AU compressive (AU23/AU24, AU7) e timing più breve (micro leak).
- Se è “aperta”: AU più ampie e hold più lungo.
- Non inventare elementi non richiesti (oggetti, persone, violenza).
- Evita linguaggio clinico e inferenze su tratti personali.
Output
- Se l’utente non chiede “solo JSON”: puoi inserire UNA riga tra Fase 2 e Fase 3 per chiedere gli asset.
- Se chiede “solo JSON”: restituisci soltanto i due JSON finali (facs_emotion_profile e storyboard_shotcard_json).
Avvio immediato
- Inizia sempre con la domanda della Fase 0: “Che tipo di scena emozionale è?” e proponi le categorie.Old Indian Chief
{
"storyboard_shotcard_json": {
"scene_meta": {
"duration_sec_total": 15,
"location": "villaggio nel deserto devastato da un assalto, notte; vento e polvere; luce lunare e braci residue",
"style": "cinematografico",
"tempo": "veloce",
"gaze_duration": "brevi",
"dialogue": ""
},
"shots": [
{
"shot_id": "SHOT_01",
"dur_sec": 1.5,
"lens_mm": 35,
"framing": "WS",
"camera_move": "slow_dolly_in",
"subject": "CHAR_01 solo, in mezzo alle rovine",
"action_beat": "Il vento solleva polvere e brandelli di stoffa; lui è immobile, come inchiodato.",
"dialogue": "",
"subtext": "non devo crollare qui",
"facs": {
"au_list": [
{ "au": "AU4", "name": "Brow Lowerer", "intensity_AE": "C", "evidence": "fronte appena chiusa, sguardo duro" },
{ "au": "AU24", "name": "Lip Pressor", "intensity_AE": "C", "evidence": "bocca serrata, mascella ferma" }
],
"timing": { "attack_ms": 220, "hold_ms": 420, "release_ms": 260 },
"gaze": "eye_contact"
},
"continuity_note": "Introduce luogo e isolamento; taglio verso il volto senza cambiare asse."
},
{
"shot_id": "SHOT_02",
"dur_sec": 1.6,
"lens_mm": 85,
"framing": "CU",
"camera_move": "static",
"subject": "Volto di CHAR_01 (primo piano intenso)",
"action_beat": "Un micro-aggancio del ricordo lo attraversa: pupille ferme, respiro trattenuto.",
"dialogue": "",
"subtext": "se lo mostro, crollo",
"facs": {
"au_list": [
{ "au": "AU4", "name": "Brow Lowerer", "intensity_AE": "C", "evidence": "sopracciglia abbassate e ravvicinate" },
{ "au": "AU24", "name": "Lip Pressor", "intensity_AE": "C", "evidence": "labbra pressate senza tremare" }
],
"timing": { "attack_ms": 90, "hold_ms": 140, "release_ms": 110 },
"gaze": "eye_contact"
},
"continuity_note": "Match cut dal WS al CU mantenendo direzione dello sguardo."
},
{
"shot_id": "SHOT_03",
"dur_sec": 1.8,
"lens_mm": 85,
"framing": "ECU",
"camera_move": "handheld_subtle",
"subject": "Dettaglio occhi + sopracciglia, pelle tesa",
"action_beat": "Lo sguardo scatta di lato (breve), come per evitare l’immagine mentale; un tremore minimo nel contorno occhi.",
"dialogue": "",
"subtext": "non devo perdere il controllo",
"facs": {
"au_list": [
{ "au": "AU7", "name": "Lid Tightener", "intensity_AE": "C", "evidence": "palpebre tese, sguardo controllato" },
{ "au": "AU45", "name": "Blink", "intensity_AE": "A", "evidence": "blink rapido da stress" }
],
"timing": { "attack_ms": 90, "hold_ms": 140, "release_ms": 110 },
"gaze": "side"
},
"continuity_note": "Aumenta tensione con ECU e micro-movimento camera."
},
{
"shot_id": "SHOT_04",
"dur_sec": 1.9,
"lens_mm": 50,
"framing": "CU",
"camera_move": "static",
"subject": "CHAR_01 volto + mano che sale",
"action_beat": "La mano sale e si appoggia su guancia/fronte (autocontenimento), come a tenere insieme il volto.",
"dialogue": "",
"subtext": "stringi, stringi, non far uscire niente",
"facs": {
"au_list": [
{ "au": "AU24", "name": "Lip Pressor", "intensity_AE": "D", "evidence": "labbra serrate con più forza" },
{ "au": "AU7", "name": "Lid Tightener", "intensity_AE": "C", "evidence": "tensione palpebre, sguardo duro" },
{ "au": "AU17", "name": "Chin Raiser", "intensity_AE": "B", "evidence": "mento teso, mandibola trattenuta" }
],
"timing": { "attack_ms": 220, "hold_ms": 420, "release_ms": 260 },
"gaze": "side"
},
"continuity_note": "Introduce gesto chiave mani-al-volto come leitmotiv."
},
{
"shot_id": "SHOT_05",
"dur_sec": 2.0,
"lens_mm": 85,
"framing": "CU",
"camera_move": "micro_dolly_in",
"subject": "CHAR_01, la maschera si incrina",
"action_beat": "Per un attimo la maschera cede: interno sopracciglia su, angoli bocca giù (micro leak). Lui spegne subito tutto.",
"dialogue": "",
"subtext": "sta emergendo",
"facs": {
"au_list": [
{ "au": "AU1", "name": "Inner Brow Raiser", "intensity_AE": "B", "evidence": "interno sopracciglia che si solleva per un attimo" },
{ "au": "AU15", "name": "Lip Corner Depressor", "intensity_AE": "B", "evidence": "angoli bocca che cedono appena" },
{ "au": "AU28", "name": "Lip Suck", "intensity_AE": "A", "evidence": "labbra risucchiate per autocontrollo" }
],
"timing": { "attack_ms": 90, "hold_ms": 140, "release_ms": 110 },
"gaze": "down"
},
"continuity_note": "Il leak prepara il picco: subito dopo arriva la rabbia."
},
{
"shot_id": "SHOT_06",
"dur_sec": 2.1,
"lens_mm": 85,
"framing": "ECU",
"camera_move": "handheld_tighter",
"subject": "CHAR_01 (picco: rabbia)",
"action_beat": "Lampo di rabbia: lo sguardo torna frontale, palpebre serrate, bocca pressata fino a sbiancare; respiro spezzato.",
"dialogue": "",
"subtext": "è ingiusto",
"facs": {
"au_list": [
{ "au": "AU4", "name": "Brow Lowerer", "intensity_AE": "E", "evidence": "contrazione forte tra le sopracciglia" },
{ "au": "AU7", "name": "Lid Tightener", "intensity_AE": "D", "evidence": "sguardo duro, palpebre serrate" },
{ "au": "AU24", "name": "Lip Pressor", "intensity_AE": "E", "evidence": "bocca serrata con forza" },
{ "au": "AU23", "name": "Lip Tightener", "intensity_AE": "C", "evidence": "tensione rigida del contorno labbra" }
],
"timing": { "attack_ms": 220, "hold_ms": 420, "release_ms": 260 },
"gaze": "eye_contact"
},
"continuity_note": "Questo è il picco (peak) dell’arco; subito dopo il volto si copre."
},
{
"shot_id": "SHOT_07",
"dur_sec": 2.2,
"lens_mm": 50,
"framing": "CU",
"camera_move": "static",
"subject": "CHAR_01 con copertura parziale del viso",
"action_beat": "L’altra mano sale e copre parzialmente il viso; lo sguardo evita, come a proteggere ciò che sta arrivando.",
"dialogue": "",
"subtext": "non farmi vedere",
"facs": {
"au_list": [
{ "au": "AU23", "name": "Lip Tightener", "intensity_AE": "C", "evidence": "bocca rigida sotto la mano" },
{ "au": "AU28", "name": "Lip Suck", "intensity_AE": "B", "evidence": "labbra risucchiate, contenimento" }
],
"timing": { "attack_ms": 90, "hold_ms": 140, "release_ms": 110 },
"gaze": "avoid"
},
"continuity_note": "Transizione dal picco rabbia al cedimento: la mano ‘fa da diga’."
},
{
"shot_id": "SHOT_08",
"dur_sec": 1.9,
"lens_mm": 85,
"framing": "CU",
"camera_move": "slow_dolly_out",
"subject": "CHAR_01 (rilascio: tristezza/perdita)",
"action_beat": "La mano scende appena; lo sguardo cala. La bocca si apre per un fiato corto. Tristezza nuda, senza parole.",
"dialogue": "",
"subtext": "l’assenza pesa",
"facs": {
"au_list": [
{ "au": "AU1", "name": "Inner Brow Raiser", "intensity_AE": "D", "evidence": "sopracciglia interne sollevate, cedimento" },
{ "au": "AU4", "name": "Brow Lowerer", "intensity_AE": "C", "evidence": "fronte ancora contratta, conflitto interno" },
{ "au": "AU15", "name": "Lip Corner Depressor", "intensity_AE": "D", "evidence": "angoli bocca verso il basso" },
{ "au": "AU17", "name": "Chin Raiser", "intensity_AE": "C", "evidence": "mento teso, tremore trattenuto" },
{ "au": "AU41", "name": "Lid Droop", "intensity_AE": "B", "evidence": "sguardo che si appesantisce" },
{ "au": "AU25", "name": "Lips Part", "intensity_AE": "B", "evidence": "labbra si separano per il fiato" }
],
"timing": { "attack_ms": 220, "hold_ms": 420, "release_ms": 260 },
"gaze": "down"
},
"continuity_note": "Chiusura con aftertaste: dal CU torna spazio con dolly out, lasciando il vento protagonista."
}
]
}
}

Direi che il risultato sia davvero impressionante. Per questa generazione ho utilizzato Seedance 2.0 e devo ammettere che ha interpretato le indicazioni FACS in modo estremamente accurato.
Certo, c’è ancora qualche lieve deviazione rispetto allo storyboard originale, ma stimerei comunque il livello di controllo intorno all’80%, che non è affatto poco.
Alla fine bisogna sempre ricordare che, quando si lavora con l’AI generativa, ridurre troppo l’entropia significa anche limitare la capacità del modello di diffusione di esplorare il processo di denoise in maniera naturale.
…ok, questa era probabilmente la frase più nerd che abbia scritto oggi.
Se ti piace il cinema e la tecnologia ti propongo di restare in contatto su linkedin a: https://www.linkedin.com/in/andreatonin/
Nerd per passione e per professione da oltre 30 anni, lavoro nel mondo dell’innovazione tecnologica come CTO e consulente, progettando ecosistemi software complessi e scalabili. Parallelamente mi dedico alla formazione informatica, condividendo esperienze e buone pratiche maturate sul campo.
Scopri di più sulla mia attività di consulenza su lucedigitale.com Mi trovi anche su LinkedIn




















