You are on page 1of 42

Cap.

6 Iluminao
Engenharia Informtica (5385) - 2 ano, 2 semestre

Motivao

Modelo de Iluminao = aproximao da iluminao do mundo real Sensao da 3-dimensionalidade, percepo da profundidade Na maior parte das aplicaes, usa-se o modelo de iluminao de Phong porque temporalmente mais eficiente e porque permite uma representao bastante aproximada do mundo real.

wireframe

sem iluminao

iluminao directa

Modelos de iluminao independentes da luz


Colorao

em Profundidade (Depth Shading)

Cor ou intensidade determinada somente pela profundidade" do polgono. Cores ou intensidades mais escuras em pontos de maior profundidade no objecto: por exemplo, na modelao de superfcies terrestres. Evita os clculos complexos dos modelos dependentes da luz. Faz uma simulao realstica.

Percepo

da Profundidade (Depth Cueing)

Reduz a intensidade do pixel quando a distncia ao observador aumenta. Simula a reduo em claridade quando a distncia ao observador aumenta. A imagem desvanece com a distncia. Frequentemente usada em imagiologia mdica.

Modelos de iluminao dependentes da luz

O que um objecto parece depende de:

Propriedades da fonte de luz, tais como: cor, distncia entre a fonte de luz e o objecto, direco definida pela fonte de luz e pelo objecto, intensidade da fonte de luz Caractersticas da superfcie do objecto, tais como: cor e propriedades de reflexo Localizao do observador. Reflectida (reflexo difusa & reflexo especular) Absorvida Transmitida (translucente ou transparente) Combinao das trs anteriores

A luz que incide na superfcie dum objecto pode ser:


From: http://jedi.ks.uiuc.edu/~johns/raytracer/raygallery/stills.html

Modelos de iluminao baseados na luz


Iluminao

Directa ou Local

Interaco simples entre luz & objectos Processo em tempo-real suportado pela OpenGL Exemplo: modelo de iluminao de Phong

Iluminao

Indirecta ou Global

Interaco mltipla entre luz & objectos: reflexes entre objectos, sombras e refraces No em tempo-real (ainda) Exemplos: raytracing, radiosidade, photon mapping
5

Sobreviso: modelos baseados na luz


Iluminao

Directa ou Local

Tipos de Luz Fontes de Luz (emisso) Materiais da superfcie dos objectos (reflexo)

Iluminao

Indirecta ou Global
Direct Illumination

Sombras Refraces Reflexes entre objectos

Tipos de Luz
Luz

Ambiente

Vem de todas as direces; quando atinge a superfcie, espalha-se igualmente em todas as direces. Consequncia do espalhamento da luz: no depende do ponto de vista (do observador).

Luz

Difusa

Vem de uma direco; quando atinge a superfcie, espalha-se igualmente em todas as direces. Consequncia do espalhamento da luz: no depende do ponto de vista (do observador).

Luz

Especular

Vem de uma direco; tende a reflectir na superfcie numa direco preferencial. Consequncia do espalhamento da luz: depende do ponto de vista (do observador).
7

Tipos de Luz (cont.)


Luz

Ambiente
Pode ser usada para dar a sensao da cor principal do ambiente. Contribuies:

iluminao em contra-luz tem uma grande percentagem de luz ambiente um foco de luz fora-de-portas tem uma percentagem muito pequena de luz ambiente

Luz

Difusa
o tipo de luz que mais se aproxima da cor da luz. Contribuies:

qualquer luz que venha duma posio ou direco particular

Luz

Especular
a luz que mais se aproxima da luz unidireccional. Contribuies:

um feixe laser bem-colimado que incida num espelho de elevada qualidade produz quase 100 porcento de reflexo especular um metal brilhante tem uma elevada componente de luz especular o giz no reflecte quase nenhuma luz especular

Fontes de luz e material


Fontes

de Luz

Tipos:

ambiente, posicional, direccional, cnica A cor de luz emitida dada pelas quantidades de luz vermelha, verde e azul. Cada fonte de luz pode ser ligada ou desligada.

