Autor: Eduarda | Publicado: 2011-05-09T08:03:00-07:00

Descrição O objetivo do primeiro trabalho de implementação da disciplina de Computação Gráfica é escrever um programa capaz de modelar e manipular malhas de polígonos, utilizando a biblioteca OpenGL. As seguintes funcionalidades devem ser implementadas:Especifique uma câmera virtual com a posição e orientação arbitrárias;Use o buffer de profundidade para a obtenção de oclusão adequada na renderização final;Utilizar diferentes primitivas para desenhar os objetos.Realizar backface abate para reduzir o número de primitivos realmente tirados;Criar efeitos de sombreamento;Efeitos de zoom.Implementação   Para a implementação do trabalho foi desenvolvido um programa em C++, utilizando o ambiente de desenvolvimento Visual C++ e as bibliotecas do OpenGL. Foram criadas duas classes, InterfaceUsuario e Objetos.    A classe InterfaceUsuario é responsável por captar os eventos do teclado e da interface gráfica e executar os comandos correspondentes. A classe Objetos é responsável por realizar a leitura do arquivo, que contém o objeto, criação e manipulação dos poligonos. O trabalho foi divido em tarefas, de A a H, conforme a especificação.a) Ler e exibir modelos geométricos, armazenadas em um arquivo, utilizando malha de triângulos.   Para o desenvolvimento desta funcionalidade, foi utilizado o código exemplo contido na descrição do trabalho. Foi criado um método Leitura(char *FileName) que recebe um arquivo de texto como parâmetro e, através da leitura do arquivo, instanciar a malha de poligonos. Utiliza-se uma struct chamada Triangulos para armazenar as informações contidas no do arquivo. Nessa struct, são armazenadas as configurações dos poligonos: coordenadas dos vértices, normal, face da normal e cor. As coordenadas de iluminação são armazenadas em três structs distintas: diffuse, ambient e specular.b) Transladar a câmera em x, y e z.  Para transladar os objetos foram criados eventos de teclado, presentes na biblioteca OpenGL, da seguinte forma:  Transladar no eixo X para esquerda: utiliza a tecla "esquerda" (GLUT_KEY_LEFT) e translada de 0.1 em 0.1;Transladar no eixo X para direita: utiliza a tecla de navegação direita, GLUT_KEY_RIGHT em OpenGL, e translada de 0.1 em 0.1;Transladar no eixo Y para cima: utiliza a tecla de navegação up, GLUT_KEY_UP em OpenGL, e translada de 0.1 em 0.1;Transladar no eixo Y para baixo: utiliza a tecla de navegação down, GLUT_KEY_DOWN em OpenGL, e translada de 0.1 em 0.1.Transladar no eixo Z para frente: utiliza a tecla de navegação Page Up, GLUT_KEY_PAGE_UP em OpenGL, e translada de 0.1 em 0.1.Transladar no eixo Z para tras: utiliza a tecla de navegação Page Down, GLUT_KEY_PAGE_DOWN em OpenGL, e translada de 0.1 em 0.1.Transladar a camera ao longo dos eixos, olhando para o centro do objeto.Para transladar os objetos, utilizou-se a interface gráfica para os eixos x e y e evento de teclado para z.c) Rotacionar a camera ao longo dos eixos.   É possível rotacionar os objetos de duas formas. Utiliza-se a interface gráfica para indicar a que grau o objeto deve ser rotacionado em x, y ou z. Utiliza-se um evento de teclado para rotacionar a camera de 90 em 90 graus, utilizando as teclas x para rotacionar em relação ao eixo x, y para rotacionar em relação ao eixo y e w para rotacionar em relação ao eixo z.d) Resetar a camera para a sua posição original. O botão Reset, da interface gráfica, de ser clicada para retornar a câmera para a sua posição original.e) Fazer backface culling, utilizando CW (clockwise) ou CCW (counter clockwise).    Para fazer o backface culling do objeto, utiliza-se a interface gráfica do programa. Para implementar essa função, foi utilizada as seguintes funções do OpenGL:   Clockwise   glEnable(GL_CULL_FACE); glFrontFace(GL_CCW);  Counter clockwise   glEnable(GL_CULL_FACE);   glFrontFace(GL_CW);f) Modificar os valores de near and far.   Utiliza-se a interface gráfica para modificar os valores de near and far.g) Modificar as cores do objeto e ativar iluminação.   É possível modificar as cores do objeto através da interface gráfica, modificando os valores de R, G e B. Para fazer a iluminação do objeto é possível escolher através da interface gráfica entre 4 tipos de iluminação: ambiente, especular, difusa ou utilizar todas ao mesmo tempo.&lt;   h) Interface Gráfica Através da interface é possível manipular os objetos e buscar outros arquivos de imagens. Utiliza-se o botão Buscar Arquivo para carregar novos arquivos de imagens.