Animazione facciale
9.1 Apple ARKit
Per rendere il processo di animazione facciale più veloce e più adatto ad un contesto indipen-dente si è deciso di adottare una tecnica di acquisizione dati basata su una tecnologia di motion capture markerless: ARKit. La tecnologia che si cela dietro tali strumenti rappresenta benissimo il progresso tecnologico nel settore della performance capture markerless in real-time. ARKit, infatti, si basa sul lavoro svolto da Soufien Bouaziz [37] per il software commerciale Faceshift, utilizzato in produzioni cinematografiche di alto livello come Star Wars: Il risveglio della Forza prima di essere acquisito da Apple Inc. nel 2015 [38,39].
Nel 2017, Apple lancia sul mercato l’iPhoneX, smartphone dotato per la prima volta di una camera RGB-D, chiamata anche TrueDepth camera, appositamente pensata per integrarsi con il
neonato sistema di realtà aumentata di Apple [57]. Con l’uscita sul mercato della generazione iPhone 12 Pro, e la versione ARKit 4, ulteriori miglioramenti sono stati effettuati sia a livello hardware che software, infatti tali dispositivi hanno integrato un LiDAR Scanner che consente di catturare informazioni sulla profondità più dettagliate.
Come funziona
Tramite l’Apple ARKit Development kit, i programmatori di applicazioni iOS sono in grado di accedere e di utilizzare i dati acquisiti e messi a disposizione da ARKit per produrre esperienze di Realtà Aumentata (AR), tramite i dispositivi compatibili. Per quanto riguarda il mocap fac-ciale il sistema ARKit, tramite la camera fontale dei dispositivi idonei, è in grado di registrare informazioni relative alla posizione, orientamento, topologia e all’espressione di un determinato volto [58]. Siccome posizione e orientamento del volto, nel nostro caso sono già catturati tramite tuta inerziale SmartSuit Pro, la parte che maggiormente ci interessa è relativa alla cattura delle espressioni facciali.
ARKit individua delle specifiche caratteristiche del volto, basandosi sul FACS, e tramite dei coefficienti appositi, va a descrivere come queste aree del volto vengono modificate e deformate, ovvero le blendshape. I dispositivi idonei all’utilizzo di ARKit sono in grado di registrare in tempo reale le espressioni facciali di un utente e tali espressioni vengono gestite secondo un modello basato sulle blendshape.
In pratica, fa uso di un dizionario in cui le chiavi sono i nomi delle blendshape e il valore è un numero floating point che va da 0 (neutrale) a 1 (massimo movimento) [59]. In totale ARKit suddivide le espressioni facciali in 52 blendshape, ciascuna delle quali andrà ad influenzare una specifica area del volto e andrà ad identificare uno specifico movimento (tabella9.1e figura9.1).
Tabella 9.1: Le 52 blendshape definite da ARKit [59]
Area del volto Nomi delle blendshape
Occhi (14) eyeBlinkLeft, eyeLookDownLeft, eyeLookInLeft, eyeLookOutLeft, eyeLookUp-Left, eyeSquinteyeLookUp-Left, eyeWideeyeLookUp-Left, eyeBlinkRight, eyeLookDownRight, eyeLook-InRight, eyeLookOutRight, eyeLookUpRight, eyeSquintRight, eyeWideRight Mascella (4) jawForward, jawLeft, jawRight, jawOpen
Bocca (23) mouthFunnel, mouthPucker, mouthLeft, mouthRight, mouthRollUpper, mouth-RollLower, mouthShrugUpper, mouthShrugLower, mouthClose, mouthSmile-Left, mouthSmileRight, mouthFrownmouthSmile-Left, mouthFrownRight, mouthDimplemouthSmile-Left, mouthDimpleRight, mouthUpperUpLeft, mouthUpperUpRight, mouthLower-DownLeft, mouthLowerDownRight, mouthPressLeft, mouthPressRight, mouth-StretchLeft, mouthStretchRight
Sopracciglia (5) browOuterUpRight, browDownRight, browInnerUp, browDownLeft, brow-OuterUpLeft
Guance (3) cheekPuff, cheekSquintLeft, cheekSquintRight Naso (2) noseSneerLeft, noseSneerRight
Lingua (1) tongueOut
La fase di trasferimento dei dati raccolti dal sistema di mocap al modello da animare, come abbiamo già visto nella sezione5.3.4, si chiama retargeting. Con l’utilizzo della tecnologia ARKit, il retargeting deve essere gestito, per l’appunto, tramite un sistema di blendshape. Ciò significa che per ottenere la resa migliore, il modello che vogliamo andare ad animare deve essere costituito
9.1 – Apple ARKit
Figura 9.1: Le 52 blendshape definite da ARKit
dalle stesse blendshape che il sistema di mocap è in grado di registrare, ovvero deve essere dotato delle 52 blendshape riportate nella tabella9.1. Per funzionare in modo corretto, tali blendshape, oltre ad avere la giusta nomenclatura, dovranno corrispondere nella maniera più corretta possibile alle blendshape individuate da ARKit (figura9.1).
Prendiamo ad esempio la blendshapeeyeBlinkLeft, che già dal nome si intuisce corrispon-dere alla chiusura dell’occhio sinistro; se nel nostro modello la blendshape avente lo stesso nome invece di prevedere una corretta deformazione dell’occhio sinistro, per assurdo andasse a deforma-re parte della bocca, allora si verifichedeforma-rebbe un’incoedeforma-renza tra dato acquisito e deformazione effettiva.
Sebbene questo sia un esempio limite, non risulta invece raro che nel nostro modello 3D, la deformazione corrispondente ad una determinata blendshape non corrisponda in modo fedele a quanto indicato da ARKit; questo comporta la comparsa di evidenti deformazioni non volute e di un’animazione complessiva poco organica. Tutto ciò va assolutamente evitato, risulta per tanto essenziale prestare estrema attenzione in fase di creazione delle blendshape.
L’utilizzo delle blendshape pone quindi un forte limite, sia perché creare 52 blendshape consiste in un lavoro estremamente lungo e in un processo di trial & error, sia perché anche una piccola imprecisione nella definizione di una blendshape potrebbe creare interferenze non volute. Come si vedrà nella sezione9.2.1, tali limiti possono essere superati tramite l’utilizzo di appositi strumenti, in particolare con l’utilizzo dell’add-on di Blender Faceit.
Dall’altro lato però, l’utilizzo delle blendshape consente di trasferire l’animazione registrata su qualsiasi tipologia di volto, indipendentemente dalle proporzioni e dalla topologia poligonale, purché, ovviamente, le blendshape corrispondano (vedi figura9.2).
Di seguito si vanno a riassumere i vantaggi e gli svantaggi che possono derivare dall’utilizzo di un sistema di motion capture facciale markerless basato sulla tecnologia ARKit:
Figura 9.2: Animazione applicata a modelli con topologie differenti
Pro:
• Tale approccio consente di velocizzare il processo di animazione e di renderlo alla portata anche di animatori non specializzati.
• Non necessita di grossi investimenti in termini di software e hardware.
• Non risulta necessario effettuare le take di motion capture in uno studio di registrazione o in un ambiente in particolare, questo svincola il processo di animazione dalla disponibilità di ambienti di ripresa.
• Essendo un approccio markerless, non prevede un grosso lavoro di preparazione ma risulta sufficiente avere a disposizione uno smartphone e la giusta illuminazione per poter catturare l’animazione facciale.
• Non è necessaria una figura tecnica specializzata per effettuare le registrazioni, la cattura delle espressioni facciali può essere effettuata in maniera semplice e veloce da chiunque.
• Permette di andare ad animare una vasta gamma di volti umanoidi, purché dotati delle giuste blendshape.
Contro:
• I dispositivi che possono fare uso di tecnologia ARKit sono limitati, in particolare ad ora si limitano ai dispositivi Apple dotati di TrueDepth camera1. Ciò significa che se lo studio non ne possiede neanche uno sarà necessario effettuare un acquisto, e trattandosi di prodotti Apple il prezzo di mercato tipicamente è medio-alto (1000 € circa a seconda del tipo e delle condizioni del dispositivo). Tale spesa risulta comunque minore rispetto all’utilizzo della maggior parte dei sistemi di motion capture visti precedentemente.
• L’utilizzo di 52 blendshape crea un collo di bottiglia nella riproposizione di tali deformazioni per ciascun personaggio che si vuole animare.
• I dati acquisti potrebbero non garantire un’animazione soddisfacente, soprattutto se il risultato che si cerca è più vicino ad uno stile cartoon.
• Non fornisce strumenti che permettano di andare ad agire in maniera semplice ed intuitiva sui dati raccolti.
Quanto detto fino ad ora è relativo alla tecnologia messa a disposizione da Apple per gli sviluppatori di applicazioni iOS. La fase successiva consiste nell’identificare quale o quali ap-plicazioni utilizzare nella pipeline di produzione. Siccome la produzione di Reverie Dawnfall si
1Al momento della stesura di questo documento i dispositivi Apple dodati di TrueDepth camera sono: iPhone X, XR, XS, XS Max, 11, 11 Pro, 11 Pro Max, iPhone12...; iPad Pro di terza o quarta generazione
9.1 – Apple ARKit
basa sull’utilizzo di Blender, risulta fondamentale scegliere un’applicazione in grado di dialogare in maniera più o meno diretta con tale programma. Da questa esigenza sono state individuate due applicazioni, Face Capture di Rokoko e Face Cap di Bannaflak; entrambe si basano sulla tecnologia ARKit ed entrambe consentono di utilizzare i dati raccolti all’interno di Blender. Nelle sezioni9.1.1e9.1.2si andrà a descriverle brevemente e a riportarne pregi e difetti.
9.1.1 Face Capture di Rokoko
L’applicazione Face Capture di Rokoko è stata la scelta effettuata dai miei colleghi durante la realizzazione del secondo trailer di Reverie Dawnfall. Il motivo principale che ha spinto in questa direzione è il fatto che l’animazione dei personaggi viene effettuata tramite una tuta provvista di sistemi inerziali fornita dalla stessa azienda. Siccome sia i dati catturati tramite tuta, che i dati catturati tramite applicazione vengono elaborati all’interno dello stesso software, Rokoko Studio, questo consente di avere una pipeline di produzione integrata ed unica. Tuttavia, l’effettiva integrazione tra movimento del corpo e cattura facciale è limitata in quanto rimangono sostanzialmente due componenti separate.
Il vero vantaggio si verifica in fase di registrazione in quanto è possibile avere un riscontro immediato, tramite Rokoko Studio, di ciò che si sta catturando. Ma, visto il necessario lavoro di pulizia che richiede l’animazione del corpo, tale vantaggio risulta comunque poco sfruttato;
anche perché all’interno di Rokoko Studio non si ha la possibilità di agire sui dati relativi al volto, quindi il lavoro di animazione vero e proprio verrà comunque effettuato su Blender.
Per quanto riguarda il costo, l’applicazione risulta scaricabile gratuitamente ma per attivarne le funzionalità è necessario effettuare l’abbonamento all’add-on di Rokoko Studio che consente, per l’appunto, di dialogare ed importare i dati dal dispositivo mobile alla workstation. Tale abbonamento prevede un costo mensile di 39 $ se si sottoscrive annualmente, altrimenti 49 $ mensili, da aggiungere al costo di Rokoko Studio [60], che però per quanto riguarda Robin Studio è già stato effettuato.
Una volta importati i dati catturati all’interno di Rokoko Studio è possibile decidere come tali dati dovranno essere esportati. Nel nostro caso, i dati relativi all’animazione facciale devono essere esportati in formatoFBX (binario) in modo da essere letti facilmente all’interno di Blender.
Tali dati consistono in una mesh predefinita di un volto, dotata delle 52 blendshape individuate da ARKit, per ciascuna blendshape e per ciascun frame acquisito, sono riportati i valori di influenza nel range [0,1]. In questo modo risulta possibile trasferire l’animazione delle blendshape del fileFBX sul personaggio che si vuole animare.
La figura9.3mostra in9.3ail modello del volto generato da Rokoko e in9.3bla struttura dell’oggetto che viene importato. I dati che a noi interessano sono contenuti dentro la mesh nominata face.
9.1.2 Face Cap di Bannaflak
Seguendo gli stessi principi base visti prima, questa applicazione si fonda sull’utilizzo della tecnologia ARKit. Le differenze principali rispetto all’applicazione di Rokoko è che, in questo caso, non risulta necessario mediare attraverso un software proprietario ma l’applicazione consente di esportare direttamente i dati catturati sotto forma di fileFBX ASCII. Questo, tuttavia, ci obbliga ad effettuare una conversione di tale file in quanto Blender non è in grado di aprire file
(a) Modello 3D generato (b) Outliner interno a Blender
Figura 9.3: Oggetto fbx creato con Face Capture di Rokoko
ascii-fbx. Una soluzione semplice e gratuita consiste nell’utilizzare il programma Autodesk FBX Converter che, per l’appunto, consente di convertire l’ascii-fbx in un file FBX binario.
FaceCap consente di registrare ed esportare i dati anche gratuitamente tramite una versione di prova. Tuttavia, tale versione limita a pochi secondi (5s) la dimensione dei file catturati; se si vuole pieno accesso alle sue funzionalità sarà necessario effettuarne l’acquisto, il costo si aggira sui 60 $ [61]. Risulta quindi un ottimo investimento.
Oltre ad esportare il fileFBX contenente la mesh, le blendshape e l’animazione, consente di registrare e sincronizzare una traccia audio (formatoWAV) e di esportare i dati in un formato di testo.
Nella figura9.4viene mostrato in9.4ail modello 3D che viene creato da FaceCap e in9.4b la struttura dell’oggetto importato all’interno di Blender. I dati relativi all’animazione delle espressioni facciali sono contenuti dentro la mesh head. I restanti dati sono principalmente relativi al movimento della testa all’interno del volume di cattura, dati che a noi non servono in quanto già acquisti tramite la tuta Smartsuit Pro di Rokoko.
(a) Modello 3D generato (b) Outliner interno a Blender
Figura 9.4: Oggetto fbx creato con Face Cap di Bannaflak