30
Computação Gráfica - 13 Prof. Jorge Cavalcanti [email protected] www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação

Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti [email protected]

Embed Size (px)

Citation preview

Page 1: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 2: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 3: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

26/02/2018Computação Gráfica – Parte 12Página 3

• Ondas eletromagnéticas capazes de serem captadaspela visão humana

VermelhoLaranjaAmareloVerdeAzulAnilVioleta

Iluminação

Page 4: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 5: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 6: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

26/02/2018Computação Gráfica – Parte 12Página 6

• As luzes são classificadas em:

– Ambiental

– Direcional

– Pontual

– Spot

Iluminação

Page 7: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 8: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 9: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 10: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 11: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 12: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 13: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 14: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 15: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

26/02/2018Computação Gráfica – Parte 12Página 15

Iluminação

• Ambiente x Difusa x Especular

Page 16: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

26/02/2018Computação Gráfica – Parte 12Página 16

Iluminação

• Difusa X Especular

Page 17: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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)

Page 18: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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)

Page 19: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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)

Page 20: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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)

Page 21: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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)

Page 22: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 23: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 24: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 25: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 26: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 27: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 28: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 29: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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

Page 30: Computação Gráfica - 13 - Início — UNIVASF Universidade …jorge.cavalcanti/comput_graf13_Iluminacao.pdf · Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

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