Informatica Grafica - e-Learning
Transcript
Informatica Grafica - e-Learning
Informatica Grafica Gianluigi Ciocca, Simone Bianco F1801Q120 Ray Tracing Introduzione (1) I modelli di illuminazione locale Non considerano illuminazione indiretta Utilizzano informazioni locali Il colore di un pixel è determinato da Caratteristiche della luce direttamente incidente Caratteristiche della superficie (riflettanza del materiale) Non supportano trasparenze Non supportano ombre Non supportano superfici perfettamente riflettenti (es. specchi) Informatica Grafica 2 Ray Tracing Introduzione (2) I modelli di illuminazione globale Possono considerare illuminazione indiretta Utilizzano informazioni da diversi punti nella scena Il colore di un pixel è determinato da Caratteristiche della luce direttamente incidente Caratteristiche della superficie (riflettanza del materiale) Luce proveniente da oggetti “vicini” Supportano trasparenze Supportano ombre Supportano superfici perfettamente riflettenti (es. specchi) Supportano... parecchi altri effetti Informatica Grafica 3 Ray Tracing Introduzione (3) Esempio Informatica Grafica 4 Ray Tracing Introduzione (4) Esempio Informatica Grafica 5 Ray Tracing Introduzione (5) Esempio Informatica Grafica 6 Ray Tracing Introduzione (6) Esempio Informatica Grafica 7 Ray Tracing Introduzione (7) Esempio Informatica Grafica 8 Ray Tracing Introduzione (8) Esempio Informatica Grafica 9 Ray Tracing Introduzione (9) Esempio Informatica Grafica 10 Ray Tracing Introduzione (10) Un Ray Tracer E’ un algoritmo di renderering che simula un illuminamento globale Utilizza le riflessioni speculari per distribuire il contributo della luce nella scena Dipende dal punto di vista E’ un algoritmo ricorsivo Permette di fare il rendering di superfici modellate in modi diversi Poligonali Solida Analitica ... Informatica Grafica 11 Ray Tracing Introduzione (11) Idea 1 Vengono tracciati i raggi di luce per seguire le loro interazioni con gli oggetti in scena Problema Ci sono infiniti raggi di luce da seguire Non tutti i raggi di luce arrivano al punto di vista Idea 2 Seguiamo solo i raggi che sicuramente giungono al punto di vista Backward tracing Invece che seguire i raggi a partire dalle luci, seguiamo i raggi a partire dal punto di vista Informatica Grafica 12 Ray Tracing Introduzione (12) Punto di Vista (Camera) Viewing Window (sul View Plane) Parte dell’oggetto, è sicuramente visible nel pixel del view plane indicato dal raggio che parte dalla camera Informatica Grafica 13 Ray Tracing Introduzione (13) Il colore del pixel è dato da contributo di luce diretta + contributo di luce che arriva (eventualmente) per trasmissione + contributo di luce che arriva (eventualmente) per riflessione Luce riflessa da... Luce diretta Luce trasmessa Oggetto semi-trasparente Informatica Grafica 14 Ray Tracing Introduzione (14) I contributi delle luci riflesse e trasmesse, a loro volta nascono da punti nella scena il cui colore di ciascuno dei quali è dato da contributo di luce diretta + contributo di luce che arriva (eventualmente) per trasmissione + contributo di luce che arriva (eventualmente) per riflessione ecc... L’algoritmo è ricorsivo In generale il numero massimo di passi ricorsivi è deciso a priori Determina la qualità finale del risultato Informatica Grafica 15 Ray Tracing Set-up dei raggi (1) Necessario definire un riferimento della camera e la posizione della viewing window rispetto ad esso La Viewing Window è centrata rispetto al riferimento camera t y z b l Po r x Informatica Grafica 16 Ray Tracing Set-up dei raggi (2) I pixel della viewport devono mappare sulla viewing window Se la viewport ha dimensioni nx×ny pixel Un pixel (i,j) della viewport, sulla window corrisponde ad un punto Pi,j di coordinate [x,y,z]T (r − l ) ⋅ (i + 0.5) x=l+ nx y =b+ Pi,j (t − b) ⋅ ( j + 0.5) ny z = d (distanza camera / view plane) t y d z b l Po Informatica Grafica x r 17 Ray Tracing Set-up dei raggi (3) Nel caso di una proiezione ortografica I raggi hanno tutti la stessa direzione ma origine differente L’origine è Pi,j La direzione è v=[0,0,w]T Esprimendo un raggio in forma parametrica si ha: y d ri, j (α ) = Pi, j + α ⋅ v z α ≥0 Po x Informatica Grafica 18 Ray Tracing Set-up dei raggi (4) Nel caso di una proiezione prospettica I raggi hanno la stessa origine ma direzioni diverse L’origine è P0 La direzione è v=Pi,j-P0 Esprimendo un raggio in forma parametrica si ha: ri, j (α ) = Pi, j + α ⋅ (Pi, j − P0 ) α ≥0 y d z Po x Informatica Grafica 19 Ray Tracing Intersezione raggio/oggetto (1) Una volta determinati un raggio, è necessario capire se colpisce un oggetto Problema di calcolo intersezione raggio / superficie oggetto Se il raggio non colpisce nulla Colore pixel := color background Se il raggio colpisce uno o più oggetti L’oggetto colpito è quello più vicino al piano immagine Il calcolo delle intersezioni è sostanzialmente analitico Possibile usare strutture per velocizzare il calcolo Bounding volumes Octtree ... Informatica Grafica 20 Ray Tracing Intersezione raggio/oggetto (2) Intersezione raggio / sfera Equazione parametrica di un raggio con direzione v e origine P0 P = P0 + α ⋅ v Equazione dei punti S sulla superficie di una sfera di raggio r e centrata in C S − C = r2 2 Sostituendo P ad S si ha P0 + α ⋅ v − C = r 2 2 Informatica Grafica 21 Ray Tracing Intersezione raggio/oggetto (3) Intersezione raggio / sfera Chiamiamo T=P0-C e svolgiamo la norma T +α ⋅ v = r2 2 T ⋅ T + 2 ⋅α ⋅ T ⋅ v + α 2 ⋅ v ⋅ v − r 2 = 0 a ⋅α 2 + b ⋅α + c = 0 con a = v⋅v b = 2⋅ v ⋅T c = T⋅T − r2 − b ± b 2 − 4ac − b ± ∆ α 0,1 = = 2a 2a Informatica Grafica 22 Ray Tracing Intersezione raggio/oggetto (4) Intersezione raggio / sfera Se ∆<0 non c’e’ nessuna intersezione Se α0>0 e α1>0, α*=min{α0, α1} P* = P0 + α * ⋅v Se α0>0 e α1<0, α*=α0 Se α0<0 e α1>0, α*=α1 Altrimenti non c’e’ intersezione Per il lighting, è necessario determinare anche la direzione della normale nel punto di intersezione N* = P * −C nˆ * = N* N* Informatica Grafica n* P* C 23 Ray Tracing Intersezione raggio/oggetto (5) Intersezione raggio / poligono Due passi Si determina il punto di intersezione del raggio con il piano che contiene il poligono Si verifica che il punto di intersezione sia interno al poligono Equazione implicita del piano dato un punto O e la sua normale N N (P − O ) ⋅ N = 0 P O Informatica Grafica 24 Ray Tracing Intersezione raggio/oggetto (5) Intersezione raggio / poligono Sostituendo il punto del raggio nell’equazione del piano ((P0 + α ⋅ v ) − O ) ⋅ N = 0 α =− (P0 − O ) ⋅ N v⋅N Se vN=0 il raggio è perpendicolare alla normale (parallelo al piano). Non si ha intersezione. Se vN>0 il raggio e la normale hanno la stessa direzione. Il raggio è dietro il piano. α<0 non si ha intersezione Informatica Grafica 25 Ray Tracing Intersezione raggio/oggetto (6) Se il raggio interseca il piano, si valuta se il punto è interno al poligono Es. Triangoli (P1 − P3 )× (P − P3 ) (P1 − P3 )× (Q − P3 ) P3 (P2 − P1 )× (P − P1 ) P1 (P2 − P1 )× (Q − P1 ) Q P (P3 − P2 )× (P − P2 ) P2 Informatica Grafica (P3 − P2 )× (Q − P2 ) 26 Ray Tracing Intersezione raggio/oggetto (7) Per altri poligoni si usano algoritmi specifici Per poligoni generici si possono usare algoritmi ispirati a quelli per il filling (nel 3D) Vedere le slide “Odd-even rule” e “Winding Number rule” La normale alla superficie nel punto di intersezione è quella del piano o viene interpolata NOTA: In questa fase si ha implicitamente Clipping e Hidden Surface Removal!!!! Informatica Grafica 27 Ray Tracing Lighting (1) Una volta che è stato determinato il punto di intersezione con l’oggetto bisogna verificare che il punto sia illuminato Per ogni luce nella scena, si lancia un shadow feeler ray dal punto alla luce. Se il raggio raggiunge la luce, il punto di origine è illuminato da quella luce Se il raggio incontra un altro oggetto, il punto di origine è in ombra rispetto a quella luce Informatica Grafica 28 Ray Tracing Lighting (2) Se il punto è illuminato direttamente da una luce, si applica un lighting locale (Es. Blinn-Phong) Flavio Pellacini Informatica Grafica 29 Ray Tracing Lighting (3) Informatica Grafica 30 Ray Tracing Lighting (4) Se una superficie ha proprietà riflessive, bisogna considerare anche la luce che arriva lungo la direzione di riflessione Si usano dei reflection ray e si considera la riflessione perfetta N θ θ Reflection ray Si applica il procedimento visto considerando il reflection ray come nuova direzione di vista Informatica Grafica 31 Ray Tracing Lighting (5) Il coefficiente di riflessione (kr) è una proprietà del materiale Flavio Pellacini Informatica Grafica 32 Ray Tracing Lighting (6) Informatica Grafica 33 Ray Tracing Lighting (7) A causa delle riflessioni, superfici che sarebbero nascoste rispetto il punto di vista potrebbero essere in realtà visibili Nel Ray Tracing non esiste backface culling!!! Specchi Specchio Informatica Grafica 34 Ray Tracing Lighting (8) Se necessario si itera ricorsivamente Il raggio rosso è tracciato per riflessione fino ad arrivare ad un punto che dipende solo dalla luce diretta e dal materiale Il raggio blu non influisce sul colore del pixel al punto di vista Informatica Grafica 35 Ray Tracing Lighting (9) Un livello di riflessione Informatica Grafica 36 Ray Tracing Lighting (9) Due livelli di riflessione Informatica Grafica 37 Ray Tracing Lighting (9) Tre livelli di riflessione Informatica Grafica 38 Ray Tracing Lighting (9) Quattro livelli di riflessione Informatica Grafica 39 Ray Tracing Lighting (9) Cinque livelli di riflessione Informatica Grafica 40