Gian Paolo Dessolis.com


Vai ai contenuti

Menu principale:


Grafica 2D 3D Giorgia Secchi

Grafica

D:\Sito gpdessolis.com\progetto 21-01-2011\ObjVideo\irenesance.mp3
Error 53: File not found

Grafica: Giorgia Secchi


La grafica computerizzata tridimensionale è basilarmente la scienza, lo studio e il metodo di proiezione della rappresentazione matematica di oggetti tridimensionali tramite un'immagine bidimensionale attraverso l'uso di tecniche come la prospettiva e l'ombreggiatura (shading) per simulare la percezione di questi oggetti da parte dell'occhio umano. Ogni sistema 3D deve fornire due elementi: un metodo di descrizione del sistema 3D stesso ("scena"), composto di rappresentazioni matematiche di oggetti tridimensionali, detti "modelli", e un meccanismo di produzione di un'immagine 2D dalla scena.

Creazione della scena

Gestione di un modello tridimensionale nel programma BlenderUna scena si compone di "primitive" (modelli tridimensionali che non possono essere ulteriormente scomposti); il modo più semplice per organizzarla è quello di creare un array di primitive, ma questo metodo non permette una descrizione più dettagliata della scena, semplicemente "spiega" al renderer come disegnare la stessa. Una tecnica più avanzata organizza gli oggetti in una struttura dati ad albero (scene graph), che permette di raggruppare logicamente gli oggetti (ad esempio, si può quindi replicare più volte un oggetto, avendolo modellato attraverso più patch NURBS raggruppate, all'interno della stessa scena).

Le primitive sono generalmente descritte all'interno del proprio sistema di riferimento locale, e vengono posizionate sulla scena attraverso opportune trasformazioni. Le trasformazioni affini più impiegate, come omotetia, rotazione e traslazione, possono essere descritte in uno spazio proiettivo con una matrice 4x4: esse si applicano moltiplicando la matrice per il vettore a quattro componenti che rappresenta ogni punto di controllo delle curva. La quarta dimensione è denominata coordinata omogenea.

Ad ogni nodo dello scene graph è associata una trasformazione, che si applica anche ad ogni nodo sottoposto, ricreando l'interazione fisica tra oggetti raggruppati (come quella tra un uomo e il suo vestito). Anche in sistemi di modellazione e rendering che non fanno uso di scene graph è comunque generalmente presente il concetto di trasformazione applicata "in verticale".

Illuminazione e shading

Immagine originale Illuminazone 1000 Illuminazione 2000 Illuminazione 6000Lo shading (lett. "ombreggiatura") è il processo di determinazione del colore di un determinato pixel dell'immagine. Esso comprende in genere il processo di illuminazione (lighting), che ricostruisce l'interazione tra gli oggetti e le sorgenti di luce: a questo scopo sono necessari per un modello di illuminazione le proprietà della luce, le proprietà di riflessione e la normale alla superficie nel punto in cui l'equazione di illuminazione viene calcolata.

Per produrre una rappresentazione visuale dell'immagine efficace, bisogna simulare la fisica della luce. Il modello matematico più astratto del comportamento della luce è l'equazione di rendering, basata sulla legge di conservazione dell'energia. Essa è un'equazione integrale, che calcola la luce in una certa posizione come la luce emessa in quella posizione sommata all'integrale della luce riflessa da tutti gli oggetti della scena che colpisce quel punto. Questa equazione infinita non può essere risolta con algoritmi finiti, quindi necessita di approssimazione.

I modelli di illuminazione più semplici considerano solo la luce che viaggia direttamente da una sorgente luminosa ad un oggetto: questa è chiamata "illuminazione diretta". Il modo in cui la luce viene riflessa dall'oggetto può essere descritto da una funzione matematica, chiamata "funzione di distribuzione della riflessione bidirezionale" (bidirectional reflectance distribution function, BRDF), che tiene conto del materiale illuminato. La maggior parte dei sistemi di rendering semplifica ulteriormente e calcola l'illuminazione diretta come la somma di due componenti: diffusa e speculare. La componente diffusa, o Lambertiana corrisponde alla luce che viene respinta dall'oggetto in tutte le direzioni, mentre quella speculare alla luce che si riflette sulla superficie dell'oggetto come su uno specchio. Il modello di riflessione di Phong aggiunge una terza componente, ambientale, che fornisce una simulazione basilare dell'illuminazione indiretta.

Gli oggetti sono in realtà bombardati da moltissime sorgenti luminose indirette: la luce "rimbalza" da un oggetto all'altro finché non perde energia. L'"illuminazione globale" indaga questo comportamento della radiazione luminosa. Come l'illuminazione diretta, essa comprende una componente diffusa ed una speculare. La riflessione reciproca diffusa riguarda la luce che colpisce un oggetto dopo averne già colpito un altro. Dal momento che questo ha assorbito una data lunghezza d'onda dello spettro della luce che lo ha colpito, la luce che respinge ha un colore diverso da quella da cui è illuminato. La riflessione reciproca speculare si manifesta generalmente con caustiche (ovvero con la concentrazione della radiazione luminosa in un punto da parte di una superficie speculare, come quella ottenibile dalla luce solare con una lente).

Dato che gli algoritmi completi di illuminazione globale, come Radiosity e il photon mapping, richiedono grande capacità di calcolo, sono state sviluppate tecniche per approssimare l'illuminazione globale. L'algoritmo di occlusione ambientale, ad esempio, calcola da quanta luce ambientale può essere raggiunto ogni punto di un modello.

I modelli poligonali impiegati in applicazioni in tempo reale non possono avere un alto livello di dettaglio; il sistema più semplice per illuminarli è calcolare un valore di intensità luminosa per ogni poligono, basato sulla sua normale. Questo metodo è chiamato flat shading, dato che rivela la forma "piatta" di ogni poligono. Per evitare questa "sfaccettatura", i valori corrispondenti ai vertici devono essere interpolati. Il Gouraud shading calcola l'intensità luminosa ad ogni vertice del modello basandosi sulla normale corrispondente, quindi esegue una interpolazione lineare su tutta la superficie del poligono. Il difetto più evidente di questa tecnica è che "perde" i riflessi speculari vicini al centro di un poligono. La soluzione data dal Phong shading è l'interpolazione su tutta la superficie del poligono delle normali ai vertici, e successivamente il calcolo dell'illuminazione pixel per pixel.

Queste equazioni si applicano a oggetti che possiedono colorazione propria, ma modellare ogni dettaglio presente sulla superficie di un oggetto sarebbe enormemente dispendioso. Col texture mapping si può descrivere la superficie di un oggetto senza aggiungere complessità alla scena: un'immagine (texture) viene "spalmata" sulla superficie di un oggetto, come un planisfero su una sfera per creare un mappamondo; durante lo shading, il colore del modello viene identificato in quello della texture, nel suo pixel ("texel") corrispondente.

Dato che le texture non possono rispecchiare l'illuminazione della scena, ma solo il colore del modello, per "perturbare" le normali ai poligoni si usa il bump mapping. Questo fa uso di immagini che contengono, anziché un colore, un valore usato per modificare la normale al poligono nel punto corrispondente, e modificare così la forma della superficie. Questa tecnica aggiunge "ruvidità" alle superfici con grande risparmio di poligoni.

Il normal mapping è una tecnica che sostituisce invece di perturbare la normale alla superficie: una normal map è un'immagine a 3 canali in cui ogni pixel rappresenta un vettore 3D, ovvero la normale al punto stesso.

L'obiettivo di ogni algoritmo di shading è determinare il colore risultante di uno specifico punto sulla superficie di un oggetto. Gli shader programmabili offrono grande versatilità in questo, basandosi su linguaggi di programmazione specifici detti "linguaggi di shading". Questi linguaggi vengono sviluppati per applicazioni specifiche nella computer grafica, e includono algebra lineare e caratteristiche mirate alle problematiche di illuminazione. Gli shader possono includere qualsiasi tecnica di illuminazione, texture mapping e manipolazione geometrica. Uno "shader procedurale" determina il colore risultante in maniera completamente algoritmica: possono così risultare convincenti senza bisogno di grandi texture.

Formano una classe a sé stante i "vertex shader" e i "pixel shader", designati appositamente per funzionare insieme ad algoritmi scanline e per girare su una GPU. Mentre in precedenza ogni hardware grafico implementava una specifica pipeline che costringeva l'utilizzatore ad usare esclusivamente il modello di illuminazione per cui era programmato l'hardware, con questa categoria di shader ogni momento del rendering è sotto il controllo dello sviluppatore







Home Page | News | Fotografia BW e color | Nozioni tecniche | Lo Studio | Composizioni | Modelle | Book fotografici modelle | Matrimoni | Grafica | Ricostruzioni | Produzioni Video | videoarte | Mostre ed Eventi | area riservata | Pubblicazioni | Chi sono | Link | Mappa del sito


Torna ai contenuti | Torna al menu