Informatica Grafica - AUP€¦ · Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano...

35
Informatica Grafica (2a parte) a.a. 2011/2012 Prof. Massimiliano Dellisanti Fabiano Vilardi 1

Transcript of Informatica Grafica - AUP€¦ · Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano...

Informatica Grafica(2a parte)

a.a. 2011/2012

Prof. Massimiliano Dellisanti Fabiano Vilardi

1

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Grafica 3D

2

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

Stereoscopia

3

La Grafica 3D non va confusa con la “Stereoscopia” che è invece una tecnica divisualizzazione finalizzata a riprodurre la sensazione di “profondità” mediante l’uso didi coppie di immagini (una per l’occhio destro e una per l’occhio sinistro, in modo dareplicare il fenomeno della visione binoculare per mezzo del quale l’uomo osserval’ambiente circostante)

Esistono diverse tecniche e dispositivi stereoscopici.Ad esempio:

Head Mount DisplayMetodo degli AnaglifiStereoscopia mediante filtraggio attivoStereoscopia mediante filtraggio passivoMonitor Autostereoscopici

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Stereoscopia

4

Head Mount DisplayAnche denominati “caschi per la realtà virtuale”: sono dispositivi da indossare provvisti di lenti e doppiomonitor opportunamente posizionati per consentire la visione binoculare.

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Stereoscopia

5

AnaglifiUn anaglifo è una immagine ottenuta dallasovrapposizione 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 dilenti degli stessi due colori, si possono separare le dueimmagini e osservarne ciascuna su ciascun occhiosimulando la visione binoculare.

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Stereoscopia

6

Visualizzazione Stereoscopica mediante filtraggio passivoUsata nella proiezione di film nei “cinema 3D”.Due pellicole cinematografiche (una per occhio) vengono proiettate su uno schermo attraverso filtripolarizzatori. Gli spettatori indossano occhiali provvisti di filtri dello stesso tipo capaci di separarenuovamente 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

Stereoscopia

7

Visualizzazione Stereoscopica mediante filtraggio attivoUsata 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 renderetrasparente) le due lenti alternativamente e in maniera sincrona con le immagini provenienti dal monitor. Inquesto modo ciascun occhio vede solo l’immagine che gli compete.

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Stereoscopia

8

Monitor AutostereoscopiciSono monitor provvisti di un reticolo ottico capace di indirizzare immagini diverse a seconda dell’angolo diosservazione, permettendo ad un occhio di vedere una immagine diversa da quella che vede l’altro. Spesso gliangoli di visione sono troppo stretti e poco adatti a grandi schermi.

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Grafica 3D

9

In maniera analoga al caso bidimensionale possiamo distinguere due modalità dirappresentazione della scena 3D:Rappresentazione Volumetrica (Volume Rendering)

La scena è descritta da voxel (volume pixel) ordinatiin una griglia tridimensionale. E’ questo il tipicocaso delle immagini mediche provenienti da TAC,RMN, ecc.

Rappresentazione Vettoriale

La scena è descritta da primitive geometrichetridimensionali.

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Grafica 3D Vettoriale

10

Gli oggetti sono descritti mediante una opportunacomposizione di figure geometriche semplici.Nel caso di solidi complessi (non facilmente riducibili insfere, coni e parallelepipedi) si usa la tecnica dellemesh.Una mesh è un opportuno reticolo di punti (nuvola dipunti descritti ciascuno da coordinate x,y,z)appartenenti alla superficie del solido che si vuoledescrivere. I punti possono essere organizzati in gruppidi tre: poiché per una terna di punti passa una ed unasola superficie piana, ogni tripletta definisce untriangolo piano opportunamente orientato nello spazio3D. Pertanto una qualunque superficie è approssimatamediante un numero sufficientemente elevato ditriangoli piani.

Di fatto anche le superfici descritte mediante formegeometriche primitive vengono ridotte ad un insiemedi triangoli per essere visualizzate. La scheda video silimita ad effettuare le operazioni di visualizzazione suun numero elevato di triangoli attraverso i quali sicompone tutta la scena 3D.

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Camera Model

11

L’insieme di oggetti presenti nello spazio 3D virtualecostituiscono la Scena 3D.

La scheda video del calcolatore si occupa della operazionedi rendering, ovvero della generazione di una immaginebidimensionale (di tipo raster) a partire dalla descrizionenumerica (sotto forma di punti, triangoli, coordinate) dellascena. Vieni quindi effettuata (matematicamente) laproiezione dei punti (e dei triangoli) su un piano diproiezione (coincidente con la superficie del monitor) inmodo da ottenere le coordinate 2D con le quali tracciare leimmagini raster.

