Posts contrassegnato dai tag ‘expression’

filmburn_header

E’ curioso vedere come nell’era del digitale e del video perfetto, liscio e levigato, siano sempre più richiesti effetti/difetti che un tempo erano il flagello dei cineasti e dei proiezionisti: ovvero pellicola graffiata, macchiata, bruciata, sovraesposta o solarizzata. Basta però vedere qualche videoclip musicale o qualche sequenza di un telefilm per notare che questi effetti trovano la loro giusta collocazione, in special modo la sovraesposizione/solarizzazione. Ricorda un po’ quello che è accaduto anni fa con l’abbandono del vinile da parte del mercato e con il campionamento dei “pops” dei vecchi dischi applicati poi alle nuove canzoni che risiedevano nei CD audio.
E’ proprio alla sovraesposizione ed alla solarizzazione che si ispira il nostro effetto denominato Film Burn che andremo a ricreare con l’ausilio di After Effects.

Scegliere la sequenza giusta
Quello che ci preme dire prima di tutto è che degli effetti non ne va mai abusato, non vanno utilizzati come addobbo. Tutto deve avere un senso ed una giusta disposizione in un film o video, il nostro scopo deve essere sempre quello di raccontare una storia per immagini, la potenza visiva e narrativa di un perfetto montaggio non ha paragoni con nessun effetto grafico aggiunto, può anzi venire talvolta privata di significato da effetti e transizioni buttate giù senza cognizione. Quindi il consiglio è sempre quello che se non si sa quale effetto applicare, forse è arrivato il momento di non applicarne nessuno.
Diviene perciò importante scegliere la sequenza giusta dove collocare il nostro effetto Film Burn che vedremo bene in azione più avanti alla fine di questo articolo, dove diverrà chiaro quanto scritto in questo paragrafo preliminare. Basta vedere di tanto in tanto videoclips musicali oppure serials TV per rendersi conto che l’effetto Film Burn è molto utilizzato, spesso anche solo come semplice transizione. Le sequenze più adatte in genere riguardano parti senza audio ma solo con un commento musicale, sequenze in slow motion o dall’altro estremo sequenze concitate riprese con otturatore veloce. Il tema, a meno che non sia un video clip musicale, è quasi sempre la narrazione di azioni che servono da raccordo alla storia che si sta raccontando, azioni che non hanno bisogno di dialogo ma auto-espletano con le sole immagini la loro funzione narrativa all’interno dell’opera. Detta così sembra difficile la scelta giusta ma siamo sicuri che iniziando a notare la presenza di tale effetto nei video che ci capiterà di vedere, tutto risulterà più chiaro. Il video che abbiamo utilizzato per questo tutorial ne è appunto un esempio.

Un custom effect per After Effects
Esistono decine di plugins che potrebbero fare al caso nostro, noi preferiamo utilizzare la sola “forza bruta” di After Effects per raggiungere lo scopo che ci siamo prefissi. Questo avrà come ricaduta quella di imparare nuove funzioni e di familiarizzare ancora una volta con le expressions, un potentissimo strumento di automazione delle animazioni che After Effects ci mette a disposizione e che ad ogni release acquista nuove funzionalità. Non è necessario essere dei programmatori esperti per utilizzare le expressions, siamo convinti che una discreta conoscenza matematica possa essere sufficiente allo scopo, per compiti banali neanche questa è richiesta. Rimane sottinteso che una conoscenza dei linguaggi di programmazione ed in particolare il JavaScript 1.2 (diretto discendente dei linguaggi C e C++) sia d’aiuto per chi volesse intraprenderne lo studio in maniera approfondita.
Tramite gli effetti presenti di default in After Effects possiamo costruire il nostro effetto personalizzato, isolando i parametri che ci interessano e legandoli tramite gli strumenti presenti nella sezione Expression Controls, richiamabile nella finestra “Effects & Presets” o raggiungibile da menu Effect > Expression Controls. Per ulteriori dettagli riguardo a questi strumenti vi rimandiamo all’help online del programma ed ai nostri articoli dedicati all’argomento.

filmburn_07

