Introduzione alla grafica 3D - Blender Italia Community

22
Introduzione alla grafica 3D La grafica 3D consente di realizzare oggetti e scene in 3 dimensioni, di applicarci materiali, di animarli, di impostare un'illuminazione e quindi ricavarne un'immagine bidimensionale che può essere di genere cartoonesco, realistico, o una qualunque via di mezzo fra le due. La grafica 3D può essere combinata con immagini 2D (usate come sfondi o come scena intera) o addirittura filmati ripresi dalla realtà e combinati con modelli animati e renderizzati. Le immagini 2D inoltre possono essere usate come texture per definire il colore o altre caratteristiche della superficie dei nostri modelli.

Transcript of Introduzione alla grafica 3D - Blender Italia Community

Page 1: Introduzione alla grafica 3D - Blender Italia Community

Introduzione alla grafica 3D

La grafica 3D consente di realizzare oggetti e scene in 3 dimensioni, di applicarci materiali, di

animarli, di impostare un'illuminazione e quindi ricavarne un'immagine bidimensionale che

può essere di genere cartoonesco, realistico, o una qualunque via di mezzo fra le due. La

grafica 3D può essere combinata con immagini 2D (usate come sfondi o come scena intera) o

addirittura filmati ripresi dalla realtà e combinati con modelli animati e renderizzati. Le

immagini 2D inoltre possono essere usate come texture per definire il colore o altre

caratteristiche della superficie dei nostri modelli.

Page 2: Introduzione alla grafica 3D - Blender Italia Community

La prima cosa da imparare per realizzare una scena è la modellazione del soggetto, che può

essere un'intera scena o un singolo oggetto.

La seconda fase può essere l'impostazione dell'inquadratura e dell'illuminazione.

In alternativa si può prima completare il soggetto tramite i materiali(shaders) e le textures, e

occuparsi poi della scena finale.

Infine si può migliorare o in genere modificare l'immagine tramite l'uso di un programma di

fotoritocco aggiungendo effetti o regolazioni che non sarebbero possibili direttamente nel

render. In Blender è possibile eseguire queste operazioni direttamente all'interno del

programma, tramite il sistema a nodi di regolazione. E' perfino possibile renderizzare

automaticamente solo certe parti della scena, applicarci effetti e regolazioni, e ricombinarle

con il render finale.

LA MODELLAZIONE

Ci sono vari tipi di modellazione:

1-La modellazione poligonale

2-La modellazione tramite scultura digitale (che comunque rientra in quella poligonale)

3-La modellazione per solidi

Page 3: Introduzione alla grafica 3D - Blender Italia Community

4-La modellazione per curve

5-La modellazione per superfici

Blender supporta solo alcune di queste categorie. Principalmente gestisce la modellazione

poligonale e la scultura digitale. C'è la possibilità di modellare tramite superfici o curve, ma gli

strumenti sono ridotti rispetto ad altri programmi. Non è possibile modellare per solidi.

Page 4: Introduzione alla grafica 3D - Blender Italia Community

1) Modellazione poligonale

[modelli poligonali] La modellazione poligonale funziona tramite poligoni, ovvero delle superfici limitate costituite

minimo da 3 vertici. Blender supporta poligoni da 3 o 4 vertici. Altri programmi supportano

poligoni con numero arbitrario di vertici. Blender comunque supporta anche singoli lati o

singoli vertici isolati. Tuttavia se i vertici di un poligono non risiedono tutti sullo stesso piano,

per rappresentare tale poligono il programma lo dovrà suddividere in triangoli, che all'utente

non saranno mostrati. Anche Blender suddivide i quadrilateri in due triangoli qualora si

verificasse questo caso.

Nella modellazione poligonale si definisce la forma dell'oggetto che si vuole creare tramite la

creazione e lo spostamento di nuovi poligoni. Per fare questo si possono spostare singoli

vertici, lati o interi poligoni o facce. Ci sono tre strumenti principali per muovere gli elementi e

gli oggetti, ovvero lo spostamento, la rotazione e la scalatura. La rotazione e la scalatura

hanno bisogno di un punto di riferimento per essere eseguite. Solitamente Blender imposta

questo punto come il baricentro della corrente selezione. Tuttavia è possibile spostare questo

punto dove si vuole, o tramite il cursore 3D, o tramite le altre opzioni dell'apposito menù a

discesa. Inoltre ognuna di queste operazioni può coinvolgere, oltre che i vertici selezionati,

anche altri vertici limitrofi. Si tratta della deformazione proporzionale. Si attiva col tasto O e

può avvalersi di varie funzioni per definire con che valore spostare i vertici limitrofi alla

selezione. Si può definire inoltre il raggio di questa azione usando la rotellina del mouse.

Per creare nuovi poligoni ci possono essere molti strumenti. Il più comune è l'estrusione. Si

seleziona un elemento, che può essere un vertice, un lato, o una faccia, e tramite il comando

estrudi (tasto E in Blender) si verrà a creare un duplicato di quell'elemento che risulterà

collegato al precedente tramite nuovi poligoni. Si può indicare al programma di quanto

estrudere, e in che direzione farlo.

Page 5: Introduzione alla grafica 3D - Blender Italia Community