Cor

Nmero

Tipos de luz emitida: ambiente, difusa, especular

Material

da Superfcie

Especifica como a luz reflectida (e absorvida)

A cor do material dada pela percentagem das componentes vermelha, verde e azul que so reflectidas em vrias direces. Superfcies diferentes tm propriedades diferentes; algumas so brilhantes,pelo que reflectem preferencialmente a luz em certas direces, ao passo que outras espalham igualmente a luz em todas as direces. A maior parte das superfcies situam-se entre os dois extremos anteriores.
9

Tipo de luz emitida: emitida Tipos de luz reflectida: ambiente, difusa, especular

Modelao de Fontes de Luz


Modelo da Fonte de Luz: I L (P, D, )

descreve a intensidade de energia, que sai da fonte de luz e que chega posio P(x, y, z) vinda da direco D (vector normalizado) com comprimento de onda

10

Tipos de Fontes de Luz


So

os seguintes:

Fonte de luz ambiente Fonte de luz pontual Fonte de luz direccional Fonte de luz cnica (spotlight)
LMPADA SOL HOLOFOTE

fonte de luz pontual fonte de luz direccional

fonte de luz cnica


11

Fonte de Luz Ambiente


Um

objecto que no esteja directamente iluminado ainda visvel

por causa da luz reflectida a partir doutras superfcies

Modelada

por uma simples fonte de luz

ambiente

Em vez de calcular as reflexes nas superfcies dos objectos, especifica-se uma luz ambiente constante para todas as superfcies Definida somente pelas intensidades de luz ambiente RGB

Intensidade

da luz ambiente IL que chega a um ponto P(x,y,z): I(P, I L ) = I L


12

Luz Ambiente Global em OpenGL


No vem de nenhuma fonte de luz em particular. Permite-nos ver objectos numa cena mesmo que nela no haja quaisquer fontes de luz. A sua intensidade RGBA especificada pelo parmetro GL_LIGHT_MODEL_AMBIENT como se segue:

Exemplo: (Luz Ambiente Global)

RGBA

// sets global ambient light GLfloat lmodel_ambient[]={0.2,0.2,0.2,1.0}; glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);

13

Fonte de Luz Direccional


Modela

uma fonte de luz pontual no infinito (e.g. sol)

Definida pelas intensidades de luz emitida RGB de todos os tipos, e pela direco D

direco importante para calcular a luz reflectida Intensidade da luz IL que chega ao ponto P(x,y,z):

I(P, D, I L ) = I L

nenhuma atenuao com a distncia

14

Fonte de Luz Pontual


Luz

emitida a partir dum ponto duma forma radial em todas as direces (fonte omni-direccional)

Definida pelas intensidades de luz (RGB) emitida de todos os tipos, pela posio L(x,y,z), e pelos factores (kc, kl, kq) de atenuao com a distncia d a P(x,y,z)

P (x,y,z)"

Intensidade

da luz pontual IL que chega a P(x,y,z):


lmpada"

IL I(P, L, kc , kl , kq , I L ) = kc + k1d + kq d 2
15

Fonte de Luz Cnica


Luz

emitida num cone (e.g. candeeiro Luxo Jr.)

Definida pelas intensidades de luz (RGB) emitida de todos os tipos, pela posio L, direco D, expoente de recorte do holofote pelos factores de atenuao constante, linear e quadrtica (kc, kl, kq)

P L
L D

da luz de holofote IL que chega ao ponto P (x,y,z): IL D L I(P, L, kc , k1 , kq , I L ) = kc + k1d + kq d 2

Intensidade

holofote" (spot light)"


16

Direco e Posio das Fontes de Luz em OpenGL


Fonte de luz direccional. Est localizada no infinito relativamente cena. Fonte de luz pontual ou posicional. A sua distncia cena finita.

Exemplo: (Fonte de Luz Direccional)


