Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare uma empresa Scribd logo
Introdução à Computação Gráfica
           Iluminação

    Adaptação:   João Paulo Pereira
                 António Costa
    Autoria:     Claudio Esperança
                 Paulo Roma Cavalcanti
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Componentes do
                      Modelo de Phong




             Difusa   Especular   Ambiente
21-11-2007                                   16
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
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
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
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
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
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
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
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                                             EL
                                                H  normalizar         
                                                                2 
                                                   normalizar E  L 

21-11-2007                                                                  24
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
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

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 EL 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