6.3 – Animazione – Path e Constraints

Nell’animare un oggetto tramite keyframes location e rotation, magari diversificando le interpolazioni per le singole coordinate spaziali e/o angoli di rotazione, andremo a creare un percorso all’interno dello spazio 3D lungo il quale l’oggetto compirà anche delle rotazioni intorno alla propria origine. Nel caso avessimo già in mente una particolare traiettoria, potremo definire tale percorso modellando una curva e poi “costringere” l’oggetto a seguirla lungo la sua orientazione. Le curve che adotteremo come percorsi sono le  cioè delle curve nurbs di default piatte e rettilinee. L’oggetto che in questo paragrafo verrà animato lungo un percorso predefinito sarà la nostra camera, in quanto l’uso tipico di questa tecnica di animazione riguarda proprio i movimenti della telecamera all’interno di una scena. Definiamo il percorso modificando la curva path tramite i suoi punti di controllo, modellandola ad esempio nella vista top ortho (in tal caso essa resterà piana). Piazziamo la camera in modo che sia già preparata a seguire il percorso secondo la sua orientazione (visibile in Edit Mode come detto nel paragrafo 2.4) e dopo aver selezionato prima la camera e poi la nurbs, lanciamo il menu delle opzioni di parentela con Ctrl-P, scegliendo Follow Path.

Vedremo così apparire la linea tratteggiata che evidenzia la relazione di parentela figlio (camera) > padre.

Prima di lanciare l’animazione selezioniamo la curva e andiamo nel contesto Object Data cliccando l’icona delle properties qui nel pannello Path Animation

dal 100 di default al numero di fotogrammi che ci interessa, dopodiché potete pure avviare l’animazione. Osservando il Path in edit-mode notiamo che le frecce sono parallele al piano al quale la curva appartiene a meno che un punto di controllo non sia traslato lungo l’asse z.

Selezioniamo un punto di controllo e andiamo ad agire sul parametro Tilt situato nella sidebar della 3D View (tasto N), scheda Item, pannello Control Point.

Tramite Tilt potremo ruotare l’orientamento delle frecce e assistere a un avvitamento del percorso semplicemente digitando il valore in gradi della rotazione. Riavviando l’animazione dal punto di vista della camera, vedremo che in corrispondenza del punto di controllo la visuale ruoterà di un’inclinazione corrispondente al valore da noi deciso in Tilt. Per questo tipo di animazione non abbiamo ancora impostato alcun keyframe, e se desiderassimo un moto con delle variazioni di velocità, fino anche a delle sospensioni del movimento, dovremo ricorrere al Graph Editor, ma soltanto dopo aver compiuto un ulteriore passaggio. Innanzitutto vediamo come si presenta il Graph Editor selezionando la curva path (e non la camera).

Troviamo una linea retta (il moto a velocità costante), immagine in alto, che in realtà non è la classica interpolazione tra due keyframe che conosciamo, in quanto come detto in precedenza non abbiamo fissato ancora alcun tipo di keyframe. Andando a controllare nella sidebar del Graph Editor, scheda Modifier, scopriremo che questa retta è generata dal modificatore Expandend Polynomial, con il quale è possibile creare delle funzioni del tipo: y(x)=ax+bx2+cx3 (di default y=x).

Ma non temete, cancelliamo pure questo modificatore cliccando la x in alto a destra e vediamo come fare per tornare a manipolare una curva d’interpolazione come visto nei paragrafi precedenti. Ritorniamo al pannello Path Animation e ponendoci nel primo fotogramma dell’animazione fissiamo un keyframe per Evaluation Time pari a Zero.

Quindi andiamo nell’ultimo fotogramma e fissiamo un keyframe per Evaluation Time pari al numero dei nostri frame. Riavviamo l’animazione e vedremo che essa si compierà lungo il percorso con la classica interpolazione Bézier, che infatti sarà ora in bella vista nel Graph Editor.

A questo punto saremo in grado di definire il moto come meglio crediamo, ad esempio creando un punto di stasi nel quale camera si arresterà per qualche istante.

Una necessità che solitamente si ha nell’animare la camera lungo un percorso è quella di fare in modo che essa punti in modo costante un altro oggetto o zona nello spazio, come nelle immagini in alto a destra. Entriamo dunque nel contesto Constraints (vincoli) delle properties, icona dove cliccando si aprirà un ricco menù contenente tutti i vincoli.

I constraints arricchiscono le nostre possibilità di stabilire delle relazioni vincolanti tra oggetti, utili proprio nelle animazioni. Selezioniamo Track To (categoria Tracking) e impostiamolo esattamente come nell’immagine

ioè in Target andremo a inserire l’oggetto che la camera dovrà fissare. In To selezioniamo -Z, quindi Y in Up. Gli assi X Y e Z indicati in To e Up sono da intendersi appartenenti al riferimento locale della Camera, dove l’asse Z (local) è infatti la direzione in cui la camera osserva. Y in Up come suggerisce il nome è la direzione “sopra” dal punto di vista della camera. Il parametro Influence che di default è pari a uno, può essere abbassato per far si che la camera si svincoli progressivamente dal puntare l’oggetto. Variando il valore in influence, tramite keyframes, potremo fare in modo che la camera punti un oggetto in un determinato fotogramma (influence=1) per poi tornare a seguire il percorso (influence=0), oppure puntare un altro oggetto tramite altro Constraints di tipo Track To.

Approfondiamo ora alcuni degli strumenti constraints (vincoli) in particolar modo quelli della famiglia transform.

I primi quattro constraint della serie Copy sono d’immediata comprensione e in genere si rivelano utili in diversi tipi di animazione (con o senza simulazione fisica). Tramite questi vincoli potremo applicare dinamicamente a un qualsiasi oggetto le trasformazioni subite da un altro elemento della scena e ciò senza dover stabilire tra essi alcun legame di parentela. Nei constraint Copy Location/Rotation/Scale dobbiamo innanzitutto selezionare l’elemento dal quale ereditare le suddette trasformazioni, che di default vengono intese nell’orientamento Global (world space <> world space); dopodiché potremo scegliere le trasformazioni che riguardano solo uno o due dei tre assi x y z, ed eventualmente invertirle. Come impostazione di default, la casella Offset non è spuntata, ciò significa che al nostro oggetto verranno subito trasmesse la posizione, la rotazione e la scala del target. Attivando invece l’offset, le trasformazioni subite dal target verranno applicate allo stato originale del nostro oggetto. Basteranno solo pochi esperimenti per rendersi rapidamente conto del funzionamento e dell’utilità di questi tre constraint.

Copy Transforms non farà distinzione tra tipologie di trasformazione e replicherà su un qualsiasi oggetto le medesime trasformazioni applicate ad un altro.

Passiamo ai quattro constraint della serie Limit, anch’essi abbastanza intuitivi. Limit distance (Clamp Region > Inside) obbliga un oggetto a stare all’interno di una superficie sferica centrata sull’elemento indicato nel campo target e di diametro pari al valore distance, oppure, impostando Clamp Region > Outside, l’oggetto sarà forzato a restare fuori da tale superficie sferica, mentre con Clamp Region > On Surface l’oggetto potrà muoversi solo sulla superficie. Per distanza tra due mesh si intende ovviamente quella che separa le due origini e sarà proprio l’origine dell’oggetto con il constraint limit a restare vincolata all’interno, all’esterno, oppure sulla superficie sferica di raggio pari a distance.

I tre constraint Limit Location/Rotation/Scale servono a definire un range di validità per le relative trasformazioni, al di fuori del quale l’oggetto non potrà essere traslato ruotato o scalato.

Le trasformazioni vanno intese nel riferimento Global (World space) o Local. Occorre solo impostare per gli assi x y e z dei valori minimi e massimi. Fissando nel vincolo Limit Location: 10 (minimum) e +10 (maximum) per x y e z (world space), l’origine dell’oggetto sarà vincolata a restare nel volume cubico di lato 20 centrato nell’origine. Fate attenzione perché questi vincoli vengono mantenuti solo a livello visivo, quando in realtà gli effettivi valori di posizione, di rotazione e di scala, restano liberi di variare senza alcuna limitazione; motivo per cui disattivando successivamente il constraint (icona occhio) o eliminandolo, l’oggetto potrà trovarsi in una condizione completamente diversa. Nel constraint limit rotation, i valori Min e Max vanno indicati in gradi sessagesimali. Se l’iniziale rotazione per l’asse z (world space) fosse 0, impostando ad esempio un valore minimo di 10 e massimo di 20, l’oggetto verrà automaticamente ruotato di 10°.

Maintain Volume preserva il volume di una mesh nelle trasformazioni Scale effettuate lungo l’asse selezionato in free, sia nel rifermento world space, sia in quello locale. Utilizzando tre vincoli, uno per asse, il volume dell’oggetto resta invariato qualsiasi sia la trasformazione subita.

Paragrafo successivo
Paragrafo precedente

Torna all’Indice


Nell’augurarti un divertente e produttivo studio di Blender, ti ricordo che puoi supportare questo progetto in due diversi modi: con una piccola donazione (paypal) oppure acquistando la versione PDF (su lulu.com) impaginata in modo professionale e ottimizzata per la visione su Tablet.  



>Acquista l’ebook (PDF) su lulu.com in piena sicurezza con paypal e carte prepagate<