• Non ci sono risultati.

Animazione della lingua

10.4 Workflow di Papagayo-NG

Prima di incominciare a lavorare su Papagayo-NG è necessario avere registrato su traccia audio il dialogo che si vuole utilizzare. Sebbene sia possibile usare un audio appositamente creato per questa fase, il consiglio è di utilizzare quello che sarà l’audio definitivo all’interno del prodotto animato, o se questo non fosse possibile, di usare la traccia audio registrata durante la

10.4 – Workflow di Papagayo-NG

fase di cattura delle espressioni facciali. In pratica ciò che serve è l’audio che corrisponda il più possibile a quanto verrà mostrato su schermo. Per quanto riguarda Papagayo-NG, la componente del file audio che più è determinante sul risultato finale è il suo sviluppo temporale, ovvero le pause e il ritmo all’interno del discorso. Infatti, Papagayo non è in grado di percepire altre informazioni come le differenti intonazioni o lo stato emotivo.

Per essere sicuri di poter importare correttamente il file audio all’interno del programma, la traccia audio dovrebbe essere salvata con un formatoWAV; se si utilizza FaceCap per il mocap facciale, la traccia audio registrata sarà già nel formato corretto.

Dopo aver aperto Papagayo-NG, la prima cosa da fare è importare il file audio; per fare questo bisogna andare su File > Open (o con lo shortcut Ctrl+O) > si aprirà una finestra nella quale sarà possibile navigare all’interno del proprio sistema in modo da andare ad indicare il file che dovrà essere utilizzato, dopo aver selezionato il file corretto > premere Open. All’interno della Waveform View verrà mostrata la forma d’onda della traccia audio appena importata, tale forma d’onda risulterà campionata in base al frame rate indicato nell’apposita casella di input sopra la Mouth View, di default è settato a 24 fps ma è fondamentale utilizzare lo stesso frame rate che verrà poi utilizzato nella fase di animazione all’interno di Blender.

Per riprodurre l’audio è possibile premere il pulsante Play, oppure è possibile scorrere il mouse con il tasto sinistro premuto sopra la forma d’onda; in questo modo ci si può posizionare su uno specifico fotogramma.

Dopo aver importato il filewav possiamo notare che sia nella finestra Current Voice che in Voice List è stata automaticamente aggiunta una nuova voce denominata Voice 1, questo perché Papagayo-NG consente di gestire più voci che compaiono all’interno dello stesso audio; tuttavia, si consiglia di utilizzare tracce audio nelle quali compare un’unica voce in modo da rendere il processo di lavoro il più lineare ed intuitivo possibile. Infatti, la presenza di due o più voci differenti introduce un livello di complessità che sarebbe meglio evitare. Il Voice name può essere editato all’interno della finestra Current Voice nell’apposita casella di input.

Avendo importato il file audio è ora possibile procedere con l’inserimento del testo relativo a quanto detto nel dialogo. Il testo va inserito nell’apposita sezione denominata Spoken text; come si può intuire da questo termine il testo che andrà inserito dovrà corrispondere il più fedelmente possibile a quanto detto nella traccia audio.

Il tempo necessario a compiere questa fase dipende molto dalla lunghezza del dialogo e dal numero di parole contenute; tuttavia, se la performance catturata in fase di registrazione corrisponde a quanto indicato sulla sceneggiatura, allora diventa possibile effettuare una semplice operazione di copia/incolla risparmiando, in questo modo, molto lavoro. Nella maggior parte dei casi, però, risulta necessario apportare alcune modifiche dovute a possibili improvvisazioni o rivisitazioni effettuate in fase di ripresa. Si ricorda che Reverie Dawnfall, sebbene sia un prodotto italiano, è pensato per essere distribuito a livello internazionale, quindi sceneggiatura e prodotto finale saranno realizzati in lingua inglese; questo ci consente di utilizzare il CMUdict inglese, che al momento è quello più affidabile.

Durante l’inserimento del testo, per ottenere il miglior risultato possibile, si consiglia di seguire delle linee guida; in particolare bisogna omettere dal testo tutta la punteggiatura in quanto questa non partecipa alla definizione dei fonemi, anzi potrebbe creare distrazioni non volute. Si consiglia, inoltre, ogni volta che si verifica una pausa piuttosto evidente nel discorso, di procedere con la scrittura del testo partendo da una nuova riga in modo da separare in maniera

chiara le diverse frasi e le diverse parole. Come vedremo questo risulta molto utile nel momento in cui si dovrà procedere con il posizionamento dei fonemi nei vari fotogrammi.

Se all’interno del nostro testo compaiono parole inusuali, bisogna assicurarsi che esse siano presenti nei CMUdict utilizzati da Papagayo-NG, se così non fosse, è possibile procedere con l’aggiunta del nuovo termine all’interno dell’user_dictionary come visto nella sezione10.2.

Una volta inserito correttamente il testo relativo a quanto pronunciato all’interno del file audio, è possibile procedere con la mappatura del testo nel set di fonemi da noi stabilito. Nella finestra Current Voice, sotto Phonetic breakdown è possibile definire la lingua utilizzata, nel nostro caso English e il set di fonemi da utilizzare, nel nostro casotongue_position; inoltre è possibile indicare, nella finestra Mouth View, la tipologia di preview che vogliamo utilizzare, nel nostro caso8 – Tongue Position. Ovviamente tale set non è presente nella versione base di Papagayo-NG ma, come visto nella sezione10.3, è stato creato all’interno di questo lavoro di tesi appositamente per la realizzazione di Reverie Dawnfall, quindi sarà necessario utilizzare la versione modificata di Papagayo-NG.