// sets GL_LIGHT0 with direction (x=1.0,y=1.0,z=1.0) at an infinite position (w=0.0) in homogeneous coordinates Glfloat light_position[]={1.0,1.0,1.0,0.0}; glLightfv(GL_LIGHT0, GL_POSITION, light_position);

Exemplo: (Fonte de Luz Pontual ou Posicional)


// sets GL_LIGHT0 at the position (x=1.0,y=1.0,z=1.0) that is finite (w0.0) in homogeneous coordinates Glfloat light_position[]={1.0,1.0,1.0,1.0}; glLightfv(GL_LIGHT0, GL_POSITION, light_position);
17

Direco e Posio de Fontes de Luz em OpenGL (cont.)


semelhana da fonte de luz pontual, uma fonte luz de holofote (spot light) tambm uma fonte de luz posicional. Fonte de luz pontual. Por defeito, a propriedade spotlight est inactiva porque o parmetro GL_SPOT_CUTOFF 180.0 graus. Este valor significa que a luz emitida em todas as direces (o ngulo no pice do cone 360 graus, ou seja, no um cone afinal de contas). Fonte de luz de holofote. O valor do ngulo de recorte GL_SPOT_CUTOFF do holofote est limitado ao intervalo [0.0,90.0].

Exemplo: (Fonte de Luz do Holofote)


// sets GL_LIGHT0 as a spotlight with a cutoff angle of 30 degrees glLight(GL_LIGHT0, GL_SPOT_CUTOFF, 30.0); // sets spotlights direction or the light cone axis Glfloat spot_direction[]={-1.0,-1.0,0.0}; glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spot_direction);
18

Cor da Luz Emitida por uma Fonte de Luz em OpenGL

A OpenGL permite associar 3 parmetros de cor a qualquer fonte de luz particular :

GL_AMBIENT. a intensidade RGBA da luz ambiente que uma fonte de luz particular adiciona cena.
Valores

RGBA por omisso: (0.0,0.0,0.0,1.0) nenhuma luz ambiente

GL_DIFFUSE. a intensidade RGBA da luz difusa que uma fonte de luz particular adiciona cena.
Valores

RGBA por omisso: (1.0,1.0,1.0,1.0) para a LIGHT0 (brilhante, luz difusa branca) e (0.0,0.0,0.0,0.0) para qualquer outra fonte de luz.

GL_SPECULAR. a intensidade RGBA da luz especular que uma fonte de luz particular adiciona cena.
Valores

RGBA por omisso: (1.0,1.0,1.0,1.0) para a LIGHT0 e (0.0,0.0,0.0,0.0) para qualquer outra fonte de luz.
19

Cor da Luz Emitida por uma Fonte de Luz em OpenGL (cont.)


Exemplo: (Cor da Luz Ambiente, Difusa e Especular)
// sets Glfloat Glfloat Glfloat the ambient component of GL_LIGHT0 light_ambient[]={0.0,0.0,1.0,1.0}; // blue color light_diffuse[]={1.0,1.0,1.0,1.0}; // white color light_specular[]={1.0,1.0,1.0,1.0}; // white color

glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);

20

Componentes de Luz

A imagem ao lado mostra os efeitos da luz ambiente (canto superior esquerdo), da luz difusa (canto superior direito), luz especular (canto inferior esquerdo), e todas as 3 componentes combinadas (canto inferior direito).

luz ambiente

luz difusa

Direct Illumination
luz especular

21

Sobreviso: modelos baseados na luz


Iluminao

Directa ou Local

Tipos de Luz Fontes de Luz (emisso) Materiais da superfcie dos objectos (reflexo)

Iluminao

Indirecta ou Global
Direct Illumination

Sombras Refraces Reflexes entre objectos

22

Modelo da Reflexo da Luz na Superfcie dum Objecto


R(,,,,)

Descreve a quantidade de energia incidente na superfcie que vem da direco (,) e que reflecte segundo a direco (,) com o comprimento de onda

23

Modelo de Reflexo
Modelo

Analtico Simplificado:

Reflexo difusa + Reflexo especular + Emisso + Ambiente

Baseado no modelo proposto por Phong

