Modello di illuminazione di OpenGL
• Nel resto di questa lezione vediamo il modello di illuminazione di OpenGL
• è il modello di lighting storico
• quello adottato dalla Fixed Pipeline di OpenGL – enza shader programmati: l’unico a disposizione
– attualmente (con shaders programmati), non è più una scelta obbligata – attualmente (con shaders programmati), non è più una scelta obbligata
• ma rimane un buon esempio di quello che possiamo fare
• un buon bilancio realismo/prestazioni
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 0 / 1 1 ‧ 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
per ogni addendo, ho una componente R, G e B.
definite sia per l'oggetto, (sotto forma di attributi per vertice)
sia per ogni luce che uso
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
ambiente + riflessione
+ emissione
le proprieta ottiche dell'oggetto, (di solito sono attributi per vertice)
nel loro insieme sono dette il suo "materiale"
terminologia OpenGL
Componente emissione
• LEDs, lampadine...
• Non dipende dalle luci – solo dall'oggetto
• E’ solo una componente additiva – costante per 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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
– costante per R, G e B
• Nota: non manda luce ad oggetti vicini – non e’ illuminazione globale
– per fare cio’, devo settare una altra luce
I 3 addendi nel modello di Lighting di OpenGL
luce finale
= ambiente
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
ambiente + riflessione
+ emissione
Componente ambiente
• Modella (grossolanamete) la luce che arriva
attraverso rifelssioni multiple – effetto globale (pur molto semplificato)
• Assunzione:
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• Assunzione:
"un pò di luce raggiunge (e viene riflessa da) ogni superficie"
– anche quelle in ombra
• Piccola costante additiva
– non dipende dalla normale della superficie
Componente ambiente
• prodotto fra:
– colore “ambient” del materiale ( R M G M B M ) – colore “ambient” della luce ( R L G L B L )
• Nota: possono essere colori RGB diversi
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• Nota: possono essere colori RGB diversi
– prodotto componente per componente
Componente ambiente
• Modella (grossolanamete)
la luce che arriva da tutte le direzioni attraverso riflessioni multiple
senza
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
senza con
I 3 addendi nel modello di Lighting di OpenGL
luce finale
= ambiente
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
ambiente + riflessione
+ emissione
riflessione diffusa +
riflessione speculare
I 4 addendi nel modello di Lighting di OpenGL luce finale
= ambiente
+
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
+
riflessione diffusa +
riflessione speculare +
emissione
Componente riflessione diffusa
• Esibita nella realtà da (per es) : – gesso
– legno (quasi)
– materiali molto opachi (nel senso di "non lucidi")
opaco in [ita] significa anche “non trasparente” :)
Confronta con [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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• Detta anche – diffuse diffuse diffuse diffuse reflection – Lambertian Lambertian Lambertian Lambertian reflection
Johann Heinrich Lambert 1728 - 1777
I materiali che esibiscono
questo comportamento si dicono “diffusivi” o
“Lambertiani”
Componente riflessione diffusa
• Legge di Lambert: Legge di Lambert: Legge di Lambert: Legge di Lambert:
a livello microscopico...
la superficie presenta micro-sfaccettature caotiche che riflettono la caotiche che riflettono la luce in una direzione
“casuale”
(dopo una o più rifelssioni interne!) (BRDF costante:
un tennista molto caotico, che spara ogni pallina che prende in una dir a caso!)
Componente riflessione diffusa
• La luce che colpisce una superficie Lambertiana si riflette in tutte
le direzioni
(nella semisfera)
(nella semisfera)
– nello stesso modo
Componente riflessione diffusa
• La luce che colpisce una superficie Lambertiana si riflette in tutte
le direzioni (nella semisfera)
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
(nella semisfera) – nello stesso modo
Componente riflessione diffusa
• La luce che colpisce una superficie Lambertiana si riflette in tutte
le direzioni (nella semisfera)
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
(nella semisfera) – nello stesso modo
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• del raggio incidente
Componente riflessione diffusa
• Dipende solo da:
– l'orientamento della superficie N N N N
• (cioè la sua "normale") – la direzione della luce LLLL
• (cioé 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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• (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" dell'oggetto) moltiplicazione componente per componente
Componente riflessione diffusa
• Dipende solo da:
– l'orientamento della superficie N N N N
• (cioè la sua "normale") – la direzione della luce LLLL
• (cioé 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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
fa parte del
"materiale"
(caratteristica dell'oggetto)
• (cioé del raggio incidente)
θ
⋅ cos
⋅
= luce diff materiale diff
diff I k
I
Componente riflessione diffusa
• Dipende solo da:
– l'orientamento della superficie N N N N
• (cioè la sua "normale") – la direzione della luce LLLL
• (cioé 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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• (cioé del raggio incidente)
θ
⋅ cos
⋅
= luce diff materiale diff
diff I k
I
Componente riflessione diffusa
• Dipende solo da:
– l'orientamento della superficie N N N N
• (cioè la sua "normale") – la direzione della luce LLLL
• (cioé del raggio incidente)
se angolo é compreso fra 0° e 90°, else: 0,
(oggetto in ombra di se stesso)
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• (cioé del raggio incidente)
) L ˆ N ˆ ( ⋅
⋅
⋅
= I luce diff k materiale diff θ
⋅ cos
⋅
= luce diff materiale diff
diff I k
I
nota: ciascuno dei "puntini" in questa equazione rappresenta una operazione diversa!
Componente riflessione diffusa
LLLL LLLL
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
N N N N
componente diffusa piccola
⍬=70⁰
N N N N
componente diffusa grande
⍬=35⁰
LLLL N N N N
componente diffusa massima
⍬=0⁰
Componente riflessione diffusa
LLLL LLLL
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
N N N N
componente diffusa ZERO ⍬=90⁰
N N N N
componente diffusa ZERO ⍬>90⁰
(la superficie è nella propria stessa ombra)
Componente riflessione diffusa
• Proprietà – modello fedele
delle caratteristiche ottiche (BRDF) di alcuni materiali reali ☺
– ma non poi molti
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
– ma non poi molti
– modello fisicamente coerente ☺
• per es, conserva l'energia – molto semplice da calcolare ☺
I 4 fattori che consideriamo luce finale
= ambiente
+ +
riflessione diffusa +
riflessione speculare +
emissione
Componente riflessione speculare
• Fenomeno molto semplice (concettualmente):
fotoni che “rimbalzano”
– come palline!
• NB: natura corpuscolare del fotone – il rimbalzo dipende dalla normale
della superficie della superficie
• in formula?
• Microscopicamente: Microscopicamente: Microscopicamente: Microscopicamente:
la normale delle “microfacets”
si discosta poco da quella della superficie macroscopica
(meno se ne discosta, in media,
maggiormente speculare apparirà la sup)
Componente riflessione speculare
• "Specular" reflection
• Per materiali lucidi
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• Per materiali lucidi – con riflessi brillanti – ("highlights")
senza con
Componente riflessione speculare
• Idea base:
la luce non viene riflessa da materiali lucidi in maniera eguale in tutte le direzioni
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 0 / 1 1 ‧ 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
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
N N N LLLL N R R R R
θ θ α VVVV
in 3D
Componente riflessione speculare
• Phong light model
– by Bui-Tuong Phong, 1975
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
in 3D
α
⋅ cos
⋅
= luce spec materiale spec
spec I k
I
Componente riflessione speculare
• Elevando il coseno ad una potenza, 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 0 / 1 1 ‧ 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
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
fanno parte del "materiale"
(caratteristiche dell'oggetto)
in 3D
α
n spec materiale spec
luce
spec I k
I = ⋅ ⋅ cos
α
⋅ cos
⋅
= luce spec materiale spec
spec I k
I
Componente riflessione speculare
• Phong light model
– by Bui-Tuong Phong, 1975
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
in 3D
n spec
materiale spec
luce k R V
I ⋅ ⋅ ( ˆ ⋅ ˆ )
=
α
⋅ cos
⋅
= luce spec materiale spec
spec I k
I
α
n spec materiale spec
luce
spec I k
I = ⋅ ⋅ cos
Componente riflessione speculare
⋅
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
= 1
n n = 5 n = 10 n = 100
⋅
Componente riflessione speculare
• Blinn-Phong light model:
• semplificazione del Phong light model
• risultati simili, formula diversa:
n spec
materiale spec
luce
spec I k R V
I = ⋅ ⋅ ( ˆ ⋅ ˆ )
phong:
ˆ ˆ
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
spec materiale spec
luce spec
blinn-phong: I spec = I luce spec ⋅ k materiale spec ⋅ ( H ˆ ⋅ N ˆ ) n
N N N LLLL N R R R R
θ θ α VVVV H = L + V H = L + V H = L + V H = L + V / |L+V| / |L+V| / |L+V| / |L+V|
"half-way" vector
Componente riflessione speculare
• Blinn-Phong light model:
• semplificazione del Phong light model
• risultati simili, formula diversa:
n spec
materiale spec
luce
spec I k R V
I = ⋅ ⋅ ( ˆ ⋅ ˆ )
phong:
ˆ ˆ
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Jim Blinn
(MEGA-MEGA-GURU)spec materiale spec
luce spec
blinn-phong: I spec = I luce spec ⋅ k materiale spec ⋅ ( H ˆ ⋅ N ˆ ) n
I 4 fattori che consideriamo luce finale
= ambiente
+ +
riflessione diffusa +
riflessione speculare +
emissione
Equazione di lighting in totale
+
⋅
⋅
⋅ materiale spacular n
spacular
luce k H N
I ( )
+
⋅
⋅
⋅ k ( L N )
I luce diffuse materiale diffuse +
⋅ materiale ambient ambient
luce k
= I I tot
emission materiale
k
propretà del materiale propretà della luce
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Equazione di lighting:
modellazione delle luci
+
⋅
⋅
⋅ materiale spacular n
spacular
luce k H N
I ( ˆ ˆ )
+
⋅
⋅
⋅ k ( L ˆ N ˆ ) I luce diffuse materiale diffuse
+
⋅ materiale ambient
ambient
luce k
= I I tot
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
spacular materiale spacular
luce
emission materiale
k
propretà della luce
V L
V L
ˆ ˆ
ˆ ) ( ˆ
+ +
Modellazione delle luci
• Come varia L?
– costante nella scena: fonti di luci "direzionali"
• buono per fonti di luce molto distanti, e.g. il sole – varia nella scena: fonti di luci "posizionali"
• buono per fonti di luci vicine, e.g. lampadine
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• buono per fonti di luci vicine, e.g. lampadine
Modellazione delle luci: luci posizionali
• Nelle luci posizionali, si può attenuare l'intensità in funzione della distanza
• In teoria (per la fisica)
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• In teoria (per la fisica) intensità = 1 / distanza 2
= ⋅ 2
L
1 d f attentuazi one luce c
Modellazione delle luci: luci posizionali
• In pratica, questo porta ad
attenuazioni della luce troppo repentine
• Invece usiamo:
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
+
= + 1 , 1
min 2
L 3 L 2
1 c d c d
f attentuazi one luce c
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
tot =
I ⋅ f attentuazi one 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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
spacular
materiale spacular luce
emission materiale
+ k
+
= + 1 , 1
min
2L 3 L 2
1
c d c d
f attentuazi one luce c
Tipi di luci
• Tipi di luci:
– posizionali – direzionali – spot-lights
• (faretti)
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• (faretti)
Spotlights
• Definite da tre parametri:
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Equazione di Lighting di OpenGL (completa)
n spacular
materiale spacular
luce k H N
I ⋅ ⋅ ( ˆ ⋅ ˆ )
+
⋅
⋅
⋅ k ( L ˆ N ˆ ) I luce diffuse materiale diffuse
+
⋅ materiale ambient
ambient
luce k
I
tot =
I attenuazio ne luce
⋅ f
spotlight effetto
⋅ f
caratteristiche della luce caratteristiche del materiale dati dalla scena
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
spacular
materiale spacular luce
emission materiale
+ k
+
= + 1 , 1
min
2L 3 L 2
1
c d c d
f
attentuazionelucec
(
direction cutoffAngle beamwidth)
spotlight
effetto