1 / 13

Iluminaçã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.

lucas-craig
Download Presentation

Iluminação

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Iluminação • Para programar um sistema de iluminação, doispassosprincipaisdevem ser considerados: c) Quetipo e posição de Iluminação se deseja b) Quetipo de Material seráiluminado c) Definirqueparâmetrosdesejausarnasluzes

  2. 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

  3. // 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);

  4. 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 ….

  5. // 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 ); }

  6. // 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(); }

  7. // 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); }

  8. // 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(); }

  9. // 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); }

  10. // 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; break; } EspecificaParametrosVisualizacao(); glutPostRedisplay(); }

  11. // 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(); }

  12. // 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; }

  13. // 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; }

More Related