In questo tutorial ci occuperemo di due strumenti in particolare: lo Slider Control e il Checkbox Control. Il risultato che otterremo una volta compilato il nostro custom effect è mostrato di seguito.

filmburn_01

La funzione dei parametri, una volta applicato il custom effect al filmato, è la seguente:

Flash Frames: numero di fotogrammi dell’effetto principale di “bruciatura”.
Flash Value: forza di intervento del bagliore di “bruciatura”.
Fractal Opacity: opacità della maschera frattale che rafforza e sbianca l’effetto principale.
Fractal Influence: abilitazione della maschera frattale.
Flickering Amount: valore del flickering misurato in stop di esposizione.
Flickering Frequency: frequenza del flickering misurata in Hz (numero di volte al secondo).

Il custom effect Film Burn è composto da due effetti in realtà: un effetto principale che genera dei flash simulando la sovraesposizione della pellicola e l’esposizione della stessa alla luce prima dello sviluppo, un effetto secondario che genera un flickering (sfarfallio) regolabile in frazioni di stop di esposizione e in frequenza. L’effetto principale utilizza i keyframes che applicheremo al parametro “Flash Frames”. In pratica ad ogni keyframe applicato corrisponderà un flash di bruciatura che durerà tanti frames quanti sono quelli impostati al momento nel parametro “Flash Frames” stesso.

Nota: ricordiamo che una volta abilitati i keyframes tramite lo Stopwatch accanto al parametro, l’aggiunta degli stessi può avvenire o in automatico modificando in valore del parametro stesso, oppure premendo in simbolo romboidale presente in timeline:

filmburn_10

Tutti i parametri del custom effect Film Burn utilizzano lo “Slider Control”, tranne il “Fractal Influence” che invece utilizza il “Checkbox Control”. Lo strumento “Slider Control” possiede le seguenti caratteristiche (nell’esempio sotto il parametro Flash Frames):

filmburn_06

la finestra mostrata sopra si raggiunge facendo click col tasto destro sul valore numerico di colore arancio dello “Slider Control” e selezionando “Edit Value”. Il range dello Slider Control è settabile nei due campi “Slider Range” che conterranno il valore minimo e massimo utilizzabile dallo slider grafico, il campo “Value” conterrà il valore preimpostato ma modificabile. Notiamo inoltre due valori non modificabili: il “Minimun value” ed il Maximun value”. Di default per uno “Slider Control” tali valori vanno da -1000000 a +1000000, nel nostro custom effect abbiamo limitato il campo ai soli valori che riteniamo abbiano significato, nel caso specifico del parametro “Flash Frames” da 1 a 100 fotogrammi.
Tutti i parametri presenti nel custom effect sono legati agli altri tre effetti presenti tramite expressions. I tre effetti ai quali ci appoggeremo per ottenere il nostro Film Burn sono:

Fractal Influence
(nome originario di AE: Fractal Noise)

filmburn_05

Flashing Exposure
(nome originario di AE: Exposure)

filmburn_03

Flickering Exposure
(nome originario di AE: Exposure)

filmburn_04

Le expressions utilizzate
Vediamo in dettaglio quali sono le expressions utilizzate e quale è la loro funzione all’interno dell’effetto Film Burn.

Nota 1 : quando si accede al campo di editing di un’expression i due tasti INVIO della tastiera, quello principale e quello del tastierino numerico, hanno due funzioni ben precise:
INVIO principale = nuova riga nel campo expression edit
INVIO tastierino numerico = uscita dal campo expression edit, equivalente al click del mouse in un punto qualsiasi fuori dal campo di editing.

Nota 2 : per visualizzare in timeline solamente i parametri che hanno campi con expressions oppure keyframes, selezionare il layer e premere il tasto “ U ”. Questo sarà molto utile quando andremo ad editare il nostro effetto aggiungendo o spostando keyframes.

Fractal Influence > Evolution

Math.sin(time)*360

L’effetto originale “Fractal Noise” è stato configurato in modo da aggiungere una particolare maschera al Film Burn, l’expression sopra non fa altro che variare nel tempo la morfologia di questa maschera, in modo da renderla sempre diversa per ogni altra applicazione al video.

