Iluminação Para programar um sistema de iluminação, dois passos principais devem ser considerados: c) Que tipo e posição de Iluminação se deseja b) Que.

Slides:



Advertisements
Apresentações semelhantes
Sistemas de Interfaces com o Usuário e Glut/OpenGL
Advertisements

Funções para serem usadas no exercício de Lab
Mauricio Cunha Escarpinati
CRAb – Grupo de Computação Gráfica Departamento de Computação UFC
Computação Gráfica Mapeamento de textura
Perspectivas baseadas em procedimentos e orientadas por objectos Conceitos principais: Encapsulamento, Herança, Polimorfismo (Encapsulation, Hierarchy,
OpenGL Clique para adicionar texto Soraia Musse 6/4/2011.
Silicon Graphics OpenGL - Apresentação
Projeções e OpenGL Alex F. V. Machado.
Introdução a OpenGL (parte final).
Claudio Esperança Paulo Roma Cavalcanti
Introdução à Computação Gráfica OpenGL Básico
Computação Gráfica Interativa - Gattass
Navegador de cenas com openGL e rastreamento de raios
OpenGL Conceitos Básicos
Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.
Sistemas de Interfaces com o Usuário e OpenGL/Glut
OpenGL Alberto B. Raposo.
Computação Gráfica Módulo IV – OpenGL
Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10) Visualização 3D Incluir no FrameWork Básico (na página da disciplina), as.
Funções para serem usadas no exercício de Lab nos dias (18/03/2010 e 24/03/10) Visualização 3D Estruturas de Dados Básica (Global) para Construção de uma.
Callback de Teclado // registro void glutKeyboardFuc(Teclado);
Funções para serem usadas no exercício de Lab Hoje glRotatef(GLfloat angulo, GLfloat x, GLfloat y, GLfloat z) glTranslatef(GLfloat x, GLfloat y, GLfloat.
Laboratório de Computação Gráfica OpenGL
Computação Gráfica: Aula2: Curvas e Superfícies
OpenGL – Uma abordagem prática e objetiva
Vetores, Matrizes e Funções
Introdução + Transformações Geométricas
Computação Gráfica Iluminação e Texturas.
Movimentos de Câmara – Modo Explorador
Computação Gráfica – Transformações Geométricas
Simulação Massa-Mola para Tecidos
Introdução à Computação Gráfica Projeções
Visibilidade em Computação Gráfica
Animações Independentes na Mesma Cena
Tarefa: Implementar o Demo na página da disciplina. Para trabalhar com iluminação em OpenGL, deve-se definir: 1)Vetores de iluminação : Ex: GLfloat luzAmbiente[4]={0.2,0.2,0.2,1.0};
Hugo Siqueira (hlfs) Lauro Mafra Rafael Correa
Transformações Geométricas no Plano e no Espaço
Iluminação e Sombreamento
Computação Gráfica – Visibilidade
Computação Gráfica Mapeamento de textura
Computação Gráfica – Introdução ao OpenGL
Realidade Virtual Aula 6
Computação Gráfica Introdução ao OpenGL.
Computação Gráfica – Iluminação
Introdução à Computação Gráfica OpenGL Básico
COMPUTAÇÃO GRÁFICA E INTERFACES
Computação Gráfica – Iluminação
Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.
Computação Gráfica – Transformações Projetivas
Luiz Fernando Marcio Neves Petrônio Gomes Thiago Monteiro Victor Hazin
Desenhos Tridimensionais
Computação Gráfica – Introdução ao OpenGL
Computação Gráfica – Transformações Geométricas
OpenGL Aula Prática.
Visualização Tridimensional
Viewport.
Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.
Visualização Tridimensional. Quando se trabalha em três dimensões, o SRU (Sistema de Referência do Universo) passa a ser composto por três eixos ortogonais.
Felipe Cavalcanti Ferreira Fernando Valente Kakimoto
Vetores Normais.
Fontes de Luz Uso de Múltiplas fontes de Luz. Fontes de Luz Como trabalhar com múltiplas fontes de luz de diferentes tipos? O programa Exemplo3DMoveFonteDeLuz.cpp.
Manipulação de Imagens em OpenGL
Animação 2D. // Variáveis que guardam a translação que será aplicada // sobre a casinha GLfloat Tx; GLfloat Ty; // Variáveis que guardam os valores mínimos.
Silvânia de Assis Guilherme de Melo Moisés Tadeu Cardoso Isabela de Oliveira Glauber Ataíde Henrique de Araujo 1.
Objetos Predefinidos da GLUT
Iluminação.
Por Anderson Afonso Cardozo UNIVERSIDADE CATÓLICA DE PELOTAS
Superfícies de Bézier Visualização 3D
Transcrição da apresentação:

Iluminação Para programar um sistema de iluminação, dois passos principais devem ser considerados: c) Que tipo e posição de Iluminação se deseja b) Que tipo de Material será iluminado c) Definir que parâmetros deseja usar nas luzes

