Vediamo insieme un tutorial su come gestire delle linee che collegano tra loro due livelli animati.

Come esempio utilizziamo due semplici livelli forma. Li allineiamo sull’asse orizzontale e posizioniamo il punto di ancoraggio esattamente al centro del livello (per fare questo ricordiamoci di attivare il check aggancio posizionato nella barra degli strumenti), utilizzando lo strumento Sposta sotto (Pan Behind Tool).

Ora disegniamo una linea sempre con un livello forma partendo da un rettangolo con punto di ancoraggio sulla sinistra e adattando opportunamente lo spessore tramite la scala verticale.

Ora viene il difficile: dovremo adattare posizione e lunghezza della linea in funzione della posizione e della distanza tra i due livelli.

Per fare questo utilizzeremo un’espressione da applicare sui parametri di trasformazione della linea. In particolare dovremo animare la posizione, la scala orizzontale e la rotazione.

Per la posizione tutto è piuttosto semplice. E’ sufficiente far coincidere la posizione della linea con la posizione di uno dei due livelli.

Sulla riga di espressione scriveremo:

thisComp.layer(“Livello I”).transform.position)

Passiamo ora al ridimensionamento della lunghezza della linea in funzione della distanza tra i livelli.

Sulla riga di espressione di scala andremo pertanto a modificare solo la scala orizzontale calcolandola in base alla distanza tra i due livelli forma:

[length(thisComp.layer(“Livello I”).transform.position,thisComp.layer(“Livello II”).transform.position),value[1]]

Abbiamo ottenuto una scala perfettamente proporzionale alla distanza tra i due livelli. Ma la sola proporzionalità non basta. Dovremo adattare la distanza relativa in modo da far comparire la linea solo tra i due livelli. Pertanto nell’espressione che definisce la lunghezza utilizzeremo un fattore di divisione che ci permette di delimitare opportunamente la lunghezza della linea.

Nel nostro caso, con una composizione con risoluzione 1920x1080,  il fattore è all’incirca pari a 19.

E per finire si passa alla rotazione della linea che sarà legata all’angolo generato tra l’asse x e il segmento che unisce i punti di ancoraggio dei due livelli.

Facciamo uso della funzione trigonometrica arcotangente (Math.atan) che calcola appunto l’angolo in radianti generato da un segmento. I radianti andranno poi convertiti in gradi tramite la funzione radiansToDegrees.

L’espressione da inserire nella rotazione della linea è pertanto la seguente:

var livelloi = thisComp.layer(“Livello I”).transform.position;

var livelloii = thisComp.layer(“Livello II”).transform.position;

radiansToDegrees( Math.atan2( livelloi[1]-livelloii[1], (livelloi[0]-livelloii[0]) ) )-180

(siccome l’arcotangente calcola l’angolo con fase opposta rispetto alla rotazione di livello adattiamo il risultato sottrando l’angolo di fase 180°)

Animando la posizione dei due livelli otteniamo una linea di connessione sempre posizionata correttamente.

Abbiamo utilizzato delle espressioni legate ad un livello forma al posto del classico e conosciuto effetto Raggio. Questo per consentirci ampie possibilità di personalizzazione nell’animazione, come la possibilità di dare elasticità e struttura alla linea stessa (tramite le proprietà dei livelli forma). Tutte cose che con il solo effetto Raggio non sono attuabili.

%d blogger hanno fatto clic su Mi Piace per questo: