Informatica Grafica
(2a parte)
a.a. 2011/2012
Prof. Massimiliano Dellisanti Fabiano Vilardi
1
Grafica 3D
Con “Grafica 3D” si indicano quelle tecniche informatiche finalizzate alla descrizione
(e rappresentazione ) di oggetti in uno spazio tridimensionale.
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
2
Stereoscopia
La Grafica 3D non va confusa con la “Stereoscopia” che è invece una tecnica di
visualizzazione finalizzata a riprodurre la sensazione di “profondità” mediante l’uso di
di coppie di immagini (una per l’occhio destro e una per l’occhio sinistro, in modo da
replicare il fenomeno della visione binoculare per mezzo del quale l’uomo osserva
l’ambiente circostante)
Esistono diverse tecniche e dispositivi stereoscopici.
Ad esempio:
Head Mount Display
Metodo degli Anaglifi
Stereoscopia mediante filtraggio attivo
Stereoscopia mediante filtraggio passivo
Monitor Autostereoscopici
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
3
Stereoscopia
Head Mount Display
Anche denominati “caschi per la realtà virtuale”: sono dispositivi da indossare provvisti di lenti e doppio
monitor opportunamente posizionati per consentire la visione binoculare.
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
4
Stereoscopia
Anaglifi
Un anaglifo è una immagine ottenuta dalla
sovrapposizione di due immagini (una per occhio)
filtrate mediante due lenti di colore complementare
(tipicamente rosso e blu).
Osservando l’anaglifo con un paio di occhiali provvisti di
lenti degli stessi due colori, si possono separare le due
immagini e osservarne ciascuna su ciascun occhio
simulando la visione binoculare.
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
5
Stereoscopia
Visualizzazione Stereoscopica mediante filtraggio passivo
Usata nella proiezione di film nei “cinema 3D”.
Due pellicole cinematografiche (una per occhio) vengono proiettate su uno schermo attraverso filtri
polarizzatori. Gli spettatori indossano occhiali provvisti di filtri dello stesso tipo capaci di separare
nuovamente le due immagini (che sono sovrapposte sullo schermo).
Rispetto al metodo degli anaglifi viene preservato il colore dell’immagine.
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
6
Stereoscopia
Visualizzazione Stereoscopica mediante filtraggio attivo
Usata nei “televisori 3D”.
Il televisore mostra le immagini destra e sinistra alternandole ad elevata velocità.
Il telespettatore indossa un paio di occhiali “attivi” (detti shutter glasses) capaci di oscurare (e rendere
trasparente) le due lenti alternativamente e in maniera sincrona con le immagini provenienti dal monitor. In
questo modo ciascun occhio vede solo l’immagine che gli compete.
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
7
Stereoscopia
Monitor Autostereoscopici
Sono monitor provvisti di un reticolo ottico capace di indirizzare immagini diverse a seconda dell’angolo di
osservazione, permettendo ad un occhio di vedere una immagine diversa da quella che vede l’altro. Spesso gli
angoli di visione sono troppo stretti e poco adatti a grandi schermi.
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
8
Grafica 3D
In maniera analoga al caso bidimensionale possiamo distinguere due modalità di
rappresentazione della scena 3D:
Rappresentazione Volumetrica (Volume Rendering)
Rappresentazione Vettoriale
La scena è descritta da voxel (volume pixel) ordinati
in una griglia tridimensionale. E’ questo il tipico
caso delle immagini mediche provenienti da TAC,
RMN, ecc.
La scena è descritta da primitive geometriche
tridimensionali.
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
9
Grafica 3D Vettoriale
Gli oggetti sono descritti mediante una opportuna
composizione di figure geometriche semplici.
Nel caso di solidi complessi (non facilmente riducibili in
sfere, coni e parallelepipedi) si usa la tecnica delle
mesh.
Una mesh è un opportuno reticolo di punti (nuvola di
punti descritti ciascuno da coordinate x,y,z)
appartenenti alla superficie del solido che si vuole
descrivere. I punti possono essere organizzati in gruppi
di tre: poiché per una terna di punti passa una ed una
sola superficie piana, ogni tripletta definisce un
triangolo piano opportunamente orientato nello spazio
3D. Pertanto una qualunque superficie è approssimata
mediante un numero sufficientemente elevato di
triangoli piani.
Di fatto anche le superfici descritte mediante forme
geometriche primitive vengono ridotte ad un insieme
di triangoli per essere visualizzate. La scheda video si
limita ad effettuare le operazioni di visualizzazione su
un numero elevato di triangoli attraverso i quali si
compone tutta la scena 3D.
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
10
Camera Model
L’insieme di oggetti presenti nello spazio 3D virtuale
costituiscono la Scena 3D.
La scheda video del calcolatore si occupa della operazione
di rendering, ovvero della generazione di una immagine
bidimensionale (di tipo raster) a partire dalla descrizione
numerica (sotto forma di punti, triangoli, coordinate) della
scena. Vieni quindi effettuata (matematicamente) la
proiezione dei punti (e dei triangoli) su un piano di
proiezione (coincidente con la superficie del monitor) in
modo da ottenere le coordinate 2D con le quali tracciare le
immagini raster.
Perché questo sia possibile bisogna disporre oltre che della
descrizione della scena, anche della descrizione del punto
di vista dell’osservatore. Si immagina che l’osservazione
avvenga per mezzo di una macchina fotografica (camera)
virtuale che riprende la scena.
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
11
Camera Model
Punto di osservazione della camera
virtuale.
Come tutti gli oggetti di una scena 3D, la
camera ha una posizione (coordinate
x,y,z) ma anche una orientazione, ovvero
“guarda” in una specifica direzione (3
angoli di rotazione rispetto agli assi).
Pertanto diremo che gli oggetti 3D hanno
6 gradi di libertà (6 Degrees Of Freedom:
la collocazione nella scena 3D è
determinata da 6 variabili indipendenti)
Viewing Frustrum (View Volume)
(Solo gli oggetti posizionati
all’interno di questo tronco di
piramide vengono renderizzati)
Far Plane (Back Clipping Plane)
(Gli oggetti più lontani dalla
camera rispetto a questo piano
non vengono renderizzati)
Piano di proiezione
(View Plane)
Field Of View orizzontale
Angolo di apertura orizzontale
dell’obbiettivo virtuale
Near Plane (Front Clipping Plane)
(Gli oggetti più vicini alla camera
rispetto a questo piano non
vengono renderizzati)
Field Of View verticale
Angolo di apertura verticale
dell’obbiettivo virtuale
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
12
Matrici di Proiezione
Le coordinate dello spazio 3D devono essere proiettate sul View Plane. Le coordinate 2D
ottenute permettono di generare l’immagine raster risultante.
Proiezione Prospettica
y
P(x,y,z)
yv
z
d
xv = (d/z) x + 0 y + 0 z
yv = 0 x + (d/z) y + 0 z
zv = 0 x + 0 y + (d/z) z
(la coordinata Z in realtà risulta utile solo ai fini dello zbuffer come vedremo in seguito e non per la
determinazione del punto sul view plane)
(Piano di proiezione)
Matrice di Proiezione Prospettica
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
d/z
0
0
0
d/z
0
0
0
d/z
13
Matrici di Proiezione
Sebbene la proiezione prospettica produce un rendering più realistico è possibile proiettare i
punti mediante proiezione ortogonale.
Proiezione Ortogonale
y
P(x,y,z)
yv
z
d
xv = 1 x + 0 y + 0 z
yv = 0 x + 1 y + 0 z
zv = 0 x + 0 y + 1 z
(la coordinata Z risulta utile solo ai fini dello z-buffer come
vedremo in seguito e non per la determinazione del punto
sul view plane)
(Piano di proiezione)
Matrice di Proiezione Ortogonale
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
1
0
0
0
1
0
0
0
1
14
Trasformazioni Geometriche
Per ruotare, traslare ed in generale trasformare la collocazione degli oggetti nello spazio 3D dobbiamo
agire sulle coordinate dei punti che li descrivono.
Tutte le operazioni possibili sono descritte dalla seguente trasformazione affine:
p = A p’ + b
A = matrice 3x3
p,p’,b = vettori dello spazio 3D
Tutte le operazioni possono essere ridotte ad una opportuna composizione di 3 tipi di trasformazioni
fondamentali:
Traslazione
Rotazione
Scala
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
15
Trasformazioni Geometriche
Traslazione:
Spostamento di un punto nello spazio 3D di un vettore b = [ bx, by, bz ]
Y
b
X
y= Ix+b
I = matrice identità
b = vettore spostamento
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
16
Trasformazioni Geometriche
Rotazione:
Spostamento di un punto nello spazio 3D attorno ad uno degli assi coordinati di un angolo α
(si osservi che gli assi x,y e z sono orientati per convenzione secondo l’ordine dettato dalla regola della mano destra.
Analogamente gli angoli crescono nel verso indicato dalla regola della mano destra)
y
p’(x’,y’,z’)
α
z
x’ = cos(α) x – sin(α) y
y’ = sin(α) x + cos(α) y
z’ = z
p(x,y,z)
x
p’ = R p
R = matrice di rotazione
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
17
Trasformazioni Geometriche
Matrice di Rotazione attorno all’asse X:
1
0
0
0
cos(α)
-sin(α)
0
sin(α)
cos(α)
Matrice di Rotazione attorno all’asse Y:
cos(α)
0
-sin(α)
0
1
0
sin(α)
0
cos(α)
Matrice di Rotazione attorno all’asse Z:
cos(α)
-sin(α)
0
sin(α)
cos(α)
0
0
0
1
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
18
Trasformazioni Geometriche
Scala:
L’operazione di scala consiste nel moltiplicare ciascuna coordinata per un fattore k
y= Sx
S = matrice di scala
Esempi di trasformazioni di scala:
Matrice di Scala:
kx
0
0
0
ky
0
0
0
kz
simmetria rispetto al piano xy (kx = 1; ky = 1; kz = -1)
simmetria rispetto all’asse x (kx = 1; ky = -1; kz = -1)
simmetria rispetto all’origine (kx = -1; ky = -1; kz = -1)
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
19
Coordinate Omogenee
Introduciamo una notazione che ci permette di scrivere le trasformazioni in maniera più
compatta. Aggiungiamo una dimensione ai vettori in modo che sia:
 wx 
 wy 
p 
 wz 
 
w
con w  0
In particolare scegliamo w =
1
In questo modo la generica trasformazione p = A p’ + b, tradotta nello spazio delle coordinate
omogenee, si può scrivere:
A
y=Tx
con T matrice 4x4 :
b
T=
0
0
0
1
Ora la matrice T può contenere sia informazioni di rotazione e scala, che di traslazione
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
20
Trasformazioni Geometriche
Composizione di Trasformazioni:
P3
P1
T0
P1 = T0 P0
P2 = T1 P1 = T1 ( T0 P0 )
P3 = T2 P2 = T2 ( T1 P1 ) = T2 ( T1 ( T0 P0 ) )
…
T1
T2
P2
P0
Si osserva pertanto che le matrici di trasformazione si possono comporre mediante
moltiplicazione a sinistra:
T = T2 T1 T0
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
21
Rasterizzazione di punti e segmenti
La scheda video è capace di effettuare le operazioni di proiezione e trasformazione
(moltiplicazioni matriciali) per ciascun punto.
Una volta proiettati i punti di un segmento, la scheda si occupa della “rasterizzazione” del
segmento stesso, ovvero del tracciamento dei pixel intermedi sulla immagine raster finale
(detta view buffer o frame buffer).
(Le schede video implementano l’algoritmo di Bresenham per il tracciamento di linee a
causa della sua elevata efficienza)
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
22
Aliasing
L’aliasing (in generale) è il fenomeno di rappresentazione ambigua di un segnale. La figura
ad esempio mostra un tipico caso di aliasing: sia un segmento obliquo che una serie di
segmenti disposti “a scalini” risultano nella stessa rappresentazione sulla matrice di pixel.
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
23
Anti-aliasing
Le schede video implementano algoritmi di anti-aliasing, ovvero metodi per migliorare la
renderizzazione di linee oblique:
L’idea consiste nel considerare il segmento come un rettangolo che “copre” parzialmente
dei pixel. I pixel vengono colorati con intensità proporzionale all’area coperta. A distanza
sufficiente dallo schermo (e a risoluzioni sufficientemente elevate), l’effetto finale è molto
più gradevole.
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
24
Rasterizzazione di triangoli
Essendo le superfici rappresentate da triangoli, la scheda video deve saper tracciare non
solo i segmenti che li delimitano, ma anche riempirli del loro colore. L’algoritmo di
riempimento dei triangoli viene detto algoritmo scan-line (perché il riempimento avviene
per righe nel frame buffer: la scheda grafica le scandisce una per una per tracciare i pixel
dell’interno del triangolo)
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
25
Lighting, Material, Shading
Nessun rendering può essere sufficientemente realistico senza tenere in conto l’effetto della luce sulle
superfici. Riprodurre fedelmente i fenomeni di riflessione e rifrazione che avvengono in realtà è
particolarmente dispendioso in termini di calcoli necessari rendendo impossibile la generazione di
animazioni in tempo reale. Si usano quindi algoritmi di shading (ombreggiata) che simulano e
approssimano in maniera grossolana (ma visivamente efficace) i fenomeni luminosi.
In ogni scena 3D è possibile definire uno o più sorgenti luminose
(per ciascuna si può definire il tipo: posizionale, direzionale, spot-light)
Per ogni superficie della scena sono descritte le proprietà ottiche alle quali obbedisce. Tali proprietà
definiscono il “materiale” della superficie e sono le seguenti:
•
Ambient Color
(è il colore della superficie non influenzato dalle sorgenti luminose della scena)
•
Diffuse Color
(è il colore della superficie dovuto alla riflessione della luce diffusa)
•
Specular Color
(è il colore della superficie dovuto alla riflessione della luce proveniente dalle
sorgenti luminose della scena)
•
Emissive Color
(è il colore della superficie dovuto alla emissione luminosa propria dell’oggetto)
•
Trasparenza
(definisce il livello di trasparenza della superficie)
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
26
Lighting, Material, Shading
I colori definiti nel materiale servono per il calcolo del colore dei pixel con il quale verrà riempito il
triangolo mediante l’algoritmo scan-line.
E’ evidente che per calcolare il colore finale del triangolo è necessario tenere in considerazione la
posizione del triangolo nello spazio rispetto alle fonti luminose della scena.
Nel caso di una singola fonte luminosa è evidente che la quantità di luce riflessa da una superficie piana
dipende dal coseno dell’angolo formato tra la direzione di provenienza della luce e la normale alla
superficie.
L
L
L
N
componente
riflessa
piccola
⍬=70⁰
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
N
componente
riflessa
grande
⍬=35⁰
N
componente
riflessa
massima
⍬=0⁰
27
Flat Shading
E’ il metodo di shading (applicazione degli effetti luminosi) sostanzialmente più semplice.
Consiste nel calcolare il colore del triangolo in base all’angolo formato dalla direzione della luce e la
normale alla superficie. La direzione normale può essere calcolata a partire dalle coordinate die punti
del triangolo.
1. Individuazione
dell’insieme di triangoli
2. Calcolo della normale
per ogni faccia
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
3. Applicazione del lighting
ad ogni normale
28
Gouraud Shading
Questa metodologia prevede che venga definita a priori una “normale” per ciascun vertice del triangolo.
(Tali normali non sono calcolabili matematicamente dai tre punti del triangolo).
Il colore viene pertanto calcolato (grazie alle normali) in ciascuno dei tre vertici, quindi l’interno del
triangolo viene riempito con il colore ottenuto dalla interpolazione dei tre calcolati.
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
29
Phong Shading
Questo tipo di shading è simile al Gouraud ma anziché interpolare il colore dopo aver effettuato il calcolo
di shading, l’interpolazione avviene per il calcolo delle normali.
In pratica a partire dalle normali in ciascun vertice, viene calcolata una normale (mediante
interpolazione) per ciascun punto interno al triangolo. Quindi per ciascun pixel del triangolo (ora
dotato di “normale”) viene effettuato il calcolo di shading per ottenerne il colore.
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
30
Confronto tra modelli di Shading
Resa estetica crescente
Flat shading
Gouraud shading
Phong Shading
Semplicità computazionale
Le schede video usano Phong o Gouraud di default
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
31
Z-Buffer
L’ordine con il quale i triangoli vengono renderizzati potrebbe causare problemi: una superficie lontana
renderizzata per ultima potrebbe sovrapporsi (nell’immagine raster finale) ad una superficie vicina
renderizzata prima.
Si potrebbero ordinare le primitive prima del rendering così da disegnare prima le superfici più lontane
(algoritmo del pittore). Ma questo non risolve i casi in cui le superfici si intersecano.
Tale problema è invece risolto dallo Z-Buffer (o Depth-Buffer): si tratta di un’altra griglia di dimensioni
pari a quelle del View Buffer, nella quale, in corrispondenza di ciascun pixel, viene annotata la
coordinata z di provenienza del pixel. In caso di sovrapposizioni di pixel la scheda grafica è così in grado
di decidere se sovrascrivere il colore di quel pixel oppure no.
(Lo Z-Buffer è dispendioso in termini di memoria ed è allocato nella memoria della scheda video)
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5 5 5 5
5 5 5
5 5
5
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
+
64 64 64 64 64 64 64 64
64 64 64 64 64 64 64 64
64 64 64 64 64 64 64 64
64 64 64 64 64 64 64 64
64 64 64 64 64 64 64 64
64 64 64 64 64 64 64 64
64 64 64 64 64 64 64 64
64 64 64 64 64 64 64 64
=
5 5 5 5 5 5 5 64
5 5 5 5 5 5 64 64
5 5 5 5 5 64 64 64
5 5 5 5 64 64 64 64
5 5 5 64 64 64 64 64
5 5 64 64 64 64 64 64
5 64 64 64 64 64 64 64
64 64 64 64 64 64 64 64
32
Culling e Clipping
Per ottimizzare il processo di rendering si omette la proiezione di superfici ritenute poco
importanti per l’effetto finale:
Culling (eliminazione di primitive non utili)
• Occlusion Culling
Non viene renderizzato ciò che è coperto da altri oggetti
• View Frustrum Culling
Non viene renderizzato ciò che è fuori dal frustrum visibile
• Backface Culling
Non viene renderizzato perché è la parte interna di una superficie chiusa. (devo sapere che
la superficie è chiusa, non può essere sempre usato)
• Importance Culling
Non viene renderizzato perché la sua proiezione è troppo piccola rispetto alla scena
Clipping (taglio di quelle porzioni di oggetti e triangoli che fuoriescono dalla zona visibile)
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
33
Scene Graph
Le informazioni che costituiscono la scena (posizione della camera, luci, trasformazioni, oggetti,
primitive, superfici, materiali, ecc) vengono organizzate nella memoria del calcolatore in una
struttura gerarchica (struttura ad albero, oppure “grafo”) detta Scene Graph.
I nodi di questa struttura possono rappresentare una primitiva
da renderizzare, ma anche operazioni o effetti visivi. Ad
esempio un nodo “Trasformazione” permette di applicare la
trasformazione geometrica in esso specificata a tutti i nodi suoi
figli. Lo stesso dicasi per un singolo nodo “materiale” che può
essere applicato a molte superfici in contemporanea.
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
34
OpenGL / DirectX
Le schede video sono dunque capaci di realizzare milioni di operazioni al secondo su milioni di triangoli.
Le loro funzioni di accelerazione hardware sono sfruttate da librerie software (raccolte di funzioni già scritte e
pronte per l’uso) che i programmatori utilizzano nella stesura delle loro applicazioni.
Le due librerie che attualmente rappresentano un vero e proprio standard per il controllo e il comando delle
schede video sono:
Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi
35