Iluminação Márcio Bueno {cgtarde,cgnoite}@marciobueno.com) Fonte: Material do Pro. Claudio Esperança e do Pro. Paulo Roma Cavalcanti
Iluminação Estudo de como a luz interage com objetos de uma cena Emissão Transmissão Absorção Reração Relexão 2 Computação Gráica - Márcio Bueno
Modelo Físico Luz modelada como radiação eletromagnética Leva em conta todas as interações (todos os caminhos da luz) Intratável computacionalmente 3 Computação Gráica - Márcio Bueno
Modelos de Iluminação Tipicamente, a luz é amostrada em um número discreto de primárias (comprimentos de onda) Modelos locais (primeira ordem) Apenas caminhos do tipo onte luminosa superície olho são tratados Simples Ex.: OpenGL Modelos globais Muitos caminhos (ray tracing, radiosidade) Complexos 4 Computação Gráica - Márcio Bueno
Modelo de Booknight Considera apenas a relexão diusa. Iluminação recebida em um ponto de uma superície é reletida uniormemente em todas as direções Contribuição proveniente da iluminação recebida de orma indireta é modelada como uma constante. Baseia-se apenas na relexão lambertiana. 5 Computação Gráica - Márcio Bueno
Iluminação Diusa Característica de materiais oscos. Lei de Lambert (luxo de energia): a luminosidade aparente da superície não depende da posição do observador, mas apenas do cosseno do ângulo entre a normal e a direção da luz 6 Computação Gráica - Márcio Bueno
Modelo Diuso Intensidade em um ponto p é dada por: ) ( cos N L N L k I k I k I k I I d d a a d d a a p N L p 7 Computação Gráica - Márcio Bueno
Iluminação Especular Simula a relexão à maneira de um espelho (objetos altamente polidos). Depende da disposição entre observador, objeto e onte de luz. Em um espelho pereito, a relexão se dá em ângulos iguais Observador só enxergaria a relexão de uma onte pontual se estivesse na direção certa. No modelo de Phong, simulam-se reletores impereitos assumindo que luz é reletida segundo um cone cujo eixo passa pelo observador. 8 Computação Gráica - Márcio Bueno
Modelo de Phong Contribuição especular é dada por I n p Ieke cos I e k e R E ( R E ) n N R E p L 9 Computação Gráica - Márcio Bueno
Coeiciente de Especularidade Indica quão polida é a superície Espelho ideal tem especularidade ininita Na prática, usam-se valores entre 5 e 100 10 Computação Gráica - Márcio Bueno
Componentes do Modelo de Phong Emissão: contribuição que não depende de ontes de luz (luorescência) Ambiente: contribuição que não depende da geometria Diusa: contribuição correspondente ao espalhamento da relexão lambertiana (independe da posição do observador) Especular: contribuição reerente ao comportamento de superícies polidas 11 Computação Gráica - Márcio Bueno
Componentes do Modelo de Phong I p I k I k L, N I k H, a a d d e e N n 12 Diusa Especular Ambiente
Iluminação em OpenGL Assume ontes pontuais de luz Onidirecionais Spot Interações de luz com superície modeladas em componentes (modelo de Phong): Emissão Ambiente Diusa Especular 13 Computação Gráica - Márcio Bueno
Iluminação em OpenGL Suporte a eeitos atmoséricos como: Fog Atenuação Modelo de iluminação é computado apenas nos vértices dos polígonos. Suporta Gouraud shading Cor dos pixels no interior dos polígonos é obtida por interpolação linear. 14 Computação Gráica - Márcio Bueno
Fontes de Luz Para ligar uma onte: glenable (source); source é uma constante cujo nome é GL_LIGHT i, 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); 15 Computação Gráica - Márcio Bueno
Fontes de Luz Para conigurar as propriedades de cada onte: gllightv(source, property, value); Property é uma constante designando: Coeicientes de cor usados no modelo de iluminação: GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR Geometria da onte GL_POSITION, GL_SPOT_DIRECTION, GL_SPOT_CUTOFF, GL_SPOT_EXPONENT Coeicientes de atenuação GL_CONSTANT_ATTENUATION, GL_LINEAR_ATTENUATION, GL_QUADRATIC_ATTENUATION 16 Computação Gráica - Márcio Bueno
Propriedades de Material Especiicados por glmaterialv (ace, property, value) Face designa quais lados da superície se quer conigurar: 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 17 Computação Gráica - Márcio Bueno
Geometria Além das propriedades da luz e do material, a geometria do objeto também é importante A posição dos vértices com relação ao olho e à onte luminosa contribui no cálculo dos eeitos atmoséricos A normal é undamental Não é calculada automaticamente Precisa ser especiicada com glnormal () 18 Computação Gráica - Márcio Bueno
Computando o Vetor Normal Triângulo Dados três vértices, n normalizar (( A B) ( C A)) B A C Polígono planar Uma opção é usar a órmula do triângulo para quaisquer 3 vértices Sujeito a erros (vetores pequenos ou quase colineares) Outra opção é determinar a equação do plano ax + by + cz + d = 0 Normal tem coordenadas (a, b, c) 19 Computação Gráica - Márcio Bueno
Calculando o Vetor Normal de Superícies Implícitas Normal é dada pelo vetor gradiente z y x n z y x / / / 0 ),, ( (x,y,z) = c 2 (x,y,z) = c 1 (x,y,z) = c 3 20 Computação Gráica - Márcio Bueno
Calculando o Vetor Normal de Superícies Paramétricas u Normal é dada pelo produto vetorial dos gradientes em relação aos parâmetros u e v v v v u u u v u n v u v u v u P z y x z y x z y x / / / / / / ), ( ), ( ), ( v n 21 Computação Gráica - Márcio Bueno
Iluminação Ambiente Componente que modela como uma constante o eeito da relexão de outros objetos do ambiente Depende dos coeicientes GL_AMBIENT tanto das ontes luminosas quanto dos materiais É ainda possível usar luminosidade ambiente não relacionada com ontes luminosas gllightmaterialv (GL_LIGHT_MODEL_AMBIENT, params) Contribuição é dada por A I a k a 22 Computação Gráica - Márcio Bueno
Atenuação Para ontes de luz posicionais (w = 1), é possível deinir um ator de atenuação que leva em conta a distância d entre a onte de luz e o objeto sendo iluminado Coeicientes são deinidos pela unção gllight () Por deault, não há atenuação (c 0 =1, c 1 =c 2 =0) aten c 0 1 c d c 1 2 d 2 23 Computação Gráica - Márcio Bueno
Juntando tudo A atenuação só é aplicada sobre às componentes diusa e especular. A órmula que calcula a cor de um vértice devida a uma onte luminosa i é dada por: C i A i aten D i S i Portanto, no total, a cor é dada pela contribuição da iluminação ambiente (parcela não associada com ontes de luz) somada à luz emitida e às contribuições C i C Amb E A i aten D i S i 24 Computação Gráica - Márcio Bueno