O documento discute os conceitos fundamentais de iluminação em computação gráfica, incluindo a interação da luz com objetos, modelos de iluminação local e global, e implementação em OpenGL. Aborda tópicos como emissão, reflexão, refração, modelos de iluminação, componentes do modelo de Phong e cálculo de normais e vetores.
1 de 26
Mais conteúdo relacionado
Modelos de Iluminacao
1. Introdução à Computação Gráfica
Iluminação
Adaptação: João Paulo Pereira
António Costa
Autoria: Claudio Esperança
Paulo Roma Cavalcanti
2. Iluminação
• Estudo de como a luz
interage com os
objectos de uma cena
Emissão
Transmissão
Absorção
Refracção
Reflexão
21-11-2007 2
3. Iluminação
• Modelos físicos
Luz modelada como radiação
electromagnética
Leva em conta todas as interacções (todos os
caminhos da luz)
Intratável computacionalmente
21-11-2007 3
4. Modelos de Iluminação em CG
• Tipicamente, luz é amostrada num número discreto
de primárias (cor)
• Modelos locais
Apenas caminhos do tipo fonte luminosa → superfície
→ olho são tratados
Simples
Ex.: OpenGL
• Modelos globais
Muitos caminhos (ray tracing, radiosidade)
Complexos
21-11-2007 4
5. Iluminação em OpenGL
• Assume fontes pontuais de luz
Omnidireccionais
Spot
• Interacções de luz com superfície modeladas
em componentes (modelo de Phong):
Emissão
Ambiente
Difusa
Especular
21-11-2007 5
6. Iluminação em OpenGL
• Suporte de efeitos atmosféricos como
Fog
Atenuação
• Modelo de iluminação é computado apenas
nos vértices das superfícies
Cor dos restantes pixels é interpolada
linearmente (sombreamento de Gouraud)
21-11-2007 6
7. Fontes de Luz
• Para ligar uma fonte: glEnable (source);
source é uma constante cujo nome é
GL_LIGHTi, começando com GL_LIGHT0
Quantas? Pelo menos 8, mas para ter certeza:
• glGetIntegerv( GL_MAX_LIGHTS, &n );
• Não esquecer de ligar o cálculo de cores pelo
modelo de iluminação
glEnable (GL_LIGHTING);
21-11-2007 7
8. Fontes de Luz
• Para configurar as propriedades de cada fonte:
glLightfv(source, property, value);
Property é uma constante designando:
• Coeficientes de cor usados no modelo de iluminação
– GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR
• Geometria da fonte
– GL_POSITION, GL_SPOT_DIRECTION,
GL_SPOT_CUTOFF, GL_SPOT_EXPONENT
• Coeficientes de atenuação
– GL_CONSTANT_ATTENUATION,
GL_LINEAR_ATTENUATION,
GL_QUADRATIC_ATTENUATION
21-11-2007 8
9. Propriedades de Material
• Especificados por
glMaterialfv (face, property, value)
Face designa quais os lados da superfície que
se quer configurar:
• GL_FRONT, GL_BACK, GL_FRONT_AND_BACK
Property designa a propriedade do modelo
de iluminação:
• GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR,
GL_EMISSION, GL_SHININESS
21-11-2007 9
10. Geometria
• Além das propriedades da luz e do material,
a geometria do objecto é também importante
A posição dos vértices em relação ao olho e à
fonte luminosa contribui para o cálculo dos
efeitos atmosféricos
A normal é fundamental
• Não é calculada automaticamente
• Precisa de ser especificada com glNormal ()
21-11-2007 10
11. Cálculo do Vector Normal
A
• Triângulo
Dados três vértices,
n normalizar(( A B) (C A)) B C
• Polígono planar
Uma opção é usar a fórmula do triângulo para
quaisquer 3 vértices
• Sujeito a erros (vectores pequenos ou quase colineares)
Outra opção é determinar a equação do plano
• ax + by + cz + d = 0
• Normal tem coordenadas (a, b, c)
21-11-2007 11
12. Cálculo do Vector Normal
• Polígono planar (cont.)
Coeficientes a, b, c da equação do plano são
proporcionais às áreas do polígono projectado nos
planos yz, zx e xy
1
y (xi+1, yi+1) AreaXYi ( yi yi 1 )( xi xi 1 )
2
c AreaXYi
(xi, yi)
21-11-2007 x 12
13. Cálculo do Vector Normal de
Superfícies Implícitas
• Normal é dada pelo
vector gradiente
f ( x, y , z ) 0
f / x
n f / y
f / z
f (x,y,z) = c1
f (x,y,z) = c2
f (x,y,z) = c3
21-11-2007 13
14. Cálculo do Vector Normal de
Superfícies Paramétricas
• Normal é dada pelo
produto vectorial dos
gradientes em relação n
f
aos parâmetros u e v u
f
f x (u , v) v
P f y (u , v)
f (u , v)
z
f x / u f x / v
f f
n f y / u f y / v
u v
f z / u f z / v
21-11-2007 14
15. Componentes do Modelo de
Phong
• Emissão: contribuição que não depende de
fontes de luz (fluorescência)
• Ambiente: contribuição que não depende da
geometria
• Difusa: contribuição correspondente ao
espalhamento da reflexão lambertiana
(independente da posição do observador)
• Especular: contribuição referente ao
comportamento de superfícies polidas
21-11-2007 15
16. Componentes do
Modelo de Phong
Difusa Especular Ambiente
21-11-2007 16
17. Iluminação Ambiente
• Componente que modela como uma constante o
efeito da reflexão de outros objectos do ambiente
• Depende dos coeficientes GL_AMBIENT tanto das
fontes luminosas quanto dos materiais
• É ainda possível usar luminosidade ambiente não
relacionada com fontes luminosas
glLightModelfv (GL_LIGHT_MODEL_AMBIENT, params)
• Contribuição é dada por
A I AM A
21-11-2007 17
18. Iluminação Difusa
• Iluminação recebida por uma superfície e que é reflectida
uniformemente em todas as direcções
• Característica de materiais baços ou foscos
• Esse tipo de reflexão é também designada por reflexão
lambertiana
• A luminosidade aparente da superfície não depende do
observador, mas apenas do cosseno do ângulo de incidência
da luz
21-11-2007 18
19. Iluminação Difusa
• Contribuição é dada por
L N
D I D M D cos I D M D ( )
LN
N
L
21-11-2007 19
20. Iluminação Especular
• Simula a reflexão à maneira de um espelho (objectos
altamente polidos)
• Depende da posição do observador, objecto e fonte
de luz
• Num espelho perfeito, a reflexão dá-se em ângulos
iguais
Observador só veria a reflexão de uma fonte pontual
se estivesse na direção certa
• No modelo de Phong simulam-se reflectores
imperfeitos, assumindo que luz é reflectida segundo
um cone cujo eixo passa pelo observador
21-11-2007 20
21. Iluminação Especular
• Contribuição é dada por
S I S M S cos n I S M S ( R E ) n
N
R
L
E
21-11-2007 21
22. Coeficiente de Especularidade
• Indica quão polida é a superfície
Espelho ideal tem coeficiente de especularidade
infinito
Na prática, usam-se valores entre 5 e 100
21-11-2007 22
23. Cálculo do vector da luz
reflectida
R Ln Lp ( N L) N ( L Ln ) 2( N L) N L
N
–Lp Lp
R Ln L
21-11-2007 23
24. Componente Especular em
OpenGL
• Utiliza o ângulo entre a normal e o vector halfway
S I S M S cos n I S M S ( H N ) n
H N
R
L
E EL
H normalizar
2
normalizar E L
21-11-2007 24
25. Atenuação
• Para fontes de luz posicionais (w = 1), é possível
definir um factor de atenuação que leva em conta a
distância d entre a fonte de luz e o objecto iluminado
• Coeficientes são definidos pela função glLight ()
• Por omissão não há atenuação (c0=1, c1=c2=0)
1
aten
c0 c1d c2 d 2
21-11-2007 25
26. Juntando tudo
• A atenuação só é aplicada sobre as componentes difusa e
especular
• A fórmula que calcula a cor de um vértice devida a uma
fonte luminosa i é dada por
Ci Ai aten Di Si
• No final, a cor é dada pela contribuição da iluminação
ambiente (parcela não associada com fontes de luz)
somada à luz emitida e às contribuições Ci
C Amb E Ai aten Di Si
21-11-2007 26