Sistemi inerziali in After Effects

Date un’occhiata a questo video (naturalmente realizzato con la versione 1.2 di trackFinger):

Come potete vedere il “gioco” che si sta svolgendo sullo schermo viene controllato dall’inclinazione dell’iPad. Come vi ho già fatto vedere precedentemente, con l’ultima versione di trackFinger è relativamente facile ricavare l’inclinazione del device a partire dai dati dell’accelerometro. E dove per “relativamente facile” intendo dire che ho già preparato sul sito dei trackFinger il codice relativo, che incollo anche qua per completezza:

accelerometerPosition = thisComp.layer ("accelerometer").transform.position;
accelerometerPositionSmooth = accelerometerPosition.smooth (0.1, 3);
x = accelerometerPositionSmooth [0];
y = accelerometerPositionSmooth [1];
z = accelerometerPositionSmooth [2];
roll = Math.atan (y / Math.sqrt (x*x + z*z));
rollDegrees = -(roll * 180) / Math.PI;

Quello che però ho voluto realizzare in questo video non è semplicemente l’inclinazione della telecamera che risponde ai movimenti del device, ma qualcosa di più complesso, decisamente molto più complesso…

Quello che ho realizzato è un sistema che “naviga” in un mondo virtuale 3D e ruota e si sposta in corrispondenza con la rotazione del device. Se la telecamera rimanesse ferma la cosa non sarebbe per niente complessa, qui però dobbiamo rispondere ai comandi di virata non solo con lo spostamento ma con un cambio di direzione e di conseguenza del vettore di velocità.

Dato che lo spostamento (in questo caso su due assi, X e Z) dipende dall’integrazione discreta (leggasi, sommatoria) della velocità, ed è la velocità il valore che noi abbiamo, dobbiamo effettuare dei calcoli relativamente complessi. Infatti tutta la traiettoria che viene seguita dalla camera deriva essenzialmente dal punto iniziale e dall’evolversi della velocità istante per istante. Facciamo bene attenzione: non stiamo parlando di un’animazione classica in Adobe After Effects in cui indichiamo il punto iniziale è il punto inizia finale e il software genera lo spostamento tra i due fotogrammi chiave. In questo caso noi indichiamo, fotogramma per fotogramma, qual è la velocità del nostro punto.

Se Adobe After Effects consentisse di immagazzinare variabili globali, il problema non sarebbe molto complesso: istante per istante dovremmo “sommare” alla posizione corrente il relativo vettore di velocità. Il programma di Adobe però non riesce a memorizzare variabili globali e dunque, per ogni fotogramma, occorre ricostruirsi l’intero percorso con un ciclo che incrementa di una unità ad ogni fotogramma.

Inoltre ho dovuto trovare una soluzione per legare il vettore di velocità all’inclinazione del device, in modo che quando c’è una virata non solo la camera si inclina ma anche il vettore di velocità si sposta, con un minimo di trigonometria (ricordate il seno e coseno?) in modo da ottenere il vettore nelle due dimensioni.

Notate che nell’angolo in alto a destra del display è presente questo video:

Si tratta del video della stessa sequenza in cui la telecamera riprende la scena dall’alto è il punto che si sposta genera una particella mediante il filtro Particular di Trapcode (per la precisione 60 particelle al secondo, dunque una per fotogramma, particelle senza velocità così mantengono la posizione di creazione).

L’unione dei due video genera una scena vista da due punti di vista (cosa relativamente comune nei giochi di azione) e incrementa ancora di più il livello di realismo.

Nota: i tempi di calcolo sono molto elevati e diventano sempre più lunghi man mano che la sequenza evolve, questo perché nel primo fotogramma il ciclo dura una volta, nel secondo fotogramma il ciclo è lungo due unità di tempo. Nell’ultimo fotogramma, circa il millesimo, abbiamo un ciclo che si ripete 1000 volte, e dunque il tempo di elaborazione è notevole, sul mio computer, un MacBook Pro di due anni e mezzo fa, siamo nell’ordine di 6-7 secondi a fotogramma. A questi tempi si devono aggiungere anche i tempi di rendering mediante il plugin Element 3D di Video Copilot.

Insomma, una sequenza particolarmente complessa da rendere, però una sequenza che non ha nessun fotogramma chiave perché tutto viene generato automaticamente mediante le espressioni a partire dai dati catturati da trackFinger. E, di conseguenza, estremamente realistica!

Infine lo schermo del videogioco viene inserito nel monitor grande con un tracciamento realizzato con un Mocha AE.

Non so a voi, ma a me, se non esteticamente, almeno in teoria, questa cosa mi sembra una gran figata…

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...