Para definir o Tipo e posição de Iluminação GLfloat luzAmbiente[4] = {0.2,0.2,0.2,1.0}; // como deseja uma luz ambiente GLfloat luzDifusa[4] = {0.7,0.7,0.7,1.0}; // “como deseja uma luz difusa GLfloat luzEspecular[4] = {1.0, 1.0, 1.0, 1.0}; // como deseja uma luz especular GLfloat posicaoLuz[4] = {0.0, 50.0, 50.0, 1.0}; // posição da luz

// Capacidade de brilho do material GLfloat especularidade[4] = {1.0,1.0,1.0,1.0}; Glint especMaterial = 60; // Define a refletância do material glMaterialfv(GL_FRONT,GL_SPECULAR, especularidade); // Define a concentração do brilho glMateriali(GL_FRONT,GL_SHININESS,especMaterial);

Iluminação // Função responsável pela especificação dos parâmetros de iluminação 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 material GLfloat especularidade[4]={1.0,1.0,1.0,1.0}; GLint especMaterial = 60; Continua no outro slide ….

// Define a refletância do material glMaterialfv(GL_FRONT,GL_SPECULAR, especularidade); // Define a concentração do brilho glMateriali(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 0 glLightfv(GL_LIGHT0, GL_AMBIENT, luzAmbiente); glLightfv(GL_LIGHT0, GL_DIFFUSE, luzDifusa ); glLightfv(GL_LIGHT0, GL_SPECULAR, luzEspecular ); glLightfv(GL_LIGHT0, GL_POSITION, posicaoLuz ); }

// Função callback de redesenho da janela de visualização void Desenha(void) { // Limpa a janela de visualização com a cor // de fundo definida previamente glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Chama a função que especifica os parâmetros de iluminação DefineIluminacao(); // Altera a cor do desenho para azul glColor3f(0.0f, 0.0f, 1.0f); // Função da GLUT para fazer o desenho de um "torus" // com a cor corrente glutSolidTorus(20.0, 35.0, 20, 40); // Executa os comandos OpenGL glutSwapBuffers(); }

// Função usada para especificar a posição do observador virtual void PosicionaObservador(void) { // Especifica sistema de coordenadas do modelo glMatrixMode(GL_MODELVIEW); // Inicializa sistema de coordenadas do modelo glLoadIdentity(); DefineIluminacao(); // Posiciona e orienta o observador glTranslatef(-obsX,-obsY,-obsZ); glRotatef(rotX,1,0,0); glRotatef(rotY,0,1,0); }

// Função usada para especificar o volume de visualização void EspecificaParametrosVisualizacao(void) { // Especifica sistema de coordenadas de projeção glMatrixMode(GL_PROJECTION); // Inicializa sistema de coordenadas de projeção glLoadIdentity(); // Especifica a projeção perspectiva(angulo,aspecto,zMin,zMax) gluPerspective(angle,fAspect,0.5,500); PosicionaObservador(); }

// Função callback chamada para gerenciar eventos de teclas normais (ESC) void Teclado (unsigned char tecla, int x, int y) { if(tecla==27) // ESC ? exit(0); }

// Função callback para tratar eventos de teclas especiais void TeclasEspeciais (int tecla, int x, int y) { switch (tecla) case GLUT_KEY_HOME: if(angle>=10) angle -=5; break; case GLUT_KEY_END: if(angle<=150) angle +=5; } EspecificaParametrosVisualizacao(); glutPostRedisplay();

// Função callback chamada quando o tamanho da janela é alterado void AlteraTamanhoJanela(GLsizei w, GLsizei h) { // Para previnir uma divisão por zero if ( h == 0 ) h = 1; // Especifica as dimensões da viewport glViewport(0, 0, w, h); // Calcula a correção de aspecto fAspect = (GLfloat)w/(GLfloat)h; EspecificaParametrosVisualizacao(); }

// Função responsável por inicializar parâmetros e variáveis void Inicializa (void) { // Define a cor de fundo da janela de visualização como branca glClearColor(1.0f, 1.0f, 1.0f, 1.0f); // Habilita a definição da cor do material a partir da cor corrente glEnable(GL_COLOR_MATERIAL); //Habilita o uso de iluminação glEnable(GL_LIGHTING); // Habilita a luz de número 0 glEnable(GL_LIGHT0); // Habilita o depth-buffering glEnable(GL_DEPTH_TEST); // Habilita o modelo de colorização de Gouraud glShadeModel(GL_SMOOTH); // Inicializa a variável que especifica o ângulo da projeção // perspectiva angle=45; // Inicializa as variáveis usadas para alterar a posição do // observador virtual rotX = 0; rotY = 0; obsX = obsY = 0; obsZ = 150; }

// Programa Principal int main(void) { // Define o modo de operação da GLUT // Especifica a posição inicial da janela GLUT // Especifica o tamanho inicial em pixels da janela GLUT // Cria a janela passando como argumento o título da mesma // Registra a função callback de redesenho da janela de visualização // Registra a função callback de redimensionamento da janela de visualização // Registra a função callback para tratamento das teclas normais // Registra a função callback para tratamento das teclas especiais // Registra a função callback para eventos de botões do mouse // Registra a função callback para eventos de movimento do mouse // Chama a função responsável por fazer as inicializações // Inicia o processamento e aguarda interações do usuário glutMainLoop(); return 0; }