24

Reflexo Difusa
Um reflector difuso ideal, a nvel microscpico, uma superfcie muito rugosa (exemplo do mundo real: giz) Devido a estas variaes microscpicas, um raio de luz incidente igualmente reflectido em todas as direces acima do hemisfrio definido pela superfcie. Ou seja, assume-se que a superfcie reflecte igualmente em todas as direces.

superfcie

25

Reflexo Difusa

Como que a luz reflectida?


Depende do ngulo da luz incidente. surface Quanto maior o valor de , menor a quantidade de luz reflectida. A quantidade de luz reflectida depende da posio da fonte de luz e da posio do objecto, mas independente da posio do observador.

surface

surface

26

Reflexo Difusa
Modelo

Lambertiano

I D = K D I cos N .L com cos = = N . L, N L em que N e L so vectores unitrios

Lei dos Cosenos de Lambert (producto interno) A intensidade de luz difusa ID reflectida pela superfcie no ponto P (x,y,z) proporcional ao coseno do L ngulo entre o vector na direco fonte de luz e o vector da normal N superfcie em P(x,y,z). ID = intensidade de luz difusa reflectida I = intensidade da fonte de luz em P(x,y,z) KD = coeficiente de reflexo da superfcie (0<= KD <=1) = entre 0 e 90 graus

N
!
superfcie

ID = KD

N L I

27

Reflexo Especular
Reflexo

mais intensa junto do ngulo de reflexo


Exemplos: espelhos, metais Visvel quando o ngulo da luz incidente igual ao ngulo de luz reflectida em direco ao observador.

N
! !

surface

Quanta

luz vista?
observador

Depende do ngulo da luz incidente e do ngulo ao observador Se o reflector no perfeito, a intensidade da luz reflectida diminui rapidamente quando o ngulo ao observador aumenta relativamente ao ngulo de incidncia.

R
!
surface

N
! !

P
28

Reflexo Especular
Modelo de n (cos )

Phong

I S = K S I (cos ) V .R com cos = = V . R, V R e V e R vectores unitrios

n = expoente de reflexo especular (reflector perfeito n=) IS = intensidade de luz especular reflectida I = intensidade de luz em P(x,y,z) KS = coeficiente de luz especular reflectida (0<= KS <=1) = entre 0 e 90 graus

observador

! V !

N
!

superfcie

n IS = KS V R I

29

Luz emissiva gerada por uma fonte de luz superficial

produzida por uma fonte de luz superficial, no por uma fonte de luz pontual. Representa a luz emitida directamente por um polgono ou disco dum objecto. Isto preciso porque alguns objectos do mundo-real, nomeadamente lmpadas, emitem luz. Assim, se uma lmpada faz parte duma cena, temos de especificar no s a sua fonte de luz posicional, mas tambm que o material da sua superfcie emite luz.

material emissivo (0,0,0,0)

I EL = I E
30

Luz emissiva duma fonte de luz superficial em OpenGL


Pela especificao duma cor RGBA para GL_EMISSION, podemos fazer com que um objecto parea emitir luz daquela cor. Dado que os objectos do mundo-real (excepto luzes) no emitem luz, podemos usar o parmetro GL_EMISSION para simular o funcionamento de lmpadas e outras fontes de luz de uma cena.. Contudo, uma fonte de luz superficial no funciona realmente como uma fonte de luz. Para conseguir tal efeito, necessrio tambm criar uma fonte de luz e posicion-la na mesma posio que o objecto emissivo de luz.

Exemplo: (Luz emissiva a partir do material da superfcie dum objecto)


Glfloat mat_emission[]={0.3,0.2,0.2,0.0}; glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission);

31

Reflexo Ambiente
Representa

a reflexo de toda a iluminao indirecta


Luz ambiente que resulta da iluminao duma cena atravs da luz reflectida pelos objectos existentes na cena. Calcular a luz ambiente duma forma exacta seria muito complicado. Por isso, adopta-se o modelo simplificado que assume que a luz ambiente uniforme em todo o ambiente. IAL = intensidade de luz ambiente reflectida KA = coeficiente de luz ambiente reflectida IA = intensidade de luz ambiente