Perché questo sia possibile bisogna disporre oltre che delladescrizione della scena, anche della descrizione del puntodi vista dell’osservatore. Si immagina che l’osservazioneavvenga per mezzo di una macchina fotografica (camera)virtuale che riprende la scena.

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Camera Model

12

Punto di osservazione della cameravirtuale.Come tutti gli oggetti di una scena 3D, lacamera ha una posizione (coordinatex,y,z) ma anche una orientazione, ovvero“guarda” in una specifica direzione (3angoli di rotazione rispetto agli assi).Pertanto diremo che gli oggetti 3D hanno6 gradi di libertà (6 Degrees Of Freedom:la collocazione nella scena 3D èdeterminata da 6 variabili indipendenti)

Piano di proiezione(View Plane)

Near Plane (Front Clipping Plane)(Gli oggetti più vicini alla camerarispetto a questo piano nonvengono renderizzati)

Far Plane (Back Clipping Plane)(Gli oggetti più lontani dallacamera rispetto a questo pianonon vengono renderizzati)

Viewing Frustrum (View Volume)(Solo gli oggetti posizionatiall’interno di questo tronco dipiramide vengono renderizzati)

Field Of View verticaleAngolo di apertura verticaledell’obbiettivo virtuale

Field Of View orizzontaleAngolo di apertura orizzontaledell’obbiettivo virtuale

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Matrici di Proiezione

13

Le coordinate dello spazio 3D devono essere proiettate sul View Plane. Le coordinate 2Dottenute permettono di generare l’immagine raster risultante.

Proiezione Prospettica

z

y

d

P(x,y,z)

yv

(Piano di proiezione)

xv = (d/z) x + 0 y + 0 zyv = 0 x + (d/z) y + 0 zzv = 0 x + 0 y + (d/z) z(la coordinata Z in realtà risulta utile solo ai fini dello z-buffer come vedremo in seguito e non per la determinazione del punto sul view plane)

Matrice di Proiezione Prospetticad/z 0 0

d/z

0

00

d/z0

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Matrici di Proiezione

14

Sebbene la proiezione prospettica produce un rendering più realistico è possibile proiettare ipunti mediante proiezione ortogonale.

Proiezione Ortogonale

z

y

d

P(x,y,z)

yv

(Piano di proiezione)

xv = 1 x + 0 y + 0 zyv = 0 x + 1 y + 0 zzv = 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)

Matrice di Proiezione Ortogonale1 0 0

1

0

00

10

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Trasformazioni GeometrichePer 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 3x3p,p’,b = vettori dello spazio 3D

Tutte le operazioni possono essere ridotte ad una opportuna composizione di 3 tipi di trasformazionifondamentali:

TraslazioneRotazione

Scala

15

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Trasformazioni GeometricheTraslazione:Spostamento di un punto nello spazio 3D di un vettore b = [ bx, by, bz ]

y = I x + b

I = matrice identitàb = vettore spostamento

16

X

Y

b

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Trasformazioni GeometricheRotazione: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)

p’ = R p

R = matrice di rotazione

17

α

x

y

p(x,y,z)

p’(x’,y’,z’)

z

x’ = cos(α) x – sin(α) yy’ = sin(α) x + cos(α) yz’ = z

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Trasformazioni GeometricheMatrice di Rotazione attorno all’asse X:

18

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

Trasformazioni GeometricheScala:L’operazione di scala consiste nel moltiplicare ciascuna coordinata per un fattore k

y = S x

S = matrice di scala

19

Matrice di Scala:

kx 0 0

0 ky 0

0 0 kz

Esempi di trasformazioni di scala:

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

Coordinate OmogeneeIntroduciamo una notazione che ci permette di scrivere le trasformazioni in maniera più

compatta. Aggiungiamo una dimensione ai vettori in modo che sia:

In particolare scegliamo w = 1

In questo modo la generica trasformazione p = A p’ + b, tradotta nello spazio delle coordinateomogenee, si può scrivere:

y = T x con T matrice 4x4 : T =

Ora la matrice T può contenere sia informazioni di rotazione e scala, che di traslazione

20

0con

w

wwzwywx

p

A

0 0 10

b

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Trasformazioni GeometricheComposizione di Trasformazioni:

