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