I AL = K A I A
Isto evita a complexidade da iluminao global! 32

Modelo de Reflexo
Modelo

Analtico Simplificado:

Reflexo difusa + Reflexo especular + Emisso + Ambiente

33

Modelo de Reflexo
Soma

das Componentes Difusa, Especular, Emissiva e Ambiente

34

Clculo da Iluminao da Superfcie


1

Fonte de Luz:
R N
!

observador

! V !

superfcie

I = IE + KAIA + KD

n N L I + KS V R I

35

Clculo da Iluminao da Superfcie


Vrias

Fontes de Luz:

observador

N L2

L1

superfcie
# lights

P
D

I = IE + KAIA +

[K (
i =1

n N Li + K S V Ri ]I i

36

Materiais em OpenGL

As propriedades do material dum objecto definem como ele interage com as fontes de luz por forma a produzir a sua cor final. As propriedades do material so definidas atravs de:

glMaterial{fi}(GLenum face,GLenum pname,T param); glMaterial{fi}v(GLenum face,GLenum pname,T *params);

Os objectos podem ter materiais diferentes para os polgonos visveis (anteriores) e para os polgonos ocultos (posteriores).

37

Propriedades dos Materiais em OpenGL

GL_AMBIENT, GL_DIFFUSE, GL_AMBIENT_AND_DIFFUSE, e GL_SPECULAR so usadas para definir como o material interage com as componentes respectivas da fonte de luz. GL_SHININESS controla o extenso do realce ou brilho especular. GL_EMISSION controla a quantidade de luz que um objecto emite.

38

Cor do Material em OpenGL


Normalmente, quando a iluminao activada, a cor primria (especificada por glColor()) ignorada. Contudo, pode ser conveniente mudar as cores do material atravs de glColor() em vez de usar glMaterial(). Isto possvel se se activar a cor do material com: glEnable(GL_COLOR_MATERIAL);

As componentes de material (ambiente, difusa, ambiente e difusa, ou especular) e as faces (anteriores, posteriores, ou ambas) afectadas pela cor do material podem ser controladas com: glColorMaterial(GLenum face, GLenum mode);

39

Normais em OpenGL

A normal corrente activada com: void glNormal3{bsifd}(TYPE nx, TYPE ny, TYPE nz); void glNormal3{bsifd}v(const TYPE *v); As normais devem ter comprimento unitrio para que os resultados sejam correctos. Se a matriz modelview mudar o comprimento das suas normais, h que renormaliz-los usando: glEnable(GL_NORMALIZE);

Se se variar a escala dum modo uniforme, uma forma alternativa a GL_NORMALIZE : glEnable(GL_RESCALE_NORMAL);
40

The Lighting Model in OpenGL


O modelo de iluminao pode ser modificado usando: void glLightModel{if}(GLenum pname, TYPE param); void glLightModel{if}v(GLenum pname, const TYPE *param);

As propriedades que podemos modificar incluem as seguintes: GL_LIGHT_MODEL_AMBIENT controla a luz ambiente global aplicada a todos os aobjectos GL_LIGHT_MODEL_LOCAL_VIEWER controla se o observador est no infinito (modelo menos aproximado) ou est na posio da cmara (modelo mais aproximado) GL_LIGHT_MODEL_TWO_SIZE controla se a iluminao calculada para as faces anteriores e posteriores separadamente ou no. GL_LIGHT_MODEL_COLOR_CONTROL permite que a OpenGL interpole a cor especular separadamente, aplicando-a ento aps a texturizao, por forma a preservar os brilhos reflexos.
41

Sobreviso: modelos baseados na luz


Iluminao

Directa

ou Local

Tipos de Luz Fontes de Luz (emisso) Materiais da superfcie dos objectos (reflexo)

Iluminao

Indirecta
Global Illumination

ou Global

Sombras Refraces Reflexes entre objectos

FIM
42

You might also like