[estrusione di due vertici, di un lato, e di una faccia] Un altro modo comune di creare nuovi poligoni consiste nell'unire elementi già esistenti. Si

possono creare nuovi poligoni unendo da 2 (si creerà un lato) a 4 vertici. Se fossero più di

quattro Blender non riconoscerebbe al momento nessuna possibilità. In futuro verrà

sviluppata anche questa funzionalità. Il poligono verrà creato anche se ad essere selezionati

sono due lati. Attivando l'add-on LoopTools, è possibile espandere queste possibilità, oltre ad

attivare altre utili funzioni.

Per creare nuove facce si può usare il comando spin, che estrude e ruota i nuovi elementi

attorno ad un preciso punto, determinato dal cursore 3D. Si può impostare la quantità di

duplicati, l'angolo di rotazione e via dicendo.

E possibile poi creare nuovi poligoni inserendo nuove primitive o duplicando poligoni esistenti.

La prima possibilità permette di ottenere forme precise da usare nel modello, quali poligoni e

solidi regolari, o particolari oggetti messi a disposizione dai numerosi add-on. La seconda

invece permette di ottenere perfetti duplicati di forme che dobbiamo replicare.

I modelli così ottenuti possono poi essere modificati tramite l'inserimento di nuovi lati

all'interno dei poligoni esistenti. Ad esempio suddividendo in quattro parti i poligoni,

inserendo singole file di lati o estrudendo e scalando delle facce. Oppure si possono unire

vertici inutili, cancellare facce, spostarle e così via. Tutto questo usando i vari strumenti messi

a disposizione dal programma. In questo modo si andrà ad aumentare il dettaglio

dell'oggetto. Solitamente si cerca di inserire nuovi poligoni solo lì dove serve. Infatti ogni

nuovo poligono andrà ad occupare nuova memoria RAM, e in certi casi si può arrivare a far

crashare il programma. Inoltre l'uso di un numero alto di poligoni porta a una minor

gestibilità del modello proprio per quanto riguarda la sua forma.

Page 6: Introduzione alla grafica 3D - Blender Italia Community

Vediamo ora le categorie principali della modellazione poligonale.

a- modellazione low-poly: significa una modellazione con pochi poligoni, e viene usata

solitamente nei videogiochi per la sua leggerezza in termini di risorse di sistema, o per

oggetti con poca importanza in una scena. I dettagli mancanti al modello vengono aggiunti

tramite l'uso di apposite mappe, ovvero immagini bidimensionali dette anche textures, che

vedremo più avanti.

[Il modello con la normal-map sembra molto dettagliato, ma in realtà la sua forma è quella sotto. L’immagine colorata è la mappa che dà il dettaglio] b- modellazione high-poly: al contrario della low-poly usa molti poligoni. Il modello viene

definito in ogni dettaglio. Si usa nel caso di superfici arrotondate, dove c'è bisogno di molti

poligoni per definire la superficie finale. Non è più molto usata, perché simili modelli

diventano molto pesanti per il sistema e poco gestibili per l'utente. Al suo posto si preferisce

la modellazione per suddivisione (subdivision-modeling).

c- la modellazione per suddivisione: unisce la modellazione low-poly a quella high-poly. Si

Page 7: Introduzione alla grafica 3D - Blender Italia Community

avvale di una speciale funzione dei programmi detta sub-surface-subdivision (subsurf in

Blender, altri nomi negli altri programmi). L'utente crea un modello con delle caratteristiche

base di forma, applica la funzione (che è attivabile o disattivabile in tempo reale) e il

programma si occupa di suddividere e arrotondare il modello seguendo la struttura base. Va

benissimo per modellare soggetti organici, come esseri umani, animali, oggetti tondeggianti

quali vasi poltrone ecc. Nel caso di certi oggetti però porterà ad avere un modello troppo

tondeggiante anche dove non si vorrebbe. E' il caso dell'hard-surface-modeling, ovvero la

modellazione di oggetti inanimati con parti arrotondate e parti spigolose o smussate allo

stesso tempo. Di solito si tratta di automobili, robots, o anche oggetti della casa. Per

indirizzare l'azione del subsurf si dovranno quindi inserire dei lati ravvicinati per limitare

l'azione e il raggio di arrotondamento in un determinato punto del modello. Questo non è

sempre facile, e per farlo correttamente bisogna conoscere bene il comportamento della

funzione subsurf prevedendo gli effetti dei nuovi poligoni sulla forma del modello, oltre che

conoscere gli strumenti e le tecniche.

[La struttura dei vertici di una mesh, e il risultato con due livelli di sub surf. Notare la maggior concentrazione di vertici nei punti più spigolosi] d- Il retopo: il cosiddetto retopo è una tecnica di modellazione che si avvale di un modello già

esistente per crearne uno nuovo. La parola Retopo sta per Retopology, ovvero creazione di

una nuova topologia. Si intende topologia il disegno che i lati formano sulla superficie del

modello, o anche il modo con cui i poligoni sono disposti e la loro forma. Questa tecnica serve

quindi per creare lo stesso modello, ma con una topologia corretta. L'uso più frequente di

questo strumento è fatto per creare un modello corretto da uno creato con la scultura

digitale. Come vedremo più avanti la scultura digitale genera modelli con tantissimi vertici. Se

dovessimo inserire i modelli così creati in una stessa scena, avremmo bisogno di

supercomputer per poterla gestire, oppure per animare questi personaggi. Con il retopo

invece andiamo a creare un modello con un numeor accettabile di vertici, ricreando solo i

dettagli più importanti. In questo modo il modello è tranquillamente gestibile. La domanda

che sorge spontanea è: ma allora come faccio a rendere i dettagli più minuti che ho

Page 8: Introduzione alla grafica 3D - Blender Italia Community

faticosamente scolpito? La soluzione a questo quesito si chiama normal map. Dopo aver

scolpito il modello ad alto dettaglio, la sua forma viene impressa in una texture detta normal

map, il cui effetto abbiamo visto nella sezione della modellazione Low-Poly. Questa mappa poi

viene applicata al modello creato con il retopo e i dettagli ritorneranno visibili in fase di

rendering.

Per retopare una mesh bisogna crearci vicino una seconda mesh, ad esempio un piano.

Attivando delle opzioni particolari si potrà andare a retopare. Entrando in edit mode e

muovendo un vertice, questo verrà spostato sulla superficie dell'oggetto sottostante. Si deve

quindi estrudere i vertici del piano e spostarli lungo la superficie del modello da retopare per

ottenere il modello corretto.

La Topologia In generale, per ottenere buoni risultati di modellazione, bisogna creare una buona topologia.

Solitamente è preferibile usare poligoni quadrilateri, ed evitare i triangolari e tutti quelli che

ne derivano. Ci sono comunque dei casi in cui è meglio usare un poligono triangolare messo

dove non dà fastidio piuttosto che scombinare l’intera mesh per eliminarlo. Queste regole

sono importanti specialmente per la realizzazione di modelli da animare, come personaggi e

animali, e per la subdivision-modeling, dove i triangoli influenzano negativamente la funzione

di subsurf.

[Corretta topologia per un modello organico, e per un modello hard-surface]

In molti casi la struttura o la topologia di una mesh è definita dai cosiddetti edge-loops e

face-loops.

Vediamo nel dettaglio di cosa si tratta. Un edge-loop è una fila di lati uniti fra di loro, che ha

la caratteristica di iniziare e finire con un nodo. Un nodo è un vertice che ha un numero di lati

connessi diverso da 4. Quindi un edge-loop inizierà con un vertice con 3, 5, o più lati

connessi, e finirà con un vertice con 3, 5 o più lati connessi, mentre tutti i vertici centrali

Page 9: Introduzione alla grafica 3D - Blender Italia Community

dell’edge-loop avranno 4 lati connessi. Inoltre ogni edge del loop sarà quello centrale fra i tre

edge connessi al precedente. In pratica il loop non gira mai a sinistra o destra quando trova

un incrocio, ma va sempre al centro.

[Un edge-loop, con i due nodi alle estremità, e un face-loop] E’ importante impostare correttamente gli edge-loops quando si modella. Questo permette di

inserirne altri per aggiungere i dettagli. Per aggiungere un loop si preme Ctrl-R, e si clicka su

un edge per inserire il loop. Gli edge-loop si possono inserire solo su di un face-loop. Un face-

loop è una serie di facce quadrilatere connesse fra loro con gli edge opposti.

E’ per questo che gli edge-loops sono così importanti. Inoltre facilitano la selezione delle parti

della mesh. Si può clickare su un edge tenendo premuto Alt per selezionare il relativo edge-

loop. Se siamo in face-selection, potremo in questo modo selezionare un face-loop.

Per modellare si usano dei sistemi di assi, che in Blender si chiamano Transform Orientation.

In praticano indicano l’orientamento degli assi X, Y e Z rispetto agli assi globali, che sono

inalterabili.

Infatti di default è impostato Global come sistema di assi. Ce ne sono altri di predefiniti, che

non si possono cancellare: Local (l’asse dell’oggetto selezionato), Normal (orientato come la

normale dell’elemento selezionato), View (X e Y giacciono sul piano dello schermo, mentre

l’asse Z va verso la scena) e Gimbal (non ho idea di cosa sia).

Vediamone alcune nel dettaglio.

Local: quando si crea un oggetto, questo ha un suo sistema di assi. Se noi lo ruotiamo in

object-mode, gli assi seguiranno la rotazione dell’oggetto, per cui non corrisponderanno più

con gli assi globali. Questo è vantaggioso perché ci permette di eseguire delle trasformazioni

lungo i suoi assi in modo preciso. Ad esempio, se dobbiamo allungare un cono che abbiamo

ruotato di 30 gradi sull’asse Y, ci basterà impostare come Transform Orientation Local, e

scalarlo lungo l’asse Z locale, cosa che non potremmo fare in modo preciso se usassimo gli

assi globali.

Page 10: Introduzione alla grafica 3D - Blender Italia Community

Normal: prima di tutto dobbiamo chiarire cosa sono le normali. Una normale è una semiretta

che parte dal centro di un elemento (vertice o faccia) e viaggia perpendicolare ad esso. Serve

al programma per sapere in che modo è orientata una faccia e quindi calcolarne

l’ombreggiatura durante il rendering. Noi possiamo dire al programma di orientare gli assi di

riferimento come la normale dell’oggetto che abbiamo selezionato. Se ad esempio dobbiamo

alzare una faccia di una mesh orientata in un qualunque modo, impostiamo Normal come

Transform Orientation e la tiriamo verso il suo azze Z.

Solitamente nei programmi di grafica 3D è possibile creare i propri Sistemi di Assi

personalizzati, con l’inclinazione che si desidera. In Blender, per farlo, è necessario avere un

oggetto di riferimento.

2) Scultura digitale: simile alla modellazione poligonale è la scultura digitale. La differenza

principale sta nel fatto che per spostare i vertici si usano dei pennelli invece che i suddetti

strumenti. Si chiama scultura proprio perché è come lavorare un blocco di creta. Tuttavia il

modello è comunque formato da poligoni, solitamente tutti quadrilateri. Questa tecnica

permette di ottenere dettagli piccolissimi, perché l'artista può suddividere i poligoni del

modello molte volte, a seconda del livello di dettaglio che serve (hardware permettendo). C'è

una categoria di scultura digitale che invece lavora in modo diverso. Non usa quadrilateri, ma

triangoli, e questo gli permette di aggiungere i poligoni solo dove l'artista richiede il dettaglio.

Un esempio di questo genere lo troviamo nel programma gratuito Sculptris. Questo metodo

permette all'artista di non dover tener conto della topologia iniziale della mesh, e di

risparmiare poligoni dove non servono.

[Il sistema a topologia dinamica di Sculptris. Notare la maggior densità di poligoni dove è stato richiesto un maggior dettaglio]

Page 11: Introduzione alla grafica 3D - Blender Italia Community

3)Modellazione per solidi

E' il tipo di modellazione usata nella progettazione meccanica. Il modello viene considerato

pieno dal programma, e la forma finale si definisce aggiungendo o sottraendo volume alla

forma dell'oggetto. Le forme vengono definite generalmente da profili estrusi lungo percorsi,

o fatti ruotare attorno assi. Se si vuole utilizzare uno di questi modelli in un programma di

modellazione come Blender, bisognerà esportare il modello in un formato di superfici o

poligonale. Per 3DStudio Max si consiglia di esportare in .SAT, mentre per Blender si consiglia

l'uso del VRLM. Durante l'esportazione bisogna definire il livello di dettaglio che avrà il

modello poligonale.

4)Modellazione con curve.

Modellare con le curve significa usare una funzione matematica per definire una forma. Si può

usare una curva, gestita da appositi manipolatori, per definire il percorso di un profilo, il quale

sarà anch'esso una curva. Oppure si può usare una curva per deformare un modello

poligonale. Altro uso delle curve è quello di definire percorsi per le animazioni di oggetti, luci

e camere.

5)Modellazione tramite superfici.

La modellazione con le superfici è un'estensione della modellazione con le curve. Infatti è

unendo delle curve tramite una superficie che si ottiene il modello. Le superfici cosiddette

NURBS seguono perlopiù le stesse regole delle curve Bezier. Blender non possiede molti

strumenti per la loro gestione, per cui non approfondirò l'argomento.

Page 12: Introduzione alla grafica 3D - Blender Italia Community

Vediamo ora come si eseguono in Blender alcune operazioni particolari. Triangolarizzazione

Dicevamo che il programma suddivide virtualmente i poligoni quadrilateri in triangoli.

E' possibile vedere come Blender ha suddiviso un quadrilatero selezionandolo e premendo

ctrl-T. A quel punto la suddivisione diventerà visibile. Si potrà a quel punto indicare a Blender

un modo alternativo di suddividere quel quadrilatero. Si selezionano i due triangoli che lo

compongono, si preme Ctrl-E e si sceglie Rotate edge CW o CCW. Per unire nuovamente i due

triangoli, bisogna selezionarli e premere F oppure Alt-J.

[un modello triangolarizzato, e il comando per la rotazione dei triangoli] Creazione di facce

Per creare nuovi poligoni da elementi già esistenti, quali vertici e lati, si devono selezionare

tali elementi e premere il tasto F. Se selezioniamo due vertici, premendo F si creerà un lato.

Se i vertici selezionati sono 3, si creerà una faccia triangolare, e quadrilatera se i vertici sono

4. Come detto con più di 4 vertici non succede nulla. In alternativa possiamo selezionare due

lati (che abbiano un vertice in comune o meno) e sempre con F verrà a crearsi la nuova

faccia.

Grazie ai Loop Tools che abbiamo menzionato, è possibile selezionare due edge-loops non

connessi e unirli con un ponte di facce grazie al comando Bridge. Per accedere agli strumenti

si preme W ->Loop Tools->Bridge.

Page 13: Introduzione alla grafica 3D - Blender Italia Community

Retopo

Per retopare una mesh bisogna avere una seconda mesh vicino a quella da retopare. Si entra

in edit mode e si attivano lo snap a superfice, con l'opzione Project attiva. A quel punto

dovremo avere la mesh da retopare sotto i vertici che abbiamo selezionato. Se tentiamo di

