Computer Graphics
Marco Tarini
Università dell’Insubria Corso di Laurea in Informatica Anno Accademico 2014/15
Lezione 10: lighting
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Lighting: intro
• L’altra metà del rendering
• Determinare la luce
– quanta luce – di che colore
che arriva
– da un punto della scena – all’occhio
• Problema complesso...
Lighting: intro
• Output:
– colore percepito per un dato punto
• Input:
– caratteristiche dell’oggetto illuminato (“materiale”)
• (es: carta bagnata, plastica ruvida, …)
• (o banalmente, «di che colore è» - vedi poi) – caratteristiche della luce che illumina
• (dove sono le fonti, che intensità / colore hanno) – e forma degli oggetti / della scena
• soprattutto, orientamenti delle superfici, cioè le normali
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Lighting: alcuni fattori
LUCE
OCCHIO OGGETTO
trasmissione (con rifrazione) assorbimento
riflessione interna
assorbimento da parte del mezzo
(e.g. nebbia)
scattering sotto la superficie
ALTRA LUCE
ombrain
riflessione
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Lighting: alcuni fattori
riflessioni multiple: luce ogg1 ogg2 … occhio
LUCE
OCCHIO OGGETTO
riflessioni multiple (illuminazione indiretta)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Lighting: globale VS locale
– tiene conto solo di:
• condizioni di luce – n. luci – loro pos – loro colore
• pezzetto della superficie da illuminare
– orientamento (normale) – caratteristiche del
materiale
» per es: colore, lucentezza
• posiz. osservatore (POV) – il resto del mondo non c’è
– riflessioni multiple – ombre
– scattering sottosuperficiale – rifrazione – ...
Illuminazione locale Illuminzione globale
torna molto più facile da fare
con il nostro Hardware
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Lighting locale:
emitter oggetto occhio (e nient’altro!)
LUCE
OCCHIO OGGETTO
riflessione
n
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Lighting locale più in generale possibile:
l'equazione della radianza
) , ( ) , ( ) ,
( r e r r r
o x L x L x
L ω r = ω r + ω r
i i
i i r i r r
r x f x L x n d
L
i
ω ω
ω ω
ω ω
ω
r r r r r
r r
r
) )(
, ( ) , , ( )
,
( = ∫ ⋅
Ω
∈
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Lighting locale più in generale possibile:
l'equazione della radianza [ simboli ] punto sulla superficie da illuminare;
direzione da x verso la posizione dell'osservatore direzione da cui proviene il raggio di luce incidente
quantità di luce incidente:
luce esterna che raggiunge x dalla dir w i
coseno dell’angolo di incidenza rispetto alla normale alla superficie (vedi dopo)
x
) ( r i n r
ω ⋅ ω r i
ω r r
) ,
( i
i x
L ω r
Ω dominio di tutte le direzioni possibili
(cioè tutte i vettori normalizzati… che arrivano da davanti) (cioè la sup. della semi-sfera unitaria)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Lighting locale più in generale possibile:
l'equazione della radianza
) , ( ) , ( ) ,
( r e r r r
o x L x L x
L ω r = ω r + ω r
i i
i i r i r r
r x f x L x n d
L
i
ω ω
ω ω
ω ω
ω
r r r r r
r r
r
) )(
, ( ) , , ( )
,
( = ∫ ⋅
Ω
∈
Componente emissiva
Componente emissiva
• Usata solo per quei pochi materiali che emettono luce propria
– modella solo il percorso: emitter occhio (non emitter oggetto occhio)
– cioè la luce emessa non illumina nient’altro
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Lighting locale più in generale possibile:
l'equazione della radianza
) , ( ) , ( ) ,
( r e r r r
o x L x L x
L ω r = ω r + ω r
i i
i i r i r r
r x f x L x n d
L
i
ω ω
ω ω
ω ω
ω
r r r r r
r r
r
) )(
, ( ) , , ( )
,
( = ∫ ⋅
Ω
∈
Ambiente
illuminazione di
Luce incidente
• Per ogni posizione modella
la distrubuz di luce incidente
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
) ,
( i
i x
L ω r ) ...
( x , L i
= quanta luce arriva addosso ad dalla direzione x ω r i
5
ω r i
x
i 13
ω r x
Modella gli ambienti di illuminzaione possibili. Es:
• stanza con finestra aperta
• giornata di sole
• gioranta coperta
• una discoteca
Cioè (nella metafora dei lucidi successivi) quante “palle da tennis” arrivano ad x da ciascuna direzione!
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Lighting locale più in generale possibile:
l'equazione della radianza
) , ( ) , ( ) ,
( r e r r r
o x L x L x
L ω r = ω r + ω r
i i
i i r i r r
r x f x L x n d
L
i
ω ω
ω ω
ω ω
ω
r r r r r
r r
r
) )(
, ( ) , , ( )
,
( = ∫ ⋅
Ω
∈
BRDF
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Lighting locale più in generale possibile:
l'equazione della radianza [ parametri ]
) , ,
( i r
r x
f ω r ω r funzione che determina la frazione di luce incidente che viene riflessa nelle varie direzioni (risponde a: " quanta della luce che arriva in x dalla dir w
isarà riflessa proprio verso w
r? ")
• E’ la funzione che descrive il materiale dell'oggetto
– dipende da proprietà microscopiche, ottiche etc del materiale
• Se è costante in x ⇒ materiale uniforme:
– stesso materiale in ogni punto – la funz (senza il 1mo parametro)
prende nome di BRDF di quel materiale
– BRDF = Bidirectional Reflectance Distribution Function)
• descrive le proprietà ottiche del materiale
(per es: se è lucido, se ha riflessi porpora, se è opaco, o cangiante – come il velluto, o metallico, cromato… etc, etc)
La BRDF di un materiale
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
f r =
ω r i
ω r r fotone =
) , ( i r
f r ω r ω r = su 100 che arrivano a dalla dir ,
quante verrano da lui rimbalzate proprio nella dir ?
(al variare di e ) ω r
iω r
rω r
rω r
iOgni materiale, la sua BRDF:
- metallo cromato - raso - legno - stoffa - gesso - carta - specchio…
Funzione di 4 dimensioni!
(una direzione = 2 dimensioni)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Lighting locale più in generale possibile:
l'equazione della radianza
) , ( ) , ( ) ,
( r e r r r
o x L x L x
L ω r = ω r + ω r
i i
i i r i r r
r x f x L x n d
L
i
ω ω
ω ω
ω ω
ω
r r r r r
r r
r
) )(
, ( ) , , ( )
,
( = ∫ ⋅
Ω
∈
legge coseno del
Sottoproblema
• Dalla dir arrivano L lumens (N “palle da tennis”) : quante ne riceve un intorno di ?
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
ω r i
x
x
i
n r x = ω r
Sottoproblema
• Dalla dir arrivano L lumens (N “palle da tennis”) : quante ne riceve un intorno di ?
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
ω r i
x
x ω r i
n r x
Sottoproblema
• Dalla dir arrivano L lumens (N “palle da tennis”) : quante ne riceve un intorno di ?
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
ω r i
x
x ω r i
n r x
Johann Heinrich Lambert 1728 - 1777
Sottoproblema
• Dalla dir arrivano L lumens (N “palle da tennis”) : quante ne riceve un intorno di ?
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
ω r i
x
x ω r i
n r x
Soluz:
=
“La legge del coseno” ( r
in r ) L ω ⋅
L ) cos( α
Sottoproblema
• Dalla dir arrivano L lumens (N “palle da tennis”) : quante ne riceve un intorno di ?
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
ω r i
x
x i
ω r n r x
0 ) ( r i ⋅ n r =
ω
Luce perfettamente radente:
infatti
nessun fotone colpisce l’intorno!
Luce da dietro:
risposta: 0
(non un numero negativo) Perché l’intorno di si fa ombra da solo!
Sottoproblema
• Dalla dir arrivano L lumens (N “palle da tennis”) : quante ne riceve un intorno di ?
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
ω r i
x
ω r i
n r x
0 ) ( r i ⋅ n r <
ω
x
x
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Lighting locale più in generale possibile:
l'equazione della radianza
) , ( ) , ( ) ,
( r e r r r
o x L x L x
L ω r = ω r + ω r
i i
i i r i r r
r x f x L x n d
L
i
ω ω
ω ω
ω ω
ω
r r r r r
r r
r
) )(
, ( ) , , ( )
,
( = ∫ ⋅
Ω
∈
cos ( θ )
(ma 0 se
negativo)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Lighting locale più in generale possibile:
l'equazione della radianza (recap)
“La luce che riceviamo da un punto x della scena è data dalla somma della luce emessa (da quel punto) più la luce riflessa (da quel punto)”
“La luce riflessa è calcolata come la somma (nel continuo: l’integrale) dei contributi di tutte le sorgenti luminose presenti nella scena (una potenziale sorgente da ogni direzione)”
Per ogni direzione, il contributo dato dal prodotto di:
(A) quanta luce proviene da quella direzione (ambiente di illuminazione) (B) di questa quanta ne riceve l’intorno di x (legge del coseno) (C) di questa, quanda ne viene mandata verso l’osservatore dal materiale
) , ( ) , ( ) ,
( r e r r r
o x L x L x
L ω r = ω r + ω r
i i
i i r i r r
r x f x L x n d
L
i
ω ω
ω ω
ω ω
ω
r r r r r
r r
r
) )(
, ( ) , , ( )
,
( = ∫ ⋅
Ω
∈
(A) (B)
(C)
Equazione di lighting
• L’equazione della radianza
costituisce un’equazione (o modello) di rendering molto accurato
– Il materiale è espresso da una BRDF e può essere molto accurato
– Es. BRDF catturati dal vivo oppure computati da funzioni anche complesse
• E’ ottima per un rendering offline.
• Tuttavia, è troppo onerosa per un rendering reali time
• Vediamo alcune drastiche semplificazioni possibili
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Semplificazione N 1:
ambiente di luce discreto (e semplificato)
• Invece di
• Ipotizziamo:
– ogni punto del modello riceve la stessa luce
• (x sparisce dall’equazione)
– Arriva luce >0 solo da un piccolo numero N discreto di direzioni
• anche 1 sola (cioè N = 1 )
• dalle altre dir, non arriva alcuna luce
• l’integrale diventa una (piccola) sommatoria (su N)
• un addendo per ogni luce consierata (anche solo 1)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
) ,
( i
i x
L ω r
1 1 0
, ω ,..., ω
N−ω r r r
Semplificazione N 1:
ambiente di luce discreto (e semplificato)
• Da integrale (su tutte le dir ingresso luci continue)
• a sommatoria (di poche luci discrete, o anche 1 ! )
• Per luci colorate, valori di intensità luce per r,g,b:
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
i i
i x d
L
i
ω ω
ω
r r
r
...
) , (
... ⋅ ⋅
∫
Ω
∈
∑ −
=
⋅
⋅
1
0
...
...
N
i B
i G i R i
L L L
∑ −
=
⋅
⋅
1
0
...
...
N
i
L i
intensità e colore
(costanti)
della luce i-esima
intensità (costante)
della luce i-esima
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Lighting locale più in generale possibile:
l'equazione della radianza
∑ −
=
⋅
=
1
0
) ( ) , , ( )
, (
N
i
i B i G i R i r i r r
r n
L L L x
f x
L r r r r r
ω ω
ω ω
intensità e colore (costanti!)
della i-esima luce
direzione di arrivo (incidente)
della i-esima luce
Semplificazione N 2 :
materiale più semplice possibile
• BRDF constante
– non dipende da dir di arrivo della luce – non dipende da dir di osservazione
(è non «view-independent»)
• Metafora: tennista completamente caotico – rimbalza i fotoni in una direzione (stocasticamente)
a caso, indipendentemente dalla dir di arrivo
• Esistono materiali reali che si comportano davvero così?
– Sì: es gesso e plastica ruvida
– Materiali completamente opachi, non lucidi, senza riflessi – Detti: materiali «(puramente) diffusivi»
o «(puramente) Lambertiani»
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
opaco in [ita] significa anche “non trasparente”.
In [eng]:
dull = not shiny (not glossy) opaque = not trasparent
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Semplificazione N 2 :
materiale più semplice possibile («lambertiano»)
• Succede quando…
– a livello microscopico...
la superficie presenta micro-sfaccettature disposte in modo caotico
• Nota:
– le BRDF dei materiali conseguono dalle configurazioni microscopiche (e, dalle loro prorpietà elettromagnetiche)
Semplificazione N 2 :
materiale più semplice possibile («lambertiano»)
• Da funzione (variabile per dir di ingresso e uscita della luce)
• a costante, detta albedo
• Per meteriali colorati, 3 costanti, per R,G,B ripett.:
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
∑ −
=
⋅
⋅
1
0
...
) , , ( ...
N
i
r i r x f ω r ω r
∑ −
=
⋅
⋅
1
0
...
...
N
i B
x G x
R x
D D D
∑ −
=
⋅
⋅
1
0
...
...
N
i
B x
base color
o diffusive color
(del punto x)
albedo (del punto x):
rapporto fra luce incidente
e luce riflessa (da x).
Albedo e base color
• Un materiale puramente labertiano è descritto da un unico parametro
– Albedo – se non ci interessano i colori
– Base Color (o diffuse color) – per rendering a colori
• Il Diffuse Color è la risposta intuitiva alla domanda
« di che colore è questo oggetto » – E non «di che colore lo percepisco»,
che dipende dalle condizioni di luce, dalle normali, etc.
« Di notte tutti i gatti sono bigi »
• Come tutti i parametri che definiscono i materiali, albedo / base color possono essere: costanti per oggetto, variabili sull’oggetto… (vedi poi)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Recap: una semplice Lighting equation (puramente diffusiva!)
∑ −
=
⋅
⋅
⋅
=
1
0
) (
N
i
i B i G i R i
B x G x
R x
r n
L L L
D D D
L r r
ω
«di che colore lo percepisco»
(risultato del lighting) base color - «di che colore è»
(materiale, uno degli input del lighting) diffuse, (prodotto dot)
il fattore che da solo
determina il “chiaroscuro”
in questo modello di lighting nota, i tre
pallini che appaiono nell’eqaz.
rappresentano prodotti diversi!
quali?
Modelli (o equazioni) di lighting
• L’equazione di lighting vista è molto semplice – consiste di esclusivamente
una componente di riflessione diffusiva – prevede materiali altrettanto semplici,
descritti esclusivamente dal base color
– però è phyiscally based – il fenomeno modellato è accuratamente riprodotto (eccetto che per la tricromia)
• Vediamo ora una eq solo leggermente più complicato, quello
“storico” di OpenGL, che in include anche:
– una componente ambient
• modella (approssimando brutalmente) effetti di lighting globale – una componente di riflessione speculare
• modella (approssimando molto) BRDF non Lambertiane (x materiali lucidi) – una componente di luce emissiva
• per la luce emissiva, quasi mai utile ma costa poco
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Modelli (o equazioni) di lighting
• Modello di lighting “storico” di OpenGL
– l’unico utilizzabile nelle versioni precedenti di OpenGL
• oggi, spetta allo sviluppatore dell’app
implementare negli shader questo o altri modelli – ancora molto utilizzato
• determina la terminologia standard di CG – non è physically based
• equazioni che “a naso” danno un risultato ragionevole
• no validazione, e neanche mantenimento energia!
• (eccetto che per la componente diffusiva, che abbiamo già visto)
• Oggi, persino i video-games, tendono ad adottare equazioni di rendering più physically based
– e di conseguenza descrizione dei materiali physically based
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
I 3 addendi nel modello di Lighting di OpenGL
luce finale
= ambiente
+ riflessione
+ emissione
per ogni addendo, ho una componente R, G e B.
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente emissione
• LEDs, lampadine...
• Non dipende dalle luci
– solo dall'oggetto
• E’ solo una componente additiva
– costante per R, G e B
• Modella solo luce che va da: emitter a: occhio
– Non: light-emitter oggetto occhio – Nota: non manda luce ad oggetti vicini – non e’ illuminazione globale
– per fare cio’, devo settare un’altra luce
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
I 3 addendi nel modello di Lighting di OpenGL
luce finale
= ambiente
+ riflessione
+ emissione
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente ambiente
• Modella (ma in modo estremamente semplificato)
la luce che arriva
attraverso rifelssioni multiple – effetto globale
• Equivale all’assunzione:
"un pò di luce raggiunge ogni punto di ogni superficie"
– Per es. anche quelle in ombra
• Piccola costante additiva
– non dipende dalla normale della superficie
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente ambiente
• prodotto fra:
– “ambient color” del materiale ( R M G M B M ) – colore della luce ( R L G L B L )
– (nb: prodotto componente per componente)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente ambiente
senza
con
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
I 3 addendi nel modello di Lighting di OpenGL
luce finale
= ambiente
+ riflessione
+ emissione
riflessione diffusa +
riflessione speculare
solo componente ambient
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
I 4 addendi nel modello di Lighting di OpenGL luce finale
= ambiente
+
riflessione diffusiva +
riflessione speculare +
emissione
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
• La luce che colpisce
una superficie Lambertiana si riflette in tutte
le direzioni (nella semisfera)
– nello stesso modo
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
• La luce che colpisce
una superficie Lambertiana si riflette in tutte
le direzioni (nella semisfera)
– nello stesso modo
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
• La luce che colpisce
una superficie Lambertiana si riflette in tutte
le direzioni (nella semisfera)
– nello stesso modo
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
• Dipende solo da:
– l'orientamento della superficie
• (la "normale")
– la direzione della luce
• del raggio incidente
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
• Dipende solo da:
– l'orientamento della superficie N
• (cioè la sua "normale") – la direzione della luce L
• (cioé del raggio incidente)
cos θ
⋅
⋅
= luce diff materiale diff
diff I k
I
R, G, B
(di solito bianco: 1,1,1) R, G, B (il "colore base" dell'oggetto)
moltiplicazione componente per componente
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
base color, o diffuse color, che fa parte del
"materiale"
Componente riflessione diffusa
• Dipende solo da:
– l'orientamento della superficie N
• (cioè la sua "normale") – la direzione della luce L
• (cioé del raggio incidente)
cos θ
⋅
⋅
= luce diff materiale diff
diff I k
I
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
• Dipende solo da:
– l'orientamento della superficie N
• (cioè la sua "normale") – la direzione della luce L
• (cioé del raggio incidente)
) L ˆ N ˆ ( ⋅
⋅
⋅
= I luce diff k materiale diff
cos θ
⋅
⋅
= luce diff materiale diff
diff I k
I
se angolo é compreso fra 0° e 90°, else: 0,
(oggetto in ombra di se stesso)
nota: ciascuno dei "puntini" in questa equazione rappresenta una operazione diversa!
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
L
N
componente diffusa piccola
⍬=70⁰
L
N
componente diffusa grande
⍬=35⁰
L N
componente diffusa massima
⍬=0⁰
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
L
N
componente diffusa ZERO ⍬=90⁰
L
N
componente diffusa ZERO ⍬>90⁰
(la superficie è nella propria stessa ombra)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione diffusa
• Proprietà
– modello fedele delle BRDF
di alcuni materiali reali ☺ – ma non poi molti
– modello fisicamente coerente ☺
• per es, conserva l'energia – molto semplice da calcolare ☺
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
I 4 fattori che consideriamo luce finale
= ambiente
+
riflessione diffusa +
riflessione speculare +
emissione
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
• Fenomeno molto semplice (concettualmente):
fotoni che “rimbalzano”
– come se fossero palline!
• NB: natura corpuscolare del fotone – il rimbalzo dipende dalla normale
della superficie
• in formula?
• Microscopicamente:
la normale delle “ microfacets ” si discosta poco da quella della superficie macroscopica
(meno se ne discosta, in media,
maggiormente speculare apparirà la sup)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
• "Specular" reflection
– detta anche «phong» reflection
• Per materiali lucidi
– con riflessi brillanti – ("highlights")
senza con
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
• Idea base:
la luce non viene riflessa da materiali lucidi in maniera eguale in tutte le direzioni
• Riflessione view-dependent
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
L: raggio incidente N: normale R: raggio riflesso V: dir. di vista
L N R
α V
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
• Phong light model
– by Bui-Tuong Phong, 1975
cos α
⋅
⋅
= luce spec materiale spec
spec I k
I
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
• Elevando il coseno ad una potenza >1, si ottengono riflessi piu' piccoli e brillanti
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
• Phong light model
– by Bui-Tuong Phong, 1975
“shininess”
(quanto sono
intensi
i riflessi)“glossiness”
(quanto sono
concentrati
i riflessi)fanno parte del "materiale"
(descriz. delle caratteristiche dell'oggetto)
n α
spec materiale spec
luce
spec I k
I = ⋅ ⋅ cos
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare Effetto della “glossiness”
1
n = n = 5 n = 10 n = 100
⋅
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
• Phong light model
– by Bui-Tuong Phong, 1975
n spec
materiale spec
luce k R V
I ⋅ ⋅ ( ⋅ ˆ ˆ )
=
n α
spec materiale spec
luce
spec I k
I = ⋅ ⋅ cos
direzione di luce riflessa.
Vedi esercizio della lez 10
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare variante di Blinn
• Blinn-Phong light model:
• semplificazione del Phong light model
• risultati simili, formula lievemente diversa
• Intuizione: V è (quasi) in direzione di R
N è (quasi) la media (rinormalizzata) fra sse V e L
• (e non devo neanche calcolarlo, R )
Jim Blinn
(pionere della CG)
L N R
V
“half-way” vector
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Componente riflessione speculare
n spec
materiale spec
luce
spec I k R V
I = ⋅ ⋅ ( ⋅ ˆ ˆ )
phong:
blinn-phong: I spec = I luce spec ⋅ k materiale spec ⋅ ( H ˆ ⋅ N ˆ ) n
"half-way"
vector
L N R
V ˆ |
| ˆ ˆ ˆ ˆ
V L
V H L
+
= +
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
I 4 fattori che consideriamo luce finale
= ambiente
+
riflessione diffusa +
riflessione speculare +
emissione
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Equazione di lighting “storica”
di OpenGL in totale
+
⋅ materiale ambient ambient
luce k
I
emission materiale
k
tot = I
propretà del materiale propretà della luce
V L
V L
ˆ ˆ
ˆ ) ( ˆ
+ +
+
⋅
⋅
⋅ n
spacular materiale spacular
luce k H N
I ( ˆ ˆ )
+
⋅
⋅
⋅ k ( L ˆ N ˆ )
I luce diffuse materiale diffuse
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Materiali...
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Modellazione delle luci
• Quanto vale la direzione L ?
– costante nella scena: fonti di luci "direzionali"
• modella fonti di luce molto distanti, e.g. il sole – varia nella scena: fonti di luci "posizionali"
• modella fonti di luci vicine, e.g. lampadine
Luci posizionali e direzionali
• Luce direzionale:
– la direzione L della luce è uno uniform
• Luce posizionale:
– la posizione della luce p è uno uniform – la direzione della luce viene compuata per
ogni punto di posizione x : ( L = normalize( p – x ) )
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Modellazione delle luci: luci posizionali
• Nelle luci posizionali, si può attenuare l'intensità in funzione della distanza
• In teoria (per la fisica) intensità = 1 / distanza 2
⋅
= 2
L
1
d
f attentuazi one luce c
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Modellazione delle luci: luci posizionali
• In pratica, questo porta ad
attenuazioni della luce troppo repentine
• Spesso si usa un polinomio di sec grado:
con costanti arbitrarie
+ +
= 1 , 1
min 2
L 3 L 2
1 c d c d
f attentuazi one luce c
2 , 1 ,
c 0
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Equazione di lighting
n spacular
materiale spacular
luce k H N
I ⋅ ⋅ ( ⋅ )
+
⋅
⋅
⋅ k ( L N )
I luce diffuse materiale diffuse +
⋅ materiale ambient ambient
luce k
I
emission materiale
k +
tot =
I ⋅ f attentuazi one luce
+ +
= 1 , 1
min 2
L 3 L 2
1 c d c d
f attentuazi one luce c
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Equazione di Lighting storica di OpenGL
n spacular
materiale spacular
luce k H N
I ⋅ ⋅ ( ˆ ⋅ ˆ )
+
⋅
⋅
⋅ k ( L ˆ N ˆ )
I luce diffuse materiale diffuse +
⋅ materiale ambient ambient
luce k
I
emission materiale
k +
tot = I
caratteristiche della luce caratteristiche del materiale dati dalla scena
sommato per ogni luce
Caratteristiche del materiale
• Possono essere:
– specificate per oggetto materiale costante
• (allora saranno uniforms) – specificate per vertice
materiale disomogeneo
• (allora saranno varying )
– specificate nelle tessiture (per «texel») materiale ancora più disomogeneo
• (vedremo!) – casi misti
• (alcuni fattori per oggetto, altri per vertice, etc)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Circa il computo dei prodotti dot nel lighting
• Es: nelle componenti diffuse e specular
• Gli operandi devono essere vettori unitari
– (altrimenti, non si ottiene il coseno!)
– (se non lo sono: normalizzare prima dell’uso)
• I due operandi possono essere espressi in qualisasi spazio
– vista, oggetto, mondo …
• …purchè sia lo stesso per entrambi!!!
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• Spazio vista?
– luce, def in spazio vista (luce ferma rispetto all’osserv) (es una head-light):
pronta!
– luce, def in spazio mondo (luce ferma rispetto alla scena):
va portata in spazio vista (con trasf. di View!) – normale
(definita in spazio oggetto):
va portata in spazio vista (trasf. di Model-View!)
– view direction (es. per calcolo di half-way vector) (0,0,-1) in spazio vista, se proiez ortogonale:
pronta!
Esempio: Calcoliamo il lighting in…
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
head light:
luce definita rispetto all’osservatore luce direzionale costante in spazio vista
Esempio: Calcoliamo il lighting in…
• Spazio mondo?
– luce def in spazio vista
(luce ferma rispetto all’osservatore) (es una head-light):
va portata in spazio mondo (con inversa di trasf. di View!) – luce def in spazio mondo
(luce ferma rispetto alla scena):
pronta!
– normale
(definita in spazio oggetto):
va portata in spazio mondo (trasf. di Modellazione!)
– view direction (es. per calcolo di half-way vector) (0,0,-1) in spazio vista, se proiez ortogonale:
va portata in spazio mondo (con inversa di trasf. di View!)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
head light:
luce definita rispetto all’osservatore luce direzionale costante in spazio vista
Esempio: Calcoliamo il lighting in…
• Spazio oggetto?
– luce def in spazio vista
(luce ferma rispetto all’osservatore) (es una head-light):
va portata in spazio oggetto (con inversa trasf. di Model-View!) – luce def in spazio mondo
(luce ferma rispetto alla scena):
va portata in spazio oggetto (con inversa trasf. di Model!) – normale
(definita in spazio oggetto):
pronta!
– view direction (es. per calcolo di half-way vector) (0,0,-1) in spazio vista, se proiez ortogonale:
va portata in spazio oggetto (con inversa trasf. di Model-View!)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
head light:
luce definita rispetto
all’osservatore
luce direzionale
costante in spazio vista
Come si trasformano punti e vettori (ripasso 1/1)
• Se una superficie S viene trasformata con una matrice affine 4x4
– punto = 1
su S:
diventa ′ = 1
=
′
′
′ 1
– vettore = 0
tangente a S, (oppure ottenuto per diff. di punti su S)
diventa ′ = 0
=
′
′
′ 0
M a r c o T a r i n i ‧ C o m p u t e r 0G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
con e in coord omogenee
Come si trasformano punti e vettori (ripasso 2/2)
• Se una superficie S viene trasformata con una matrice affine 4x4
– punto = su S:
diventa = +
– vettore = tangente a S, (oppure ottenuto per diff. di punti su S)
diventa ′ =
M a r c o T a r i n i ‧ C o m p u t e r 0G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
=
0 0 0 1
conta solo la sottomatr 3x3 non conta
con e in coord cartesiane
Come si trasformano vettori unitari
(come sono le normali)
• Se il la trasf M non è una isometria (M non mantinene le distanze) (M non è una rototraslazione)
• Allora dopo la trasformazione di un vettore unitario
devo rinormalizzare il risultato!
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Come si trasformano vett. ortogonali ad una sup
(come sono le normali)
• Se i vettori tangenti vengono trasforamti con con una matrice 3x3
→ = ∙
• come trasformo i vettori ortogonali ad essi per lasciarli tali?
→ = ?
• se prima della trasf: e ortogonali (dot = 0) :
∙ = 0
• allora dopo la trasf: ′ e ′ devono essere ancora ortogonali
∙ = 0
• soluz: pongo = ∙ (cioè = ∙ )
• infatti:
∙ = ∙ ∙ ∙ = ∙ = 0
M a r c o T a r i n i ‧ C o m p u t e r 0G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a con e in coord cartesiane
Trasformazione delle normali
(vettori ortogonali e unitari )
• Totale:
– se per trasformare i punti di un modello uso
=
0 0 0 1
– allora per trasformare le normali uso (l’inversa della trasposta di ,
o la trasposta dell’inversa di , che è lo stesso) – e in più, se non è rigida (una rototraslazione),
rinormalizzo dopo la moltiplic
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Trasformazione delle normali
(vettori ortogonali e unitari )
• Esempio in 2D
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Trasformazione delle normali
• Casi particolari
– Se la matr. di trasf M è...
1. una traslazione...
2. una rotazione...
3. una scalatura uniforme...
4. una combinazione di queste (è il caso tipico!)...
Sol uz.
: Le 1.
nor mal i, co me tut tii vetto ri, sono una ffe
cted vam ale orm . N di M rsa inve = i M ad spost Tra 2.
olti pl.
per M
.per pl. olti (m ta scala be reb and ale orm M. N = i M ad spost Tra 3.
un osca lar e),
ma . tto ffe ne alcu ha on òn M. eci sare zion au ast alizza , b orm e 3 rin 2 olao1 Datdop 4.
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a