Come sfocare selettivamente un oggetto in Blender e animazione
In questo tutorial mostreremo come sfocare selettivamente un oggetto in Blender utilizzando il "Compositor", lasciando invariati quelli vicini, indipendentemente dalla distanza dalla camera. Utilizzeremo prima l' "Object Index Pass" con il nodo "ID Mask" in Cycles, poi con il nodo "Cryptomatte" in EEVEE. Quindi creeremo un'animazione utilizzando la sfocatura, che potrebbe essere utile per la presentazione di prodotti o di determinati elementi nel video di una presentazione o in un documentario.
Avviamo Blender, cancelliamo il cubo di default e creiamo invece un cilindro, un cono e una sfera (utilizziamo questi 3 solidi perché la sfocatura si nota in essi in modo più evidente). In vista frontale (ottenuta premendo il tasto "1" nel tastierino numerico) vediamo
Assegnamo agli oggetti 3 materiali composti da un solo shader "Principled", con colore "green" (verde) #00B201 per il cilindro, "red" (rosso) #E7000C per il cono, "yellow" (giallo) #E7A600 per la sfera. In modalità "Material Preview" vedremo dunque
Selezioniamo la camera, presente per default, e nel pannello a destra (richiamabile premendo il tasto "N") assegnamo nuove coordinate per la posizione e la rotazione
in modo da inquadrare bene gli oggetti frontalmente
Selezioniamo la lampada presente per default e cambiamo nello stesso modo le coordinate
Selezioniamo il cilindro e nella scheda "Object Properties" a destra, nel sottopannello "Relations", settiamo "Pass Index:1", così ora potremo identificare con questo numero l'oggetto cilindro
allo stesso modo assegnamo il numero 2 al cono e il numero 3 alla sfera.
Per abilitare i "Pass Index" degli oggetti, nella scheda "View Layer Properties" spuntiamo l'opzione "Object Index"
Sfochiamo selettivamente un oggetto:
Cerchiamo ora di fare in modo che solo la sfera venga sfocata nel rendering.
Selezioniamo il workspace "Compositing" cliccando sulla relativa linguetta
spuntiamo sull'opzione "Use Nodes" per poter utilizzare i nodi nel "Compositor"
e colleghiamo al nodo "Render Layers" un nuovo nodo "Viewer" ("Add > Output > Viewer") che ci permetterà di mostrare le anteprime dei risultati delle operazioni avvenute nel "Compositor"
Controlliamo che l'opzione "Backdrop" sia abilitata
selezioniamo, per questo esercizio, il motore di rendering "Cycles" e la GPU come dispositivo per il rendering
avviamo il rendering premendo il tasto "F12" ed otteniamo nell'anteprima del "Compositor"
Creiamo ora una maschera che identifichi la sfera: "IndexOB" fornisce una maschera di tutti gli oggetti indicizzati
utilizzando il nodo "ID Mask" ("Add > Converter > ID Mask") isoliamo l'oggetto con indice "3" (la sfera)
Possiamo ora sfocare la sfera utilizzando il nodo "Blur" ("Add > Filter > Blur"): dobbiamo sfocare la sfera presente nel rendering quindi nella sua porta "Image" inseriamo l'uscita della porta "Image" del nodo "Render Layers"; la porta "Size" indica quanto l'immagine deve essere sfocata, ed ha come valore di default 1 su tutta l'immagine, ma noi vogliamo che sia sfocata solo la sfera, quindi inseriamo in ingresso la maschera che avevamo ricavato prima che è bianca (il bianco corrisponde al valore 1) solo in corrispondenza della sfera e nera per il resto (il nero corrisponde al valore zero, quindi sfocatura assente); avendo effettuato questa scelta spuntiamo l'opzione "Variable Size", che "Consente un raggio di sfocatura variabile, se l'input della dimensione è un'immagine" perciò, dopo aver scelto una sfocatura "Gaussian", settiamo x:40 e y:40 (sfocatura uguale in direzione verticale e orizzontale) colleghiamo il nodo "Blur" con i nodi "Viewer" e "Composite" ottenendo il risultato desiderato
Se vogliamo sfocare anche gli altri oggetti, basta mettere in cascata i nodi: sfochiamo un oggetto e l'immagine con l'oggetto sfocato servirà come immagine di partenza per sfocare un altro oggetto e così via
Sfochiamo con Cryptomatte e EEVEE:
Se al posto di Cycles selezioniamo come motore di rendering EEVEE, per cercare di effettuare più velocemente il rendering (anche in previsione della successiva animazione), utilizzando la struttura di nodi che avevamo appena costruito per Cycles,
notiamo che è scomparsa la porta "IndexOB"
Questo succede perché il pass "Object Index" (anche il "Material Index") non è supportato da EEVEE. Viene però in aiuto la funzione "Cryptomatte", che permette di identificare oggetti e materiali selezionandoli con un contagocce: nella scheda "View Layer Properties" a destra selezioniamo l'opzione "Object" nel sottopannello "Passes > Cryptomatte"
e notiamo che nel "Compositor" sono apparse le relative porte nel nodo "Render Layers"
queste però si riferiscono al vecchio nodo "Cryptomatte legacy" (per comprendere la differenza tra il vecchio e il nuovo nodo "Cryptomatte" e come lo si usa, guarda anche "Cryptomatte in Blender 2.8 e 2.93, una rivoluzione") ma noi utilizziamo quello nuovo, aggiungendolo con "Add > Matte > Cryptomatte"
Colleghiamo la porta di entrata "Image" del nodo "Cryptomatte" con l'uscita "Image" di "Render Layers" e l'uscita "Pick" di "Cryptomatte" con il nodo "Viewer", avviamo eventualmente il rendering e appariranno in evidenza i tre oggetti. Premiamo dunque il tasto "+" a destra del parametro "Matte ID" e selezioniamo il cilindro con il contagocce (e apparirà la scritta "Cylinder" in "Matte ID") nell'anteprima.
Compiuta questa operazione, scolleghiamo la porta "Pick" e colleghiamo l'uscita "Matte" del nodo "Cryptomatte", contenente ora la maschera che identifica il cilindro, alla porta "Size" del nodo "Blur" (al posto del nodo "ID Mask" che ora non ci serve più e possiamo eliminare).
Creiamo un altro nodo "Cryptomatte", colleghiamo anche questo al nodo "Render Layers" attraverso la porta "Image" e al nodo "Viewer" attraverso la porta "Pick"; premiamo anche in questo caso il pulsante "+" in "Matte ID", ma questa volta selezioniamo il cono
Come prima, scolleghiamo la porta "Pick" dal nodo "Viewer" e colleghiamo la porta "Matte" del nodo "Cryptomatte" ora alla porta "Size" del secondo nodo "Blur".
Aggiungiamo un ultimo nodo "Cryptomatte" anche per la sfera e ripetiamo le precedenti operazioni, per selezionare la sfera e collegare il nodo "Cryptomatte" al terzo nodo "Blur".
Abbiamo quindi costruito questa configurazione di nodi per sfocare la sfera in EEVEE
che poteva essere realizzata anche con un solo nodo "Blur" e un solo nodo "Cryptomatte"
al momento però a noi serviva una configurazione di nodi con gli oggetti tutti sfocati da utilizzare con EEVEE, per cominciare la nostra animazione
Creare un'animazione che renda nitido un oggetto alla volta:
Partiamo dunque dall'ultimo sistema di nodi per creare l'animazione
e agiamo solo sui parametri "x" e "y" dei 3 nodi "Blur" presenti, che chiameremo primo, secondo e terzo.
per posizionarci nei vari frame utilizzeremo l'editor "Dope Sheet" che si trova in basso nel workspace "Compositing".
In questo editor settiamo nel campo "End", in basso a destra, il numero di frames a 360.
Cominciamo animando la sfocatura del cilindro, lasciando il resto invariato: fissiamo la situazione attuale creando un keyframe per i valori di x e y, cliccando con il tasto destro del mouse sui loro valori nel nodo e selezionando l'opzione "Insert keyframe"
I due campi dei valori si coloreranno di giallo (ciò indica che quei valori sono corrispondenti a dei keyframes)
mentre nell'editor "Dope Sheet" il keyframe corrisponde ad un pallino per ogni parametro fissato in esso
nell'editor troviamo ora due nuovi canali "Size X (Blur)" e "Size Y (Blur)" che corrispondono ai parametri x e y del nodo che si chiama "Blur", come si può vedere nelle sue proprietà nel pannello a destra
Vogliamo che il cilindro si veda in modo nitido dopo 40 frames, quindi clicchiamo con il tasto sinistro del mouse e trasciniamo il cursore blu nell'editor "Dope Sheet" fino al frame 40
Perché a volte non si vedono i keyframes del "Compositor" nell'editor "Dope Sheet"? Perché vuol dire che è stata spuntata l'opzione "Only Show Selected" a forma di freccia a destra
quando questa opzione è attiva, verranno mostrati grafici e keyframes dei soli oggetti (o dei nodi) selezionati. Per vedere i grafici di tutti gli oggetti/nodi o li si seleziona tutti oppure si disabilita questa opzione cliccando sul pulsantino (che da blu commuta a grigio) .
Nel primo nodo "Blur" settiamo x:0 e y:0, quindi cliccando su di loro con il tasto destro del mouse, creiamo i relativi keyframes
vogliamo che il cilindro sia visibile in modo nitido per 40 frames, quindi trasciniamo il cursore fino al frame numero 80,
lasciamo x:0 e y:0 e creiamo dei corrispondenti keyframes cliccando con il tasto destro del mouse.
ora dobbiamo cominciare l'animazione, in cui il cilindro deve sfocarsi, che termina al frame 120. Quindi trasciniamo il cursore blu fino al frame 120
e inseriamo dei keyframes nel primo nodo "Blur" per valori x:40 e y:40; però deve cominciare anche l'animazione per il cono che parte anch'esso da sfocato, quindi inseriamo anche per il nodo "Blur" del cono dei keyframes in corrispondenza di x:40 e y:40.
Nell'editor "Dope Sheet" vediamo che sono stati aggiunti due nuovi canali "Size X (Blur.001)" e "Size Y (Blur.001)",
dove "Blur.001" è il nome del secondo nodo "Blur"; infatti se lo selezioniamo e guardiamo il pannello relativo a destra troviamo
Continuiamo con la nostra animazione, procedendo più velocemente
Animiamo la sfocatura del cono: per togliere la sfocatura al cono trasciniamo il cursore blu al frame 160, impostiamo i valori x:0 e y:0 nel secondo nodo "Blur" e creiamo i relativi keyframes con il tasto destro del mouse. Mostriamo in modo nitido il cono per 40 frames, trasciniamo il cursore blu al frame 200, creiamo i keyframes per x:0 e y:0 nel secondo nodo "Blur"; per far tornare la sfocatura sul cono trasciniamo il cursore blu al frame 240 e creiamo dei keyframes per x:40 e y:40 nel secondo nodo "Blur".
Sempre corrispondentemente al frame 240 creiamo dei keyframes anche nel terzo nodo "Blur", che è associato alla sfera, per i valori x:40 e y:40 e notiamo infatti che sono comparsi dei nuovi canali "Size X (Bur.002)" e "Size Y (Blur.002)" corrispondenti alla x e alla y del terzo nodo (che si chiama "Blur.002")
Animiamo la sfocatura della sfera come abbiamo fatto prima con il cono: per togliere la sfocatura alla sfera trasciniamo il cursore blu al frame 280, impostiamo i valori x:0 e y:0 nel terzo nodo "Blur" e creiamo i relativi keyframes con il tasto destro del mouse. Mostriamo in modo nitido la sfera per 40 frames, trasciniamo il cursore blu al frame 320, creiamo i keyframes per x:0 e y:0 nel terzo nodo "Blur"; per far tornare la sfocatura sulla sfera trasciniamo il cursore blu al frame 360 e creiamo dei keyframes per x:40 e y:40 nel terzo nodo "Blur", terminando così la nostra animazione.
Riassumendo:
Frame 1: Sfocatura_Cilindro(40, 40), Sfocatura_Cono(40, 40), Sfocatura_Sfera(40, 40)
Frame 40: Sfocatura_Cilindro(0, 0), Sfocatura_Cono(40, 40), Sfocatura_Sfera(40, 40)
Frame 80: Sfocatura_Cilindro(0, 0), Sfocatura_Cono(40, 40), Sfocatura_Sfera(40, 40)
Frame 120: Sfocatura_Cilindro(40, 40), Sfocatura_Cono(40, 40), Sfocatura_Sfera(40, 40)
Frame 160: Sfocatura_Cilindro(40, 40), Sfocatura_Cono(0, 0), Sfocatura_Sfera(40, 40)
Frame 200: Sfocatura_Cilindro(40, 40), Sfocatura_Cono(0, 0), Sfocatura_Sfera(40, 40)
Frame 240: Sfocatura_Cilindro(40, 40), Sfocatura_Cono(40, 40), Sfocatura_Sfera(40, 40)
Frame 280: Sfocatura_Cilindro(40, 40), Sfocatura_Cono(40, 40), Sfocatura_Sfera(0, 0)
Frame 320: Sfocatura_Cilindro(40, 40), Sfocatura_Cono(40, 40), Sfocatura_Sfera(0, 0)
Frame 360: Sfocatura_Cilindro(40, 40), Sfocatura_Cono(40, 40), Sfocatura_Sfera(40, 40)
In "Output Properties", nel pannello "Output", settiamo il rendering come sequenza di files PNG (così da poter ricominciare in caso di crash)
e premiamo i tasti "Ctrl+F12" per renderizzare l'animazione
(Per trasformare la sequenza di immagini PNG in un file MP4, guardare anche "Blender convertire una sequenza di immagini in video mp4")
ottenendo così
Finisce così questo tutorial per sfocare un oggetto in modo selettivo in Blender, che permette anche di dare un'illusione di movimento e cambiamento di profondità, uno strumento più flessibile rispetto al classico defocus. Happy blending!