Impostati lingua e set di fonemi è possibile cliccare sul bottone Breakdown, qualora all’interno del testo fossero ancora presenti parole non riconosciute, comparirà una finestra di dialogo che ci inviterà ad applicare manualmente la mappatura dei fonemi.

Terminata la mappatura, all’interno della finestra Waveform View comparirà il testo scritto precedentemente in tre livelli di rappresentazione. Il primo livello, caratterizzato dal color verde, rappresenta il testo suddiviso nelle diverse frasi, ogni frase corrisponde al testo precedentemente scritto sulla stessa riga. Il secondo livello, di color salmone, crea una nuova casella per ogni parola presente nel testo; mentre l’ultimo livello, caratterizzato dal color viola, riporta i diversi fonemi individuati per ciascuna parola. Tale organizzazione a livelli risulta molto utile nella fase che seguirà, ovvero il posizionamento a livello temporale dei fonemi.

Figura 10.2: Waveform View

Come detto precedentemente, l’obiettivo è quello di creare una relazione tra i fonemi e i frame nei quali essi vengono espressi. Papagayo-NG non è in grado di determinare automaticamente tale corrispondenza temporale ma demanda il compito all’utente. Per agevolare il processo, viene

10.4 – Workflow di Papagayo-NG

fornita la suddivisione a livelli vista sopra. Oltre a essere a livelli è anche una struttura gerarchica in quanto modificare la durata e la posizione di una frase, comporterà una corrispondente modifica delle parole comprese nella frase, mentre non si avrà alterazione delle restanti parti.

Sfruttando lo stesso principio, i fonemi corrispondenti ad una parola, sono legati all’estensione temporale e alla posizione della parola stessa.

Questo consente di agire con diversi livelli di precisione, partendo dalle frasi, passando dalle parole ed infine, se necessario, andando ad agire direttamente sui fonemi. Tale suddivisione gerarchica è il motivo per il quale precedentemente si è consigliato di dividere su diverse righe di testo le varie componenti del discorso.

La fase di posizionamento è quella che richiede tempistiche maggiori, infatti, a seconda del livello di precisione che si vuole ottenere, sarà necessario procedere con un approccio trial

& error e saranno tipicamente necessarie diverse modifiche ed aggiustamenti finali. Tuttavia, siccome in questo caso non stiamo andando ad animare le labbra del personaggio ma solo la sua lingua, è possibile procedere un po’ più velocemente. Le tempistiche di questa fase variano molto in base alla lunghezza della traccia audio, alla complessità e al numero di parole presenti nel testo e al livello di precisione che si vuole ottenere. Il posizionamento corretto è facilitato da diversi elementi forniti dall’interfaccia del programma:

• la presenza della forma d’onda dell’audio che fornisce a livello visivo un’indicazione immediata delle pause e dell’attacco delle diverse parole.

• la struttura gerarchica a livelli che unisce frasi, parole e fonemi.

• la possibilità di avere un riferimento audio per i vari frame, in modo da verificare effettiva-mente la durata e la posizione di parole e fonemi.

• la possibilità di vedere una preview stilizzata dell’animazione ottenuta, in modo da verificare l’effettivo timing dei diversi fonemi.

Soddisfatti del posizionamento dei fonemi generati è possibile esportare il risultato in modo da poterlo utilizzare all’interno di Blender. Per fare questo, nella finestra Current Voice, sotto Export è necessario prima definire che tipologia di dati vogliamo esportare, le opzioni sono MOHO, ALELO e Images, per il nostro progetto bisogna selezionare MOHO. Dopo di che è possibile premere il bottone Export..., questo aprirà una nuova finestra che consentirà di nominare il file e di decidere dove andarlo a salvare.

Il file verrà creato nel formato.dat e sarà così formato: nella prima riga compare la scritta

‘MohoSwitch1’; dopo di che su ogni riga viene indicato, in ordine temporale di comparsa, il numero di frame e il fonema/visema relativo (es1 rest). Un esempio più completo di questo formato può essere consultato nell’appendiceB.

Compiendo questi passi il file sarà esportato con successo; bisogna precisare che tale file DAT riguarda unicamente la corrispondenza frame-fonema e non il progetto totale sulla quale si è lavorato fino ad ora, pertanto per salvare il progetto di Papagayo-NG è necessario andare su File > Save (o Save as) oppure utilizzare lo shortcut Ctrl+S; il file verrà salvato con estensione .pgo e conterrà tutto il lavoro svolto all’interno di Papagayo-NG.

Dopo aver esportato con successo il file.dat, il lavoro su Papagayo-NG può considerarsi terminato e diviene possibile spostarsi su Blender in modo da integrare l’animazione della lingua all’interno del più ampio processo di animazione facciale. L’add-on di Blender ReveRig, che verrà utilizzato per gestire l’animazione della lingua, verrà trattato in modo approfondito nel capitolo

11ma è necessario andare ad indicare alcuni prerequisiti necessari che il personaggio 3D, su cui si va a realizzare l’animazione, dovrà rispettare.