P1 = T0 P0

P2 = T1 P1 = T1 ( T0 P0 )P3 = T2 P2 = T2 ( T1 P1 ) = T2 ( T1 ( T0 P0 ) )…

Si osserva pertanto che le matrici di trasformazione si possono comporre mediantemoltiplicazione a sinistra:

T = T2 T1 T0

21

P0

P1

P2

P3

T0

T1 T2

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Rasterizzazione di punti e segmentiLa 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 acausa della sua elevata efficienza)

22

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

AliasingL’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 disegmenti disposti “a scalini” risultano nella stessa rappresentazione sulla matrice di pixel.

23

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Anti-aliasingLe 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” parzialmentedei pixel. I pixel vengono colorati con intensità proporzionale all’area coperta. A distanzasufficiente dallo schermo (e a risoluzioni sufficientemente elevate), l’effetto finale è moltopiù gradevole.

24

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Rasterizzazione di triangoliEssendo 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 diriempimento dei triangoli viene detto algoritmo scan-line (perché il riempimento avvieneper righe nel frame buffer: la scheda grafica le scandisce una per una per tracciare i pixeldell’interno del triangolo)

25

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Lighting, Material, ShadingNessun 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 dianimazioni in tempo reale. Si usano quindi algoritmi di shading (ombreggiata) che simulano eapprossimano 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)

26

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

L

N

componente riflessapiccola⍬=70⁰

L

N

componente riflessagrande⍬=35⁰

LN

componente riflessamassima⍬=0⁰

Lighting, Material, ShadingI 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 laposizione 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 pianadipende dal coseno dell’angolo formato tra la direzione di provenienza della luce e la normale allasuperficie.

27

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Flat ShadingE’ 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 puntidel triangolo.

28

2. Calcolo della normaleper ogni faccia

3. Applicazione del lightingad ogni normale

1. Individuazionedell’insieme di triangoli

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Gouraud ShadingQuesta 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 deltriangolo viene riempito con il colore ottenuto dalla interpolazione dei tre calcolati.

29

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Phong ShadingQuesto 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 (oradotato di “normale”) viene effettuato il calcolo di shading per ottenerne il colore.

30

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Confronto tra modelli di Shading

31

Flat shading Gouraud shading Phong Shading

Resa estetica crescente

Semplicità computazionale

Le schede video usano Phong o Gouraud di default

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Z-BufferL’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 vicinarenderizzata 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 dimensionipari a quelle del View Buffer, nella quale, in corrispondenza di ciascun pixel, viene annotata lacoordinata z di provenienza del pixel. In caso di sovrapposizioni di pixel la scheda grafica è così in gradodi 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)

32

64 64 64 64 64 64 64 6464 64 64 64 64 64 64 6464 64 64 64 64 64 64 6464 64 64 64 64 64 64 6464 64 64 64 64 64 64 6464 64 64 64 64 64 64 6464 64 64 64 64 64 64 6464 64 64 64 64 64 64 64

5 5 5 5 5 5 5 645 5 5 5 5 5 64 645 5 5 5 5 64 64 645 5 5 5 64 64 64 645 5 5 64 64 64 64 645 5 64 64 64 64 64 645 64 64 64 64 64 64 64

64 64 64 64 64 64 64 64

+ =

5 5 5 5 5 5 55 5 5 5 5 55 5 5 5 55 5 5 55 5 55 55

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

Culling e Clipping

33

Per ottimizzare il processo di rendering si omette la proiezione di superfici ritenute pocoimportanti 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 chela superficie è chiusa, non può essere sempre usato)

• Importance CullingNon 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

Scene Graph

34

Le informazioni che costituiscono la scena (posizione della camera, luci, trasformazioni, oggetti,primitive, superfici, materiali, ecc) vengono organizzate nella memoria del calcolatore in unastruttura gerarchica (struttura ad albero, oppure “grafo”) detta Scene Graph.

I nodi di questa struttura possono rappresentare una primitivada renderizzare, ma anche operazioni o effetti visivi. Adesempio un nodo “Trasformazione” permette di applicare latrasformazione geometrica in esso specificata a tutti i nodi suoifigli. Lo stesso dicasi per un singolo nodo “materiale” che puòessere applicato a molte superfici in contemporanea.

Informatica Grafica – Prof. Massimiliano Dellisanti Fabiano Vilardi

OpenGL / DirectX

35

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 epronte 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 delleschede video sono: