• Non ci sono risultati.

ModellodiilluminazionediOpenGL•Nel resto di questa lezione vediamo il modello di illuminazione di OpenGL•è il modello di lighting storico•quello adottato dalla di OpenGL

N/A
N/A
Protected

Academic year: 2021

Condividi "ModellodiilluminazionediOpenGL•Nel resto di questa lezione vediamo il modello di illuminazione di OpenGL•è il modello di lighting storico•quello adottato dalla di OpenGL"

Copied!
8
0
0

Testo completo

(1)

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

(2)

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

(3)

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

(4)

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)

(5)

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

(6)

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 speck 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 speck 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

(7)

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 =

If 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

2

L 3 L 2

1

c d c d

f attentuazi one luce c

(8)

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

2

L 3 L 2

1

c d c d

f

attentuazioneluce

c

(

direction cutoffAngle beamwidth

)

spotlight

effetto

L spot spot spot

f = f , , ,

Riferimenti

Documenti correlati

 Si approssima la funzione di riflessione diffusa della superficie come una costante kd dipendente dal materiale.  Equazione di illuminazione (solo

 If we render several objects, one at a time, directly on the memory region used by the screen, we may experience flickering in the image.  To avoid flickering, rendering is done

 funzioni che sono attivate in risposta a vari eventi (messaggi) gestiti dal sistema operativo (pressione di un tasto del mouse o della tastiera, reshape della finestra,

™I file che implementano la CIGLWidget devono essere aggiunti al progetto di designer. ™Devono essere nel .pro perche’ il .h va processato

™ Wgl e GLx sono i sottoinsiemi di OpenGL che dipendono dal SO e che permettono di dire al SO ad esempio che l’interno di una certa finestra deve essere adatto a OpenGL.

A good implementation can be structured so significant chunks of code for color index colormap manage- ment, non-standard device support (Spaceball, dial & button box, and

™Si modifica la classe CChildFrame (il frame della finestra padre della vista in un app mdi).. ™In un sdi si modificava semplicemente Cmainframe in modo del tutto analogo a

Dirigenti con incarichi nello staff della Direzione Generale: Area dei risultati – valutazione complessiva per l’intero periodo attribuita in relazione all’effettivo apporto