muovere tali vertici, questi andranno a cadere sulle facce sottostanti, adattandosi alla nuova

forma. Questo succederà per tutti i vertici che andremo ordinatamente a creare per ridefinire

la topologia.

[le opzioni da attivare per retopare]

Creazione di sistemi di assi personalizzati

L’impostazione Normal è la più adatta per creare Sistemi di assi personalizzati, ma anche

Local può andare bene in molti casi. Dipende se vogliamo creare il sistema in ombject-mode o

in edit-mode. Mettiamo di volere un sistema di assi inclinato in X di 20°, e ruotato in Z di

45°. Ci basterà creare un piano, ruotarlo in X di 20° e in Z di 45°. Impostiamo Normal come

Transform Orientation e poi premiamo Ctrl-Alt-Spazio e il nostro sistema di assi verrà

memorizzato, e gli possiamo dare anche un nome che lo descriva. Poi potremo passare da

questo ad un altro con l’apposito menù.

Inoltre si può usare il comando Alt-S per far spostare tutti gli elementi selezionati (prende

come riferimento i vertici) lungo la loro normale.

Unire e staccare oggetti

Per unire due o più oggetti è necessario selezionarli tutti, lasciando per ultimo quello che farà

da riferimento. Fatto questo basta premere Ctrl-J. Gli oggetti si uniranno a quello attivo

prendendo alcune delle sue caratteristiche come i modificatori. Se invece dobbiamo staccare

una parte di una mesh, bisogna selezionarla e premere P->only selection.

Page 14: Introduzione alla grafica 3D - Blender Italia Community

I MATERIALI

Dopo aver realizzato il nostro modello dobbiamo prepararlo per il rendering. Dobbiamo fare in

modo che appaia come noi ci aspettiamo. Per fare questo bisogna applicarci il cosiddetto

materiale, o più correttamente “shader”.

Il materiale è una caratteristica del nostro oggetto che definisce come la luce della scena

interagirà con esso, determinandone la sua apparenza.

Ogni materiale ha diverse proprietà o canali. Vediamo i principali.

Il canale del colore diffuso: determina il colore base del materiale. La luce che lo colpisce e

viene riflessa in modo diffuso prenderà questo colore. Oltre ad avere un colore, in alcuni casi

può anche avere un’intensità, anche se questo non sarebbe fisicamente corretto. Infatti

dovrebbe essere soltanto il colore in sé a determinare quanto un materiale riflette la luce in

maniera diffusa.

Il canale del colore speculare: determina il colore che prende la luce riflessa in maniera

speculare. Lascio a Wikipedia le spiegazioni sulla luce diffusa e speculare. La maggior parte

dei materiali hanno una specularità bianca. I materiali che alterano il colore della luce

speculare sono solitamente i metalli, ed è particolarmente visibile nell’oro e nel rame. Il

risultato della specularità è quel puntino luminoso che compare sulle superfici arrotondate.

Nella realtà quel puntino luminoso altro non è che il riflesso della fonte luminosa. Solitamente

il motore di rendering renderizza la specularità come un cerchio luminoso posizionato nel

punto in cui dovrebbe riflettersi la fonte luminosa. La nitidezza dei bordi della specularità fa

percepire il livello di rugosità della superficie del materiale. Un materiale lucido avrà una

specularità netta e decisa, uno ruvido avrà una specularità più debole e sfumata. La tecnica

della specularità è utile quando non dobbiamo ottenere risultati fotorealistici o avere risultati

veloci. Se invece il nostro obbiettivo è il fotorealismo dobbiamo ottenere l'effetto speculare

tramite un altro parametro dei materiali, ovvero la riflessione.

[Un materiale con diffusa verde e specularità debole e sfumata, tipica di un materiale ruvido, e un

materiale con diffusa rossa e specularità forte e netta, tipica di un materiale lucido]

Page 15: Introduzione alla grafica 3D - Blender Italia Community

La riflessione. Se impostiamo della riflessione su un materiale esso rifletterà la scena attorno

a sé e, fra le altre cose, anche la fonte luminosa, andando a creare quel puntino luminoso

sulla sua superficie. La differenza con la specularità stà nel fatto che la forma del puntino sarà

esattamente quella della luce. Quindi se la scena sarà illuminata da un tubo al neon, la

specularità avrà una forma allungata, se la fonte di luce è una finestra, la specularità avrà la

forma di un rettangolo, e via dicendo.

La nitidezza del riflesso in questo caso non viene più determinata dal valore di hardness della

specularità, ma viene determinata da un parametro del materiale detto glossyness. Al valore

1 le immagini riflesse sono nitide come quelle reali. Man mano che il valore si abbassa i

riflessi saranno più offuscati. In questi casi, per ottenere immagini senza disturbi sui materiali

riflettenti con basso glossyness, bisognerà aumentare i samples dedicati alla riflessione,

ovvero quanti campioni il motore di rendering prende dalla scena circostante per valutare il

colore di un pixel. Con tanti samples i riflessi offuscati saranno più belli, ma i tempi di

rendering cresceranno.

[Il materiale viola con la riflessione attiva, con glossy a 1 per dei riflessi nitidi. Il materiale blu con glossy a

0.75 per dei riflessi offuscati. Attivando la riflessione è meglio azzerare la specularità.]

La trasparenza Con i parametri fin qui descritti è possibile creare tutti quei materiali che non

fanno passare la luce in nessun modo. Se dobbiamo invece creare un materiale che lascia

passare la luce dovremo regolare il parametro della trasparenza. In Blender si chiama Alpha,

in altri motori di rendering può chiamarsi Transparency o Opacity.

Con valori di Alpha 1 la trasparenza del materiale è nulla, quindi è come non attivarlo. Con

valore zero la trasparenza è completa e tutta la luce che colpisce l'oggetto con quel materiale

passerà attraverso.

Ci sono comunque due tipi di trasparenza nei motori di rendering: la Trasparenza Raytraced,

e la trasparenza semplice detta solitamente Opacità.[ In Blender, per decidere quale dei due

Page 16: Introduzione alla grafica 3D - Blender Italia Community

tipi usare, bisogna selezionare il pulsante apposito nel pannello della trasparenza: il pulsante

Z-transparency corrisponde all'Opacità, mentre il Ray-Transparency alla trasparenza

raytraced]

Il primo tipo di trasparenza tiene conto di un parametro aggiuntivo, lo IOR, ovvero l'indice di

rifrazione di un materiale. In natura ogni materiale ha un proprio indice di rifrazione, e indica

quanto la luce viene deviata quando viaggia attraverso quel materiale. Assegnando lo IOR

corretto al nostro materiale trasparente osserveremo che le figure che ci vediamo attraverso

appaiono deformate, come accadrebbe nella realtà guardando attraverso una boccia di vetro.

Anche mettendo il valore di alpha a zero noteremo comunque la presenza dell'oggetto dal

fatto che l'immagine è deformata. L'opacità invece non tiene conto di questo parametro, e la

luce che passa attraverso quel materiale non subirà alcuna deviazione. Con alpha zero il

materiale risulterà completamente invisibile.

[Il materiale giallo con trasparenza semplice a 0.5, il materiale azzurro con trasparenza raytrace con lo

IOR del vetro a 1.52. Notare la distorsione dell’immagine nel secondo caso. Con IOR a 1 non si hanno

distorsioni]

Il colore del materiale gioca un ruolo molto importante nell'apparenza di un materiale

trasparente. Infatti Se il valore alpha è ad esempio 0.5, le immagini che vedremo attraverso

saranno offuscate col colore del materiale.

Anche per la trasparenza c'è il parametro glossy, che determina la nitidezza della trasparenza.

Come per la riflessione, valori bassi danno immagini offuscate, valori alti immagini nitide.

Altri parametri avanzati permettono di ottenere materiali trasparenti molto realistici, come ad

esempio l'assorbimento o il colore di filtraggio, utili per simulare vetri colorati e simili.

Inoltre con l'attivazione della trasparenza bisogna tenere conto di un ulteriore effetto, ovvero

le ombre trasparenti. Solitamente bisogna indicare al motore di rendering se usare ombre

trasparenti, la cui intensità e colorazione variano in base ai parametri della trasparenza, o

Page 17: Introduzione alla grafica 3D - Blender Italia Community

ombre solide, che non tengono conto in nessun modo della trasparenza.

[Un esempio di ombra trasparente]

Diffusione interna (SSS-Subsurface scattering) E' un parametro per simulare quei materiali

che assorbono luce, la fanno rimbalzare al loro interno e poi la riemettono in modo diffuso e

casuale. Molti dei materiali presenti in natura, specialmente quelli legati alla materia organica,

possiedono di queste caratteristiche. Basti pensare alla pelle, alla cera o ai vegetali. Ma anche

alcune plastiche o rocce posseggono di queste proprietà. L'effetto è ben visibile quando si

mette uno di questi materiali davanti ad una forte fonte luminosa. Non si vede attraverso al

materiale, ma si vede che esso si illumina. I parametri di questa caratteristica sono molteplici,

e variano da un software all'altro, per cui non staremo ad elencarli ed a discuterli.

[Un oggetto con materiale con SSS. Notare la differenza di

illuminazione delle zone sottili rispetto alle spesse]

Page 18: Introduzione alla grafica 3D - Blender Italia Community

Traslucenza Simile al SSS è la traslucenza. La traslucenza trasporta sul lato non illuminato

dell'oggetto le ombre che vengono proiettate sul lato illuminato con una certa intensità e

nitidezza in base al valore di traslucenza del materiale, che rimane comunque opaco.

[Un materiale con traslucenza. L'ombra proiettata

su una faccia viene riportata sulla posteriore, come

succede ad esempio su una stoffa. Il materiale deve

avere un minimo di trasparenza per ottenere

l'effetto]

Emissione Questo parametro regola la quantità di luce che un materiale emette. La luce

emessa sarà del colore di diffusione del materiale. Con valori alti comunque il materiale

risulterà bianco. In molti motori di rendering è possibile determinare se questo parametro

permetta al materiale di illuminare la scena circostante oppure no.

[L'emissione in Blender non influenza la scena circostante, mentre con un motore di rendering come

Yafaray sì]

Page 19: Introduzione alla grafica 3D - Blender Italia Community

Opzioni particolari dei materiali Ci sono molte opzioni dei materiali che ci aiutano ad ottenere

effetti particolari. Vediamo le principali:

• TRACEABLE: dice al motore di rendering di prendere in considerazione questo materiale

per i calcoli di raytracing. Quindi il materiale verrà renderizzato correttamente nelle

trasparenze e nelle riflessioni.

• WIRE: dice al motore di rendering di renderizzare l'oggetto disegnando solo gli edge del

modello e rendendo trasparenti le facce.

• HALO: renderizza solo i vertici del modello come punti luminosi con aloni ed effetti di luce.

• VOLUME: renderizza il materiale come fosse una nuvola o simili, in base alle impostazioni.

• SHADELESS: con questa opzione attiva il materiale appare piatto, e non viene influenzato

dalla luce della scena.

• ONLY SHADOW- Dice all'oggetto con quel materiale di non essere renderizzato, ma di

renderizzare solo l'ombra che l'oggetto proietta. Utile per aggiungere ombre fasulle o di

oggetti da inserire in post-produzione.

• RECEIVE TRANSAPRENT SHADOW- Dice al motore di rendering che le ombre trasparenti

proiettate su quel materiale siano renderizzate correttamente, e non in modo solido.

• DEPTH: per la riflessione e per la trasparenza determina quanti rimbalzi un raggio di luce

può fare prima di annullarsi. Se abbiamo un oggetto molto complesso con un materiale

trasparente o riflettente e mettiamo un valore di depth troppo basso, le aree dove la luce

rimbalza molte volte risulteranno nere. Bisogna aggiungere un valore di depth per ogni

strato attraversato dalla luce o per ogni parete su cui il raggio di luce si riflette.

Assegnare i materiali

Solitamente ogni singolo materiale è assegnato ad un singolo oggetto. Per assegnare un

materiale di solito si seleziona un oggetto e da un menù apposito si abbina un dato materiale

a quell’oggetto. In Blender bisogna entrare nel pannello materiale dell’oggetto selezionato e

scegliere un materiale dalla lista o crearne uno nuovo. Molte volte però abbiamo bisogno di

assegnare un materiale ad una parte dell’oggetto, e all’altra parte di assegnarne un secondo.

La soluzione consiste nell’assegnare un materiale o un’ID a certe facce, e alle altre

assegnarne un’altro. La faccia di un modello è la più piccola porzione in cui suddividere i

materiali dell’oggetto. Il problema è che la maggior parte delle volte le facce sono troppo

grandi per permetterci di creare la varietà di colori e caratteristiche di una superficie

realistica. Se prendiamo un tavolo in legno, la sua superficie sarà formata probabilmente da

un’unica faccia. Se volessimo dargli l’effetto della venatura dovremmo suddividere quella

faccia in tante altre facce, in modo da permetterci di assegnare ad ognuna le varie

sfumature di marrone per creare la venatura! Un lavoro assurdo ed improponibile. Ecco

quindi che ci vengono in aiuto le textures!

Page 20: Introduzione alla grafica 3D - Blender Italia Community

LE TEXTURES

Le textures sono solitamente immagini bidimensionali. Esse vanno applicate alle facce del

modello per aumentare il dettaglio della finitura superficiale del modello, e nel caso del

tavolo, per applicare la venatura. La questione comunque è un po’ più complessa.

Cominciamo col dire che esistono due tipi di textures: le bitmap e le procedurali. Le bitmap

sono le classiche immagini formate da pixel. Le procedurali invece sono delle immagini che

vengono create di volta in volta dal computer sulla base di script e funzioni matematiche.

Queste textures non hanno una risoluzione, per cui anche se ci si avvicina non si vedranno i

pixel che la formano. Inoltre variando i parametri delle funzioni possono cambiare in

moltissimi modi diversi. Inoltre le procedurali possono anche essere tridimensionali, nel senso

che oltre alla sezione che vediamo sul monitor, la texture continua anche sopra e sotto, e noi

possiamo decidere da che livello prendere la sezione che vogliamo applicare al nostro

modello. Ovviamente alle facce del modello verrà applicata una parte bidimensionale della

texture. Le textures procedurali sono già presenti nei programmi, ma se ne possono

aggiungere altre semplicemente inserendo il relativo script nell’apposita cartella. Le bitmap

invece devono essere fornite dall’utente.

Funzioni delle textures

Le texture solitamente vengono associate al colore del modello. In realtà questa è solo una

delle loro molteplici funzioni. Abbiamo visto che un materiale ha numerosi parametri da

regolare. Ebbene quasi ognuno di questi parametri può essere assegnato ad una texture. Ci

basterà applicare la texture al modello e dirgli di influenzare non il colore diffuso del

materiale, ma la sua riflessione. A quel punto il programma farà cambiare il valore di

riflessione di un punto sul modello in base al valore di colore che la texture ha in quel punto.

Oppure può essere assegnata alla trasparenza, in modo da creare un oggetto in vetro

variegato e multicolore. L’azione di ogni texture inoltre può essere regolata in modo da

rendere i suoi effetti forti o leggeri, e possono essere mescolate assieme.

Un altro uso delle textures è quello di aggiungere del dettaglio di rugosità alla superficie del

modello. Si tratta delle bump-map e delle normal-map. Le prime utilizzano valori di grigio per

indicare la variazione di altezza della superficie, mentre le altre usano un codice RGB per

indicare variazioni nelle normali della faccia e dare l’impressione del dettaglio. Vi rimando ad

un mio articolo su Blender Magazine Italia per una spiegazione dettagliata di queste mappe.

http://www.blendermagazineitalia.it/archivio/10/index.html

Questi due tipi di effetto non influiscono sulla reale forma del modello. Cosa che invece fa il

displace. La stessa mappa usata per il bump può essere messa nel canale del displace, il

quale invece deforma effettivamente il modello sempre in base alle informazioni di altitudine

della mappa. Per poter fare questo il modello deve essere finemente suddiviso, il che porta ad

Page 21: Introduzione alla grafica 3D - Blender Italia Community

un gran consumo di risorse hardware. Questo effetto quindi va usato solo in casi in cui la

reale deformazione del modello è necessaria.

Le textures possono anche essere usate come maschere per mescolare più materiali su uno

stesso modello. Ad esempio una texture con zone bianche e nere, mostrerà il materiale 1

sulle zone bianche, mentre il 2 sulle zone nere.

L’uso delle texture come maschere serve anche per limitare l’effetto delle altre textures a

particolari aree, o per regolare l’azione di altri effetti, come ad esempio le particelle.

Le textures solitamente possono anche essere animate, facendole spostare o variare di scala.

La mappatura

Vediamo ora uno dei principali problemi, ovvero la mappatura della texture. Per mappatura si

intende definire a quale punto del modello corrisponde ogni punto della texture.

Ci sono principalmente due modi per farlo: le mappature preimpostate o l’unwrapping.

Le mappature preimpostate sono praticamente delle forme geometriche che andranno ad

avvolgere il nostro modello. Da ciascuna delle facce di queste forme verrà proiettata la

texture sul modello. Ad esempio la mappatura box, che corrisponde ad un cubo, proietterà la

texture da ognuna delle sue sei facce. Tutte le facce del modello che saranno rivolte

principalmente come quella faccia, riceveranno la texture da quella direzione. La mappatura

sferica invece proietta sul modello la texture deformata secondo una proiezione sferica. E così

via.

Il centro della forma geometrica può essere determinato o con i parametri della texture o

tramite un oggetto esterno da usare come riferimento.

Un altro genere di mappatura preimpostata è la window, che significa che la texture viene

proiettata sull’oggetto a partire dallo schermo, qualunque sia l’orientamento dell’oggetto.

Utile per uno sfondo.

C’è poi una mappatura dedicata alle fibre come ad esempio i capelli creati con le particelle.

La mappatura reflection è utile nel caso si voglia creare l’effetto di una scena riflessa

nell’oggetto.

Ma passiamo alla mappatura più versatile, ovvero l’unwrapping. L’unwrapping consiste nello

stendere il modello 3D su una superficie 2D, in modo da proiettarci sopra la texture.

Immaginiamo di avere il nostro modello fatto di carta, e che esso sia un oggetto chiuso e

senza tagli. Se volessimo renderlo piatto avremmo due possibilità: schiacciarlo così come sta,

o praticare dei tagli lungo alcuni suoi spigoli in modo da poterlo aprire e stendere senza

piegare o deformare la carta. Questa soluzione è quella che di solito si adotta nella grafica 3D

per i modelli che necessitano una mappatura precisa. Si selezionano degli edge strategici e si

Page 22: Introduzione alla grafica 3D - Blender Italia Community

indicano al programma come dei tagli. A quel punto si può avviare il calcolo dell’unwrap,

durante il quale il computer calcolerà il modo migliore di stendere l’oggetto in modo da

deformare il meno possibile le facce. Infatti, se una faccia venisse deformata molto durante

l’unwrap, quando la texture ci verrà applicata risulterà ugualmente deformata. Se questo

dovesse succedere vorrà dire che dovremo cambiare gli edge dedicati ai tagli, in modo da

permettere al programma un migliore unwrap.

Il problema dei tagli, detti anche cuciture, è che in quel punto la texture perde la sua

continuità. Per questo quando dobbiamo unwrappare una testa non la possiamo riempire di

tagli per evitare deformazioni, perché altrimenti si noterebbero ovunque le interruzioni della

texture. In questi casi si predilige una leggera deformazione alla presenza di cuciture, che

saranno poste in punti poco visibili. Nel caso invece di modelli hard-surface, come ad esempio

un carrarmato, le cuciture verranno messe lungo gli spigoli della carrozzeria, in modo che

tutte le superficie piane vengano unwrappate senza deformazioni, in modo che le texture

degli stemmi, delle scritte, o di cose simili, risultino della corretta forma.

Dopo che l’unwrap è stato calcolato di solito se ne esporta il disegno in un programma di

grafica 2D per disegnare la texture del modello. In Blender è possibilie disegnare

direttamente nell’image-editor. Tuttavia gli strumenti di disegno sono limitati rispetto ai

programmi dedicati.