Licenciatura em Engenharia Informática e de Computadores
Computação Gráfica
Modelos de Iluminação e Reflexão
Edward Angel, Cap. 6
LEIC CG
Na última aula...
Recorte 2D
Sutherland-Hodgman
Recorte 3D
LEIC CG
Questão 4, exame de 29/07/11
[3.0v] Considere o rectângulo de recorte e os polígonos
P
1={V
1, V
2, V
3}, P
2={V
2, V
4, V
3} e P
3={V
3, V
4, V
5} ilustrados na figura abaixo. Assuma que vai aplicar os algoritmos de recorte
leccionados nas aulas teóricas.
LEIC CG
[3.0v] (…) rectângulo de recorte e os polígonos P
1, P
2e P
3(…)
a) Seguindo a metodologia usada no algoritmo de Cohen-
Sutherland, indique os outcodes de cada um dos vértices.
LEIC CG
[3.0v] (…) rectângulo de recorte e os polígonos P
1, P
2e P
3(…)
b) Identifique que segmentos são trivialmente aceites,
trivialmente rejeitados ou subdivididos, através da aplicação do
algoritmo de Cohen-Sutherland.
LEIC CG
[3.0v] (…) rectângulo de recorte e os polígonos P
1, P
2e P
3(…)
d) Descreva o recorte do polígono P
2através da aplicação do
algoritmo de Sutherland-Hodgman. Faça-o indicando as listas de
vértices inicial, à entrada e saída de cada um dos passos e final. Em
cada passo indique qual a aresta de recorte.
LEIC CG
Sumário
Iluminação e Reflexão
Modelo de Reflexão de Phong Aproximação de Blinn
Modelo de Reflexão de Blinn-Phong
LEIC CG
Pipeline de Visualização 3D
LEIC CG
Pipeline de Visualização 3D
LEIC CG
Pipeline de Visualização 3D
LEIC CG
Luz e Materiais
LEIC CG
Interacção Luz - Materiais
Energia luminosa reflectida na direcção da câmara
Define a cor representada
• Objecto vermelho e fonte de luz branca
material absorve a energia luminosa em todos os comprimentos de onda excepto no vermelho
• Objecto transparente
toda a energia luminosa é transmitida/refractada
Resultado diferente se alterada posição de
câmara objecto
fonte de luz
observador
LEIC CG
Fontes de Energia Luminosa
Compostas por múltiplos pontos de emissão Cada ponto pode emitir de modo diferente
I(x1, y1, z1, θ1, ϕ1, λ)
I(x2, y2, z2, θ2, ϕ2, λ)
Na prática L=(IR, IG, IB)
LEIC CG
Fontes de Luz Simplificadas
Pontual
Posição e cor
Intensidade diminui com a distância
Direccional
Cor e direcção (localizada no infinito)
Spotlight
Posição, cor, emissão num dado um ângulo sólido
Luz Ambiente
Contribuição de múltiplas fontes
Constante em todos os pontos da cena Não tem direcção
© 2012 Corpo docente de Computação Gráfica / CG&M / DEI / IST / UTL
LEIC CG
Tipos de Materiais
Modo como reflectem a energia luminosa:
Especular: numa só direcção
Difusa: igual em todas as direcções
Especificação dos materiais
Cor
Coeficientes de reflexão
Especular Difusa
LEIC CG
Vectores Envolvidos
Direcção da fonte de luz ( l ) Direcção da câmara ( v )
Normal à superfície ( n )
Direcção de reflexão perfeita ( r )
l
n v
r
LEIC CG
Modelos de Iluminação e
Reflexão
LEIC CG
Iluminação e Reflexão (1/2)
Modelos de Iluminação e Reflexão
Essenciais para representação de cenas 3D
• a duas dimensões
• com um significativo grau de realismo
LEIC CG
Iluminação e Reflexão (2/2)
Modelo de Reflexão
descreve como luz interage com superfície dos objectos
• Em função de
propriedades dessas superfícies natureza da luz incidente
Modelo de Iluminação
descreve a natureza e a distribuição de intensidade da luz
• emanada pelas fontes luminosas presentes na cena
LEIC CG
Sombreamento
Depois de se ter
Definido modelos de iluminação e reflexão
Determinado as posições e orientações relativas de
• objectos
• fontes de luz
Pode-se proceder ao
Cálculo de sombreamento das superfícies dos objectos
“Shading”
No terceiro andar do pipeline.
LEIC CG
Modelo de Iluminação de Phong
LEIC CG
Modelo de Reflexão de Phong
Garante compromisso equilibrado entre
grau de realismo carga computacional
Modela a intensidade luminosa
Combinação linear de três componentes
• Reflexão Ambiente
• Reflexão Difusa
• Reflexão Especular
LEIC CG
Modelo de Reflexão de Phong
Reflexão Ambiente
Permite iluminar
objectos que não estão directamente iluminados
Complementa iluminação
Objectos directamente iluminados
Definida por
I
a= k
aL
aOnde:
K
a: coeficiente de reflexão de luz ambiente (0 ≤ k
a≤ 1) L
a: valor de luz ambiente
• global ou contribuição de fontes de luz individuais
LEIC CG
Modelo de Reflexão de Phong
Reflexão Difusa
Superfície difusora perfeita
difunde igual intensidade luminosa em todas as direcções a luminosidade apreendida por um observador
• não depende do seu ponto de vista
Intensidade da luz Difusa
Estimada pela lei de Lambert
n l v
LEIC CG
Lei de Lambert
Estima intensidade da energia luminosa difundida Dada por:
I
d=L
d. k
dcos Θ Θ Θ Θ
Onde:
Θ Θ
Θ Θ : ângulo entre fonte de luz e normal à superfície (0 ≤ Θ Θ Θ Θ ≤ π /2) k
d: coeficiente de reflexão difusa (
0 ≤ kd≤ 1 )Ld: intensidade da componente difusa da fonte de luz
n
l Θ
LEIC CG
Modelo de Reflexão de Phong
Reflexão Difusa
Intensidade da luz Difusa
Estimada pela lei de Lambert
Dada por:
n
l Θ v
( , 0 )
max l n L
k
I d d d r r
⋅
=
LEIC CG
Modelo de Reflexão de Phong
Reflexão Especular
Superfícies reflectoras perfeitas (especulares)
Energia luminosa reflectida numa única direcção…
n
raio reflectido raio
incidente
Superfície especular perfeita
Θ Θ
LEIC CG
Modelo de Reflexão de Phong
Reflexão Especular
Modela grau de brilho de uma superfície
Representada pela quantidade de luz reflectida
• de modo especular
• em torno da direcção de reflexão ideal
(ângulo de reflexão igual ao ângulo de incidência)
n r
l
v
LEIC CG
Modelo de Reflexão de Phong
Reflexão Especular
Superfícies especulares imperfeitas
LEIC CG
Modelo de Iluminação de Phong
Reflexão Especular
Intensidade diminui cos
αcom o aumento do ângulo entre R e V
Intensidade dada por:
Onde:
αααα
: coeficiente de brilho (shininess) ks: coeficiente de reflexão especularLs: intensidade da componente especular da fonte de luz
n r
l
Θ Θ φ v
( ( ) , 0 )
max r v α L
k
I
s s sr r
⋅
=
LEIC CG
Modelo de Reflexão de Phong
Coeficiente de Brilho
Metais – αααα entre 100 e 200 Plásticos – αααα entre 5 e 10
cos
αφ
φ 90
-90
LEIC CG
Superfícies especulares
Exemplo
LEIC CG
Modelo de Reflexão de Phong
Resultado Global
n
l r
P
v
(α >>) (α <<)
ambiente + difusa
especular
( ) , 0 max ( ( ) , 0 )
max l n k L r v
αL
k L
k
I
a a d dr r
s sr r
⋅ +
⋅ +
=
LEIC CG
Modelo de Reflexão de Phong
Atenuação Atmosférica
Valor da energia luminosa depende da distância
Entre superfície e fonte de luz
Intensidade de luz é dada por:
Onde
d: distância do objecto à fonte de luz a, b,e c: constantes empíricas
L: intensidade de luz na fonte
cd
2bd a
I L
+
= +
LEIC CG
Modelo de Reflexão de Phong
Resultado Global
n
l r
P
v
(α >>) (α <<)
ambiente + difusa
especular
( ) , 0 max ( ( ) , 0 )
max
22
v
αcd r bd
a k L n
cd l bd
a k L L
k
I
a a d dr r
s sr r
+ ⋅ + +
+ ⋅ + +
=
LEIC CG
Modelo de Reflexão de Phong
Resultado Global
Várias (i) fontes de luz
Componente Especular
Componente Difusa
) α
( r v L
k
I
ii
is s
s
r r ⋅
= ∑
) ( l n L
k
I
ii
id d
d
r r
⋅
= ∑
LEIC CG
r2 l2
L2
r3
l3
L3
Modelo de Reflexão de Phong
Resultado Global
Intensidade de luz num ponto da superfície
Dada pela expressão:
( )
a iai
i is
s i
id d i
i
L k v
r L
k n
l L
cd k bd
I a ⋅ + ⋅ +
+
= ∑ + 1
2max( r r ) max( r r )
αn
r1 l1
L1 v
LEIC CG
Modelo de Reflexão de Phong
Controlo da Cor
No objecto
k
ra, k
ga, k
ba: coeficientes de reflexão ambiente
k
rd, k
gd, k
bd: coeficientes de reflexão difusa
k
rs, k
gs, k
bs: coeficientes de reflexão especular
Na fonte de luz
L
ra, L
ga, L
ba: intensidade de luz ambiente L
rd, L
gd, L
ba: intensidade de luz difusa
L
rs, L
gs, L
bs: intensidade de luz especular
LEIC CG
Modelo de Reflexão de Phong
Resultado Global
Intensidade de luz num ponto da superfície
Dada pelas expressões:
( )
ra irai
i irs
rs i
ird rd i
i
r
k L l n k L r v k L
cd bd
I a ⋅ + ⋅ +
+
= ∑ + 1
2max( r r , 0 ) max( r r , 0 )
α( )
ga igai
i igs
gs i
igd gd
i i
g
k L l n k L r v k L
cd bd
I a ⋅ + ⋅ +
+
= ∑ + 1
2max( r r , 0 ) max( r r , 0 )
α( )
ba ibai
i ibs
bs i
ibd bd
i i
b
k L l n k L r v k L
cd bd
I a ⋅ + ⋅ +
+
= ∑ + 1
2max( r r , 0 ) max( r r , 0 )
αLEIC CG
Modelo de Reflexão de Phong
=
b g r P
I I I I
r2 l2
L2 r3
l3
L3 n
r1 l1
P
L1 v
b g
r
P I I I
I ≠ + +
LEIC CG
Modelo de Reflexão de Phong
r2 l2
L2 r3
l3
L3 n
r1 l1
P
L1 v
( )
( )
( )
+
⋅ +
+ ⋅ +
+
⋅ +
+ ⋅ +
+
⋅ +
+ ⋅ +
=
∑
∑
∑
iga ga i
i igs
gs i
igd gd
i i
ira ra i
i irs
rs i
ird rd i
i
P
L k v
r L
k n
l L
k
L k v
r L
k n
l L
cd k bd
a
L k v
r L
k n
l L
cd k bd
a I
α α α
) 0 , max(
) 0 , 1 max(
) 0 , max(
) 0 , 1 max(
) 0 , max(
) 0 , 1 max(
2 2
r r r r
r r r r
r
r
r r
LEIC CG
Modelo de Phong Modificado
LEIC CG
Modelo de Reflexão de Phong
Na aplicação do modelo de Phong original
Tem de se determinar
• Para todos os pontos da superfície
• Na determinação da componente especular
Pode-se obter uma aproximação
do valor da componente especular
r r
n r
l
v
LEIC CG
Aproximação de Blinn (1/2)
Cálculo de vector é caro
Calcula-se
• Vector normal a uma hipotética faceta reflectora pura
• Vector médio normalizado (halfway vector)
r r
h r
2 v l
v l
v h l
r r r r
r r
r = +
+
= +
l n
v h
Vectores
l
ev
unitários
LEIC CG
Aproximação de Blinn (2/2)
No cálculo da componente especular
Usar
em vez de
escolhendo β de modo a que
( r r ⋅ v r )
α( n r ⋅ h r )
β( ) n r ⋅ h r
β≈ ( r r ⋅ v r )
αLEIC CG
h2
l2 L2
r3
l3
L3
Modelo de Phong Modificado (Modelo de Blinn-Phong)
Intensidade de luz num ponto da superfície
Dada pela expressão:
( )
a iai
i is
s i
id d i
i
L k h
n L
k n
l L
cd k bd
I a ⋅ + ⋅ +
+
= ∑ + 1
2max( r r , 0 ) max( r r , 0 )
βh1 n l1
P
L1 v
LEIC CG
Modelo de Reflexão de Blinn-Phong
h2
l2
L2 h3
l3
L3 h1 n
l1
P
L1 v
( )
( )
( )
+
⋅ +
+ ⋅ +
+
⋅ +
+ ⋅ +
+
⋅ +
+ ⋅ +
=
∑
∑
∑
iga ga i
i igs
gs i
igd gd
i i
ira ra i
i irs
rs i
ird rd i
i
P
L k h
n L
k n
l L
k
L k h
n L
k n
l L
cd k bd
a
L k h
n L
k n
l L
cd k bd
a I
β β β
) 0 , max(
) 0 , 1 max(
) 0 , max(
) 0 , 1 max(
) 0 , max(
) 0 , 1 max(
2 2
r r r r
r r r r
r r
r r
LEIC CG
Modelo de Phong Modificado (Modelo de Blinn-Phong)
Modelo usado por omissão no OpenGL
Aplicado a todos as vértices
• Que passem ao
3º passo do 2º andar do pipeline
LEIC CG
Iluminação e Materiais
em OpenGL
Activar cálculo da Iluminação
glEnable(GL_LIGHTING)
Depois de activado, glColor() é ignorado
Activar individualmente cada fonte de luz
glEnable(GL_LIGHTi) // i=0,1…
Escolher parâmetros do modelo de iluminação
glLightModel{fi}{v}(pname, params) Exemplo: Definir luz ambiente global
GLfloat amb[] = {0.2f, 0.2f, 0.2f, 1.0};
glLightModelfv(GL_LIGHT_MODEL_AMBIENT,amb);
…
LEIC CG
Iluminação e Materiais
em OpenGL
Propriedades das fontes de luz:
I
a, I
se I
dPosição e direcção (se aplicável)
Atenuação, spot cut-off e spot exponent
GLfloat ambient[] = { 0.0, 0.1, 0.0, 1.0 };
GLfloat diffuse[] = { 0.0, 1.0, 1.0, 1.0 };
GLfloat specular[] = { 1.0, 1.0, 1.0, 1.0 };
(…)
glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR, specular);
(…)
LEIC CG
Iluminação e Materiais
em OpenGL
Propriedades das fontes de luz:
I
s, I
de I
aPosição e direcção (se aplicável)
Atenuação, spot cut-off e spot exponent
GLfloat position[] = {2.0, 2.0, 0.0, 1.0}
GLfloat direction[] = {-1.0, -1.0, 0.0, 0.0 } (…)
// point light
glLightfv(GL_LIGHT0, GL_POSITION, position);
// directional light
glLightfv(GL_LIGHT1, GL_POSITION, direction);
(…)
LEIC CG
Iluminação e Materiais
em OpenGL
Propriedades das fontes de luz:
I
s, I
de I
aPosição e direcção (se aplicável)
Atenuação, spot cut-off e spot exponent
(…)
glLightf(GL_LIGHT0,
GL_CONSTANT_ATTENUATION
, a) glLightf(GL_LIGHT0,GL_LINEAR_ATTENUATION
, b)glLightf(GL_LIGHT0,
GL_QUADRATIC_ATTENUATION
, c) (…)2
1
i i
i
a bd cd
f = + +
LEIC CG
Iluminação e Materiais
em OpenGL
Propriedades das fontes de luz:
I
s, I
de I
aPosição e direcção (se aplicável)
Atenuação, spot cut-off e spot exponent (α)
(…)
glLightfv(GL_LIGHT0,
GL_SPOT_DIRECTION
, direction) glLightf(GL_LIGHT0,GL_SPOT_CUTOFF
, theta) // 0~180 glLightf(GL_LIGHT0,GL_SPOT_EXPONENT
, alpha) // 0~128−θ φ θ
cos
αφ
LEIC CG
Iluminação e Materiais
em OpenGL
Propriedades das fontes de luz:
I
s, I
de I
aPosição e direcção (se aplicável)
Atenuação, spot cut-off e spot exponent (α)
(…)
glLightfv(GL_LIGHT0,
GL_SPOT_DIRECTION
, direction) glLightf(GL_LIGHT0,GL_SPOT_CUTOFF
, theta) // 0~180 glLightf(GL_LIGHT0,GL_SPOT_EXPONENT
, alpha) // 0~128 (…)
⋅
=
otherwise d
v
inspot if
spotlight if
) 0 , max(
) (!
0
) (!
1 effect
spotlight_
LEIC CG
Iluminação e Materiais
em OpenGL
Material das superfícies:
k
s, k
de k
ak
emmisive– Componente “emissiva” do material
GLfloat matambient[] = { 0.5, 0.5, 0.5, 1.0 };
GLfloat mat_diffuse[] = { 0.6, 0.6, 0.0, 1.0 };
GLfloat mat_specular[] = { 0.8, 0.8, 0.8, 1.0 };
GLfloat mat_emission[] = {0.3, 0.2, 0.2, 0.0};
GLfloat mat_shine = 100.0 (…)
glMaterialfv (GL_FRONT, GL_AMBIENT, mat_ambient);
glMaterialfv (GL_FRONT, GL_DIFFUSE, mat_diffuse);
glMaterialfv (GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialfv (GL_FRONT, GL_EMISSION, mat_emission);
glMaterialf (GL_FRONT, GL_SHININESS, mat_shine);
(…)
LEIC CG
Iluminação e Materiais
em OpenGL
ambient
!"#$%&∗ ambient
#("&) (* + 1
- . / 0 /
1∗ 2 34 _ 66 0
789
∗ < - .
:; => ?∗ - .
/ 66@
=> ?∗ / 66@ ∗ max ∙ , 0
2 0@ -
=> ?∗ 2 0@ - ∗ max 4 ∙ , 0
E> 7 7 EE?FG
LEIC CG
Iluminação e Materiais
em OpenGL
- . => HI ∗ - .
* 0 .@ => EHJ K
789
:9
0 .@ => EHJ K ?
- @- _6-0 ∗ 2 34 _ 66 0 ∗ L- . _ / 66@ _
LEIC CG