CG Sketchbook , notes and tutorials

making of: Video logo Fitel

Recentemente ho realizzato un video-logo di 40 secondi per una conferenza (Federazione Italiana Tempo Libero , 1° conferenza Cral )

Realizzato per FITeL da : Syn di Stefano Cannillo(http://www.syn-labs.it) e La Chimica Berthollet | Grafica di Carlo Zummo (http://www.lachimicaberthollet.com).

Video di Nicolò Zubbini. ( nizu.cgsociety.org  nizuvault.wordpress.com)

Il video completo è visibile all’indirizzo:http://www.youtube.com/watch?v=BUNGSmu7IqY

Per la realizzazione del video ho usato Blender e Gimp su Ubuntu. Non sono stati usati altri programmi per montaggio o compositing , a parte ffmpeg per la compressione web.

Non sono state usate tecniche 3d particolarmente complesse , anzi ognuno degli elementi è realizzato con strumenti veramente base. Però ho scritto questo piccolo ‘making-of’ perchè il progetto ha coinvolto molte aree diverse di Blender,  è stata un’esperienza nuova e interessante che mi ha dato un’idea migliore della gestione di progetti di animazione completi.

Normalmente mi occupo di ambienti 3d (architettura e giochi) dove spesso il lavoro è di modellare molti dettagli , usare shader complessi , illuminazione globale , dipingere textures.

Al contrario qui servivano tecniche base ..ma un pò di tutto Blender , è stata una sfida interessante dove ho dovuto mettere in pratica cose intraviste prima, ma che non avevo mai usato seriamente.

Continua …

 

Il primo passo è stato modellare uno dei cubi . Il concetto è un cubo in wireframe (con spigoli nascosti invisibili) , ma nella modellazione pratica  usare direttamente un materiale wireframe mi sembrava troppo limitante .

Quindi ho modellato degli spigoli/contorni solidi , leggermente sporgenti per assomigliare di più a dei ‘fili’ (wireframe) : Indipendentemente dall’angolo di visione tutti i bordi colorati hanno uno spessore simile. Mentre semplicemente colorare i bordi in piano darebbe un effetto diverso , con alcuni bordi che quasi scompaiono a certi angoli .

Questo ha permesso di sperimentare con lo shading : partendo da uno stile piatto , pulito e simile alle illustrazioni vettoriali , per sceglierei poi un illuminazione leggermente più ‘fisica’ (ombre raytracing e approx. AO ) però con poco contrasto di luce per mantenere lo stile della grafica originale.

Queste ombre e Ambient occlusion anche se a malapena visibili aiutano molto a seguire i movimenti e leggere meglio l’animazione.

Realizzato un cubo , bisognava impostare l’animazione.

Per me ,  che mi occupo soprattutto di ambienti in 3d , normalmente l’idea di animazione si ferma a una telecamera che si muove in un ambiente statico o poco più.

Mentre , per quanto i cubi e il loro movimento siano semplici, già bisogna decidere tra vari metodi :

— simulazione fisica ? risolve i problemi di movimenti complessi e collisioni …però estremamente difficile da dirigere.

Usando forze e attrazioni , è molto difficile far partire i cubi da una posizione precisa / non casuale e farli arrivare ad un’altra configurazione specifica.

(A meno di aggiungiere alla simulazione un pò di  programmazione .. credo . Di sicuro , una cosa che proverò in futuro è registrare la fisica dal game engine , anche se in questo caso poteva coprire una prima parte di movimento casuale ma non l’assemblaggio della scritta.. o  appunto potrebbe con una simulazione molto complessa e usando script..)

–Rigging ? quanto preparare il cubo ? per farlo rotolare dovrebbe ruotare in automatico (constraint ) quando viene spostato sul piano ? e quando salta ?

Mancandomi l’esperienza con ossa e rig (a parte usarli per pose statiche ) ho cercato su Blendswap e trovato subito molto materiale interessante.

Ma conta poco avere materiale prefab. pronto all’uso , quando non si conosce bene come funziona e come gestirlo..

Alla fine , ho usato solo keyframes e azioni : l’approccio più semplice e manuale ,  ma ha funzionato bene  ,resta  abbastanza efficiente

Soprattutto ero sicuro di non perdermi nella realizzazione pratica con i 33  cubi : non è mai bello avere una scena 3d con qualche soluzione molto intelligente ..ma totalmente fuori controllo che non sai gestire e correggere.

Ho quindi diviso i cubi in 3 gruppi (layers) in ordine di complessità:

1- cubi ‘cadenti’ animati con semplici keyframes

2- cubi ‘saltanti’  animati con curve guida

3- cubi ‘rotolanti’ animati con curve guida , più azioni : in particolare una comune per tutti : rotolare sul posto mantenendosi al di sopra del piano .

Preparata per 1 rotazione di un cubo , l’azione è stata velocemente applicata a tutti sommandosi con il movimento lungo la curva guida)

Il movimento di camera è  realizzato seguendo una curva , con la telecamera puntata verso un empty-bersaglio (constraint)

La seconda constraint della telecamera limita la rotazione in alto e in basso.

Rispetto ad usare keyframe le 2 constaint assicuravano un movimento di camera fluido e continuo, ma da rifinire .

Quindi ho usato keyframes ma solo sul bersaglio, che si trova al centro della scritta, e si sposta leggermente attorno per mantenere sempre inquadrati  i cubi che si muovono in quel momento.

Se tutto si basa su keyframe lungo una timeline , le azioni (in questo caso : semplicemente gruppi di keyframe) permettono di comporre molti movimenti diversi con pochi elementi base.

Una volta preparate azioni come “Cubo che  rotola sul posto” , “assestamento del cubo all’arrivo” si inseriscono nella timeline dove necessario e  il tutto si ‘somma’ al movimento base dato da una curva (parenting alla curva , follow path)

Ho apprezzato il sistema di animazione di Blender e le sue finestre  : keyframes nel dopesheet e action editor ( più curves editor per rifinire le interpolazioni tra keyframe) e Poi keyframe ‘sparsi’ (non raggruppati in un’ azione) diversi per ogni cubo per rifinire i dettagli.

Può sembrare ridondante e confuso all’inizio , con tutte queste finestre simili (timeline , dopesheet, action editor) : ma sono concetti diversi , e aiutano a gestire animazioni anche complesse.

Potenzialmente questa impostazione ‘manuale’ poteva richiedere un tempo infinito all’aumentare delle iterazioni e collisioni tra cubi : in pratica le iterazioni sono limitate ad una dozzina (con l’idea di averne abbastanza perchè il movimento sia naturale , senza complicarsi la vita con migliaia di collisioni ..)

Prima dei cubi, c’è una sequenza di titoli in movimento.

é stato interessante realizzarli in Blender : Ha senso fare una parte così prettamente 2d in un programma di 3d ?

Forse per chi volesse solo fare titoli non avrebbe senso imparare tutti gli aspetti addizionali del 3d.

Ma per chi già usa 3d , gli stessi comandi e funzioni base usate per una scena 3d coprono benissimo la situazione.

Anzi , mi è sembrato che se da un lato i comandi base del 3d sono tanti rispetto a quelli del montaggio/titoli , D’altra parte con questi comandi ‘base’ si fanno cose che in un programma di montaggio richiedono molte diverse funzioni specifiche o addirittura plug-ins speciali.

Ovviamente i tempi di rendering di Blender usato come programma di titoli non sono buoni (nessun programma 3d è pensato per renderizzare fotogrammi semplicissimi in frazioni di secondo ..) ma non è un gran problema, restano tempi accettabili.

E’ anche ovvio che alcuni effetti di montaggio  più complessi  richiedono plug-ins ,  e farli con strumenti base anche se possible è esagerato (per esempio un ‘eco’ di fotogrammi..)

C’è però tutta una categoria di effetti,  ad esempio i preset di correzzione colore e preset che simulano certi tipi di pellicola o macchina da presa:

Questi effetti e plugin non sono affatto semplici o banali ma ricostruirli con i nodi base di Blender è istruttivo e assicura un’ottimo controllo del risultato.

La terza scena è un foglio di carta che viene strappato

Il foglio iniziale è composto di  due parti con una texture alpha per disegnare lo strappo.

Il movimento è dato da 2 ossa , la principale è flessibile (bend)  animando una semplice rotazionela carta flette in modo più naturale.

L’osso più piccolo al fondo dà una piccola rotazione all’angolo del foglio ; l’influenza delle ossa sulla mesh  è data da vertex group.

Dopo lo stappo, prima compaiono gli archi colorati da sinistra a destra e poi la scritta (fade in)

L’effetto è animato con materiali a nodi , (stessa cosa si potrebbe fare con texture a nodi , ma dava problemi di aliasing..)

Alla base c’è una mappa in B\N che determina l’ordine in cui appaiono i pixel dell’oggetto , Questa mappa passa attraverso un nodo “maggiore di” che funziona da soglia .

La soglia varia col tempo (nodo ‘time’ come input )  il risultato è che i pixel neri (della mappa di controllo) compaiono subito  e progressivamente appaiono quelli più chiari .

Dopo gli archi , la scritta compare con un semplice fade in ottenuto mixando 2 materiali  con la quantità data da un nodo time.

Per quanto semplice l’illuminazione:  i layer di rendering e il compositing a nodi sono stati utili :

Alcuni ritocchi al colore (ad es. delle ombre  ) servono sempre. Nulla di particolarmente complesso in questo caso , il compositing è stato usato soprattutto per ragioni molto pratiche di creare maschere per sovrapporre varie scene nel montaggio finale. (ad es. titoli e oggetti 3d , che nel sequencer appaiono ogununo con la giusta traparenza  )

Un leggero filtro blur (1-2 pixel) sulle ombre ha permesso di tenere la quantità dei sample bassa , quindi tempi di render brevi .

E’ interessante come anche in render con stile vettoriale/ minimale ,  alcuni effetti apparentemente più foto-realistici servono. Una grafica pulita e essenziale non significa che non saranno utili raytracing e altri effetti lenti da calcolare , almeno per quanto possibile : ho rinunciato alla profondità di campo (d.o.f.) per i tempi di rendering e perchè essendoci già una nebbia bianca uniforme , il risultato era poco visibile (ma i tempi erano 2-4X )

I tempi di render sono rimasti più che ragionevoli : su un core duo q6600, da 10 a 20 secondi per frame per l’animazione dei cubi .

0.5-2 secondi per i frame sui titoli semplici.  In totale circa 3 ore per renderizzare il progetto intero. Ovviamente un aspetto importante :

Rispetto al tempo di lavoro ‘umano’ di vari giorni per realizzare il progetto,  3 ore o ad es. 12 ore di render sono comunque poche.

In realtà anche 6 ore di render sarebbero state una situazione molto diversa : per quanto si possa impostare bene un progetto e prevedere ogni cosa .. poter fare varie prove a qualità definitiva cambia moltissimo.

L’ambient occlusion approssimata di Blender è stata fondamentale . Spesso ho trovato troppi errori con approx.ao  in scene di architettura per still render Ma in un’animazione di questo tipo la velocità è impressionante.

Inoltre l’approx.AO è totalmente priva di rumore (sampling noise) : utilissimo quando il rumore accettabile è molto poco (ad es. un AO molto forte e contrastata)

Nnei tempi di rendering e c’è una notevole differenza tra il rumore ‘accettabile’ e eliminarlo del tutto.. (ad es. nelle ombre almeno il doppio di samples)

Nel caso di questa animazione il  motore Blender Internal era la scelta migliore rispetto a qualsiasi motore esterno : l’aspetto fondamentale era la completezza e l’integrazione (nodi , sequencer ,etc..).

L’ultimo passaggio è il montaggio delle scene.

In realtà , un aspetto molto importante è che non è stato  realizzato come ultimo passaggio.

Essendo tutto realizzato in un’unica applicazione, il montaggio è stato preparato quasi subito :

Tutto è collegato e aggiornato in automatico : si possono inserire come segmenti video le scene, e impostare il tutto  prima ancora di completarle e renderizzarle.

Al lancio del render nella finestra (scena) di montaggio  blender calcola in ordine il render di ogni scena (titoli , cubi , strappo),

Passa i render attraverso il compositing e color correction a nodi , e aggiunge effetti  di montaggio (ad es. transizioni) .

In parole povere “imposto e correggo tutto nell’ordine che conviene, e per ricalcolare tutto il render e avere una nuova revisione del progetto , basta schiacciare 1 tasto” .

Ovviamente questo è un’aspetto fondamentale per lavorare da soli o in piccoli team e Blender lo tiene presente.

Altri programmi sono più orientati a team di molte persone e all’uso di vari software (1 per 3d, 1 per compositing , 1 per montaggio.. in questo caso sarebbe stata una grande perdita di tempo)

E questo è tutto , spero sia stato interessante , i commenti sono sempre benvenuti , postate qui o scrivete a nicolo.zubbini@gmail.com

Per altri appunti di lavoro , esperimenti e riflessioni su ambienti 3d , OSS e Blender , etc.. passate dal mio blog : nizuvault.wordpress.com

Advertisements

Comments are closed.