Aprendo inoltre il Graph Editor è possibile visualizzare il comportamento nel tempo dell’expression inserita:

filmburn_08

Di seguito uno screenshot che ritrae i soli parametri modificati rispetto ai valori di default del Fractal Noise:

filmburn_09

Fractal Influence > Opacity

fractal_opacity = effect(“Film Burn”)(“Fractal Opacity”)/5;
enable_mask = effect(“Film Burn”)(“Fractal Influence”);
effect(“Flashing Exposure”)(“Red Exposure”)*fractal_opacity*enable_mask

La prima variabile “fractal_opacity” prende il valore dal parametro “Fractal Opacity” del Film Burn e lo divide per 5, in questo modo lo slider andando da 0 a 100% in realtà porterà la variabile “fractal_opacity” da 0 a 20.
La seconda linea carica nella variabile “enable_mask” il valore binario (1/0) del parametro “Fractal Influence”.
La terza linea prende questi valori e li moltiplica per il valore “Red Exposure” dell’effetto “Flashing Exposure”. Ma in pratica cosa succede? Come vedremo più avanti il parametro “Red Exposure” varia in corrispondenza di keyframes applicati al parametro “Flash Frames” del Film Burn, di conseguenza, in corrispondenza di ogni variazione, con questa expression varia anche l’Opacity dell’effetto “Fractal Influence”. Moltiplicando il tutto per la variabile “enable_mask” si ottiene l’abilitazione o meno della maschera frattale sull’effetto flash di bruciatura.

Flashing Exposure > Red Exposure

frames = effect(“Film Burn”)(“Flash Frames”)/2;
flash_duration = framesToTime(frames, fps = 1.0 / thisComp.frameDuration);
flash_value = effect(“Film Burn”)(“Flash Value”);
flash = Math.abs(time-effect(“Film Burn”)(“Flash Frames”).nearestKey(time).time);
easeOut(flash, 0, flash_duration, flash_value, 0)

Adesso viene il bello! Questo è in pratica il cuore di tutto l’effetto Film Burn. Piccola digressione necessaria: nell’effetto originario “Exposure” di AE, i parametri “Red/Green/Blue Exposure” variano l’esposizione del layer misurandola in stop, chi si intende di fotografia saprà che ogni stop in più è un raddoppio della luce catturata dalla pellicola/sensore, mentre ogni stop in meno è un dimezzamento della luce. Vediamo in dettaglio le varie linee di codice.
La prima linea assegna alla variabile “frames” il numero di fotogrammi impostato nel parametro “Flash Frames” e lo divide per 2, questo perchè l’ultima linea applica tale numero di fotogrammi sia prima che dopo il punto di keyframe, se il numero non venisse diviso per 2 si avrebbe un flash con durata pari al doppio dei fotogrammi impostati.
La seconda linea assegna alla variabile “flash_duration” il tempo esatto corrispondente al numero di frames impostato nel “Flash Frames”, nel caso di un filmato a 25 fps ad ogni frame corrisponde un tempo di 0.04 secondi.
La terza linea assegna alla variabile “flash_value” il valore del parametro “Flash Value” del custom effect Film Burn.
La quarta linea è sicuramente la più interessante di tutte e può avere una miriade di applicazioni diverse come vedremo. Se andiamo a cercare nell’help online di AE (questo sconosciuto!) noteremo che nella sezione riguardante le expressions relative ai keyframes, vi è un esempio notevole che riportiamo di seguito:

d = Math.abs(time – nearestKey(time).time);
easeOut(d, 0, .1, 100, 0)

queste due righe di codice non fanno altro che individuare la posizione di un keyframe durante lo scorrere del tempo in timeline ed applicare l’interpolazione “easeOut” (in questo caso) al parametro selezionato.

Chiariamo meglio il tutto con un esempio pratico:
aggiungiamo un keyframe al parametro “Opacity” di un layer che può essere in questo caso un solido bianco, aggiungiamo ora queste due linee di codice sempre al parametro “Opacity” e vediamo cosa succede. Facendo scorrere il cursore in timeline notiamo che l’opacità del layer aumenta da 0 a 100% come ci avviciniamo al keyframe e decresce da 100% a 0 allontanandosi. Questo perchè scrivendo il codice “nearestKey(time).time” si individua il tempo dove è posizionato il keyframe più vicino, scrivendo ora “time – nearestKey(time).time” si fa in modo che quando lo scorrere del tempo arriva nel punto esatto del keyframe, il risultato sia 0 (zero). Il codice “Math.abs(…)” serve a selezionare solo il valore assoluto per la variabile “d”, ciò a causa del fatto che prima di arrivare al punto esatto dove è posizionato il keyframe, il codice “time – nearestKey(time).time” restituirà valori negativi in quanto il valore di “time” sarà minore del valore di “nearestKey(time).time”. Il tutto viene applicato all’opacità del layer con un’interpolazione “easeOut”, ovvero lineare all’inizio della curva e Bezier alla fine. In pratica se il valore della variabile “d” sarà compreso tra 0 e 0.1 (secondo e terzo parametro di easeOut), l’opacità passerà da 0 a 100% con l’interpolazione scelta. Di seguito si può vedere come varia la curva al variare del metodo di interpolazione.

filmburn_11

Tornando al nostro Film Burn la quarta e la quinta linea del codice sono adesso più chiare: per ogni keyframe applicato al parametro “Flash Frames” avremo una transizione del tipo easeOut da zero al valore “Flash Value” fino a zero di nuovo. Il tutto durerà tanti frames quanti sono quelli impostati nel parametro “Flash Frames” del Film Burn.

Flashing Exposure > Green Exposure / Green Gamma

effect(“Flashing Exposure”)(“Red Exposure”)

effect(“Flashing Exposure”)(“Red Exposure”)+1

Tramite queste due linee di codice i due parametri assumono il valore del parametro “Red Exposure” dell’effetto rinominato “Flashing Exposure” (in origine “Exposure” di AE). Viene fatto ciò per avere una dominante rosso/giallastra dell’effetto di bruciatura. All’expression del parametro “Green Gamma” è stato aggiunto 1 in modo che con “Red Exposure” a zero rimanga al valore di default.

Flickering Exposure > Exposure

flickering_frequency = effect(“Film Burn”)(“Flickering Frequency”);
flickering_amount = effect(“Film Burn”)(“Flickering Amount”);
Math.abs(wiggle(flickering_frequency,flickering_amount))

Mentre nell’effetto rinominato “Flashing Exposure” eravamo intervenuti nei canali RGB individualmente, adesso per creare il flickering (sfarfallio) interveniamo nel “Master”, ovvero modifichiamo l’esposizione contemporaneamente in tutti e tre i canali RGB. Come già scritto, l’esposizione si misura in stop, abbiamo volutamente limitato il campo di azione ad 1 stop che per un effetto flickering è sufficiente. Le variabili “flickering_frequency” e “flickering_amount” sono direttamente collegate rispettivamente con agli sliders “Flickering Frequency” e “Flickering Amount”.
La terza linea di codice è quella fondamentale che genera l’effetto, in pratica si applica all’Exposure il valore assoluto tramite “Math.abs(…)” del generatore di valori random “wiggle”, con una frequenza (variazioni al secondo) prelevata dalla variabile “flickering_frequency” e con un’ampiezza massima dei valori determinata dalla variabile “flickering_amount”. Di seguito ecco visualizzato un esempio del comportamento del “wiggle”.

filmburn_12

Di seguito pubblichiamo un video di esempio al quale è stato applicato il custom effect Film Burn, che potete liberamente scaricare nel link sotto.

DOWNLOAD FILM BURN CUSTOM EFFECT

Se siete riusciti seguirci attentamente fino a questo punto vuol dire che le expressions vi stanno particolarmente a cuore e che state iniziando ad imparare questo potentissimo strumento di animazione ed automazione. Esistono addirittura alcuni casi dove è improponibile operare senza l’aggiunta di codice, tale sarebbe lo spreco di tempo da rendere il progetto irrealizzabile. Speriamo che questa descrizione dettagliata di una serie di expressions relativamente semplici possa essere di aiuto ai compositors che utilizzano After Effects.