Upload
hoangtram
View
240
Download
1
Embed Size (px)
Citation preview
Computação Gráfica - 13
Prof. Jorge [email protected]
www.univasf.edu.br/~jorge.cavalcanti
www.twitter.com/jorgecav
Universidade Federal do Vale do São FranciscoCurso de Engenharia da Computação
26/02/2018Computação Gráfica – Parte 12Página 2
• Um modelo de iluminação em CG define a naturezada luz emanada por uma fonte e sua interação comtodos os objetos em cena
• A natureza da luz diz respeito à fonte de luz utilizada.Geralmente 03 tipos de fontes de luz podem serincluídos em uma cena 3D: pontual, direcional e spot.
• Sombreamento está diretamente ligado amanipulação da luz dentro de um modelo de CG.
Iluminação e sombreamento
26/02/2018Computação Gráfica – Parte 12Página 3
• Ondas eletromagnéticas capazes de serem captadaspela visão humana
VermelhoLaranjaAmareloVerdeAzulAnilVioleta
Iluminação
26/02/2018Computação Gráfica – Parte 12Página 4
• Conceitos importantes
– A luz é uma energia eletromagnética
– A intensidade de uma luz emitida diminui em relação inversaao quadrado da distância da fonte de luz
– Energia não se perde, se transforma
– Absorção da luz branca por uma superfície preta
Iluminação
26/02/2018Computação Gráfica – Parte 12Página 5
• Quanto a emissão de luz os objetos podem serclassificados como:
– Fontes de luz própria
– Lâmpadas, lanternas, fogo, sol, etc.
– Caracterizadas pela intensidade, freqüência e direção
– Refletores
– Objetos coloridos
– Propriedades de sua superfície
Iluminação
26/02/2018Computação Gráfica – Parte 12Página 6
• As luzes são classificadas em:
– Ambiental
– Direcional
– Pontual
– Spot
Iluminação
26/02/2018Computação Gráfica – Parte 12Página 7
• Ambiental
– Ilumina igualmente todas as superfícies do ambiente
– Posição da câmera não é importante
Iluminação
26/02/2018Computação Gráfica – Parte 12Página 8
• Fonte Direcional
– Raios paralelos e com mesma intensidade
– Simula os raios solares
– Seu efeito é percebido dependendo da orientação dasuperfície.
Iluminação
26/02/2018Computação Gráfica – Parte 12Página 9
• Fonte Pontual
– Emite luz em todas as direções
– Atinge os objetos com diferentes direções e intensidades
– Iluminação do objeto varia de uma parte para outra,dependendo da direção e da distância da fonte de luz.
Iluminação
26/02/2018Computação Gráfica – Parte 12Página 10
• Fonte Spot
– Semelhante à puntual, porém os raios de luz são emitidos na forma de um cone, apontado para uma direção;
– A intensidade da luz diminui conforme o raio de luz se distancia da fonte.
Iluminação
26/02/2018Computação Gráfica – Parte 12Página 11
Reflexão
• A maioria dos objetos ao nosso redor não emite luz própria, pelo contrário, reflete a radiação neles incidente em diferentes comprimentos de onda.
• A reflexão se deve à interação molecular entre a radiação incidente e o material que compõe a superfície dos objetos.
• Modelos de Reflexão:
– Ambiente
– Difusa
– Especular
Iluminação
26/02/2018Computação Gráfica – Parte 12Página 12
• Refletor Ambiente
– A luz atinge as superfícies igualmente em todas as direções apartir de uma fonte difusa não direcional.
– Em ambientes reais, superfícies que não são iluminadasdiretamente mas sim por luzes geradas por reflexão deoutras superfícies.
– A quantidade de luz refletida depende das propriedades das superfícies.
Iluminação
Fonte de luz
26/02/2018Computação Gráfica – Parte 12Página 13
• Refletor Difuso
– A luz é refletida em diferentes direções.
– Reflexão em objeto com saliências ou foscos.
– Intensidade proporcional à orientação relativa entreincidência de luz e a superfície do objeto.
Iluminação
26/02/2018Computação Gráfica – Parte 12Página 14
• Refletor Especular
– O ângulo de reflexão é igual ao de incidência
– Superfícies polidas, lustradas ou brilhantes
– Gera brilho com a cor da luz, não com a do objeto
Iluminação
26/02/2018Computação Gráfica – Parte 12Página 15
Iluminação
• Ambiente x Difusa x Especular
26/02/2018Computação Gráfica – Parte 12Página 16
Iluminação
• Difusa X Especular
26/02/2018Computação Gráfica – Parte 12Página 17
• Simula o efeito de diferentes intensidades deiluminação sobre um objeto
• Também conhecido como tonalização
• Utiliza as características das fontes de luz e dosobjetos para o cálculo da tonalização
• Inviabilidade da modelagem de todos os conceitosfísicos envolvidos
Sombreamento (Shading)
26/02/2018Computação Gráfica – Parte 12Página 18
• Sombreamento Constante(Flat)
– O cálculo da reflexão da luz é feito apenas uma vez porsuperfície
– Solução mais simples e rápida
– Resulta em uma aparência facetada
Sombreamento (Shading)
26/02/2018Computação Gráfica – Parte 12Página 19
• Sombreamento de Gouraud– O cálculo da reflexão da luz é feita em cada vértice e cada
face é resultado do gradiente entre os vértices
– Interpolação para cálculo dos demais pontos
– Sombreamento mais suave, mais demorada.
Sombreamento (Shading)
26/02/2018Computação Gráfica – Parte 12Página 20
• Sombreamento de Phong
– Adiciona o cálculo dos vetores especulares ao modelo deGouraud
– Produz efeitos mais realistas e é ainda mais demorado
Sombreamento (Shading)
26/02/2018Computação Gráfica – Parte 12Página 21
Resumo: Modelos de Sombreamento
• Determinam quando avaliar a equação correspondente ao modelo de reflexão:
– uma única vez a cada face do objeto (flat)
– para cada vértice das faces (Gouraud)
– para cada ponto das faces (Phong)
26/02/2018Computação Gráfica – OpenGl
Prof. Jorge Cavalcanti - Parte 05Página 22
Iluminação em OpenGl• Definindo os modelos de tonalização (Flat e
Gouraud)– glShadeModel(GLenum mode);
– GL_FLAT – A cor não varia
– GL_SMOOTH – Gouraud, calcula a cor a partir de cadavértice.
• A luz é dividida em quatro componentes que juntasformam o modelo de iluminação– Ambiente – luz que vem de todas as direções
– Difusa – luz direcional que é ao atingir uma superfície érefletida em todas as direções
– Especular - luz direcional que é ao atingir uma superfícietende a refletir em uma única outra direção
– Emissiva – simula a luz que se origina em um objeto. Não éinterferida nem interfere no modelo de iluminação
26/02/2018Computação Gráfica – OpenGl
Prof. Jorge Cavalcanti - Parte 05Página 23
• A iluminação é resultado das propriedadesespecificadas para as fontes de luz e daspropriedades dos materiais que constituem os objetos
– Fontes de Luz
– glLightModefv(GLenum pname, TYPE *param)
– void glLightfv(GLenum light, GLenum pname, TYPE*param);
– Objetos
– void glMaterialfv(GLenum face, GLenum pname, TYPE*param);
Iluminação em OpenGl
26/02/2018Computação Gráfica – OpenGl
Prof. Jorge Cavalcanti - Parte 05Página 24
Propriedades do modelo da iluminação
– void glLightModelfv(GLenum pname, TYPE *param);
– pname – define a característica do modelo de iluminação(valores abaixo)
– param – vetor Glfloat com os valores do tipo especificado empname
Constante Significado
GL_LIGHT_MODEL_AMBIENT Intensidade ambiente RGBA de toda cena.
GL_LIGHT_MODEL_LOCAL_VIEWER Como é feito o processamento dos ângulos dereflexão especular
GL_LIGHT_MODEL_TWO_SIDE Escolha entre a iluminação de um lado ou dosdois lados da face.
GL_LIGHT_MODEL_COLOR_CONTROL Indica quando a reflexão especular é processadaseparadamente da ambiente e da difusa.
Iluminação em OpenGl
26/02/2018Computação Gráfica – OpenGl
Prof. Jorge Cavalcanti - Parte 05Página 25
Propriedades da fonte de luz
– void glLightfv(GLenum light, GLenum pname, TYPE *param);
– ligth – fonte de luz desejada. GL_LIGHT0 a GL_LIGHT7
– pname – característica da luz a ser especificada
– param – vetor Glfloat com os valores do tipo especificado empname
Constante Valor default Significado
GL_AMBIENT (0.0,0.0,0.0,1.0) Cor ambiente da luz
GL_DIFFUSE (1.0,1.0,1.0,1.0) Cor difusa da luz
GL_SPECULAR (1.0,1.0,1.0,1.0) Cor especular da luz
GL_POSITION (0.0,0.0,1.0,0.0) Posição da luz
GL_SPOT_DIRECTION (0.0,0.0,-1.0) Direção da luz spot
GL_SPOTCUTOFF 180.0 Ângulo de corte da luz spot
Iluminação em OpenGl
26/02/2018Computação Gráfica – OpenGl
Prof. Jorge Cavalcanti - Parte 05Página 26
Propriedades de iluminação do material
– void glMaterialfv(GLenum face, GLenum pname, TYPE *param);
– face – quais faces do objeto estão sendo especificadas.GL_FRONT, GL_BACK ou GL_FRONT_AND_BACK
– pname – propriedade do material a ser especificada
– param – vetor Glfloat com os valores da propriedadeespecificada.
Constante (Pname) Valor default Significado
GL_AMBIENT (0.2,0.2,0.2,1.0) Cor ambiente do material
GL_DIFFUSE (0.8,0.8,0.8,1.0) Cor difusa do material
GL_SPECULAR_AND_DIFFUSE (RGBA) Cor ambiente e especular do material
GL_SPECULAR (0.0,0.0,0.0,1.0) Cor especular do material
GL_SHININESS 0.0 Expoente especular (brilho na superfície)
GL_EMISSION (0.0,0.0,0.0,1.0) Cor emissiva do material (luz própria)
Iluminação em OpenGl
26/02/2018Computação Gráfica – OpenGl
Prof. Jorge Cavalcanti - Parte 05Página 27
Exemplo3DComIluminacao.cpp
void Inicializa (void){
// Habilita a definição da cor do material a partir da cor correnteglEnable(GL_COLOR_MATERIAL);//Habilita o uso de iluminaçãoglEnable(GL_LIGHTING); // Habilita a luz de número 0glEnable(GL_LIGHT0);// Habilita o depth-buffering (z-buffer)glEnable(GL_DEPTH_TEST);
// Habilita o modelo de colorização de GouraudglShadeModel(GL_SMOOTH);...
}
Iluminação em OpenGl
26/02/2018Computação Gráfica – OpenGl
Prof. Jorge Cavalcanti - Parte 05Página 28
void DefineIluminacao (void){
GLfloat luzAmbiente[4]={0.2,0.2,0.2,1.0}; GLfloat luzDifusa[4]={0.7,0.7,0.7,1.0}; // "cor" GLfloat luzEspecular[4]={1.0, 1.0, 1.0, 1.0};// "brilho" GLfloat posicaoLuz[4]={0.0, 50.0, 50.0, 1.0};
// Capacidade de brilho do materialGLfloat especularidade[4]={1.0,1.0,1.0,1.0}; GLint especMaterial = 60;
Iluminação em OpenGl
26/02/2018Computação Gráfica – OpenGl
Prof. Jorge Cavalcanti - Parte 05Página 29
// Define a refletância do material glMaterialfv(GL_FRONT,GL_SPECULAR, especularidade);
// Define a concentração do brilhoglMateriali(GL_FRONT,GL_SHININESS,especMaterial);
// Ativa o uso da luz ambiente glLightModelfv(GL_LIGHT_MODEL_AMBIENT, luzAmbiente);
// Define os parâmetros da luz de número 0glLightfv(GL_LIGHT0, GL_AMBIENT, luzAmbiente); glLightfv(GL_LIGHT0, GL_DIFFUSE, luzDifusa );glLightfv(GL_LIGHT0, GL_SPECULAR, luzEspecular );glLightfv(GL_LIGHT0, GL_POSITION, posicaoLuz );
}
Iluminação em OpenGl
26/02/2018Computação Gráfica – OpenGl
Prof. Jorge Cavalcanti - Parte 05Página 30
void Desenha(void)// Limpa a janela de visualização com a cor
// de fundo definida previamenteglClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// Chama a função que especifica os parâmetros de iluminaçãoDefineIluminacao();// Altera a cor do desenho para azulglColor3f(0.0f, 0.0f, 1.0f);// Função da GLUT para fazer o desenho de um "torus" // com a cor correnteglutSolidTorus(20.0, 35.0, 20, 40); // Executa os comandos OpenGLglutSwapBuffers();
}
Códigow exemplo - http://migre.me/1NnCh - http://bit.ly/2GJ3roD
Ver Demo Comandos
• Outro Tutorial – http://bit.ly/LightOGL
Iluminação em OpenGl