| Projeto Corrida | ||||||||||||||||||||||||
| Home Page Versao 0.1 Versão 0.2 e 0.3 Imagens Finais | ||||||||||||||||||||||||
| Disciplina: IA725 - Computação Gráfica Professora: Dr. Wu Shin Ting Autores: Marcio Mendonça Ana Claudia Cardoso Versão 0.2 e 0.3 : Versão com Iluminação e Textura. Descrição Técnica: Este programa foi desenvolvido utilizando Borland C++ e a biblioteca gráfica OpenGL na plataforma Microsoft Windows. Descrição das Teclas de Movimentação: Serão utilizadas as seguintes teclas de movimentação do jogo: 'm' ou 'M' - para habilitar as setas de movimentação (esquerda, direita, p. cima, p. baixo) Setas -> por default giram a cena -> após pressionar 'm' (toggle) movem a cena As seguintes teclas são utilizadas para mostrar os seguintes efeitos. 'o' ou 'O' - alterna entre projeção ortográfica e perspectiva 'e' ou 'E' - alterna entre apresentar ou não os eixos coordenados 'p' ou 'P' - para aumentar ou diminuir a profundidade (Zoom in/Zoom out) 'x' ou 'X' - para rotacionar em torno do eixo X 'y' ou 'Y' - para rotacionar em torno do eixo Y 'z' ou 'Z' - para rotacionar em torno do eixo Z 'w' ou 'W' - alterna entre wireFrame e Cheio 'i' ou 'I' - alterna entre iluminação/sem iluminação 't' ou 'T' - alterna entre textura/sem textura teclas de 1 a 8 -> controlam os níveis de iluminação (simula fases do dia) 1 -> mais iluminado 8 -> mais escuro Codigo fonte: Codigo fonte da versao 0.2 e 0.3(foi utilizada a biiblioteca glaux.lib) Codigo executável: Codigo executável da versao 0.2 e 0.3 Images utilizadas como Textura: Diretório Imagens do jogo: A seguir temos algumas imagens do projeto. Mais imagens podem ser conferidas atraves deste link. |
||||||||||||||||||||||||
| Figura 1 : Imagem Superior em wireFrame | ||||||||||||||||||||||||
| Figura 2 : Imagem inclinada com cores e Iluminação | ||||||||||||||||||||||||
| Figura 3 : Vista Superior com cores e iluminação. | ||||||||||||||||||||||||
| Figura 4 : Vista Superior com textura | ||||||||||||||||||||||||
| Figura 5 : Vista inclinada com textura | ||||||||||||||||||||||||
| Iluminação: Inicialmente, é preciso definir o modelo de colorização que será utilizado. OpenGL fornece dois modelos: um polígono preenchido pode ser desenhado com uma única cor (GL_FLAT), ou com uma variação de tonalidades (GL_SMOOTH, também chamado de modelo de colorização de Gouraud [Foley 1990]). A função glShadeModel() é usada para especificar a técnica de colorização desejada. Quando objetos 3D sólidos são exibidos, é importante desenhar os objetos que estão mais próximos do observador (ou posição da câmera), eliminando objetos que ficam "escondidos", ou "parcialmente escondidos", por estes. Sendo assim,algoritmos de remoção de elementos escondidos foram desenvolvidos para determinar as linhas, arestas, superfícies ou volumes que são visíveis ou não para um observador localizado em um ponto específico no espaço. A complexidade do problema dos elementos ocultos resultou em um grande número de soluções na Computação Gráfica. Conforme descrito por [Woo 1999], OpenGL possui um depth buffer que trabalha através da associação de uma profundidade, ou distância, do plano de visualização (geralmente o plano de corte mais próximo do observador) com cada pixel da window. Inicialmente, os valores de profundidade são especificados para serem o maior possível através do comando glClear(GL_DEPTH_BUFFER_BIT). Entretanto, habilitando o depth-buffering através dos comandos glutInitDisplayMode(GLUT_DEPTH | ...) e glEnable(GL_DEPTH_TEST), antes de cada pixel ser desenhado é feita uma comparação com o valor de profundidade já armazenado. Se o valor de profundidade for menor (está mais próximo) o pixel é desenhado e o valor de profundidade é atualizado. Caso contrário as informações do pixel são desprezadas. Em OpenGL a cor de uma fonte de luz é caracterizada pela quantidade de vermelho (R), verde (G) e azul (B) que ela emite, e o material de uma superfície é caracterizado pela porcentagem dos componentes R, G e B que chegam e são refletidos em várias direções. No modelo de iluminação a luz em uma cena vem de várias fontes de luz que podem ser "ligadas" ou "desligadas" individualmente. A luz pode vir de uma direção ou posição (por exemplo, uma lâmpada) ou como resultado de várias reflexões (luz ambiente - não é possível determinar de onde ela vem, mas ela desaparece quando a fonte de luz é desligada). No modelo de iluminação OpenGL a fonte de luz tem efeito somente quando existem superfícies que absorvem e refletem luz. Assume-se que cada superfície é composta de um material com várias propriedades. O material pode emitir luz, refletir parte da luz incidente em todas as direções, ou refletir uma parte da luz incidente numa única direção, tal com um espelho. Então, conforme descrito por [Woo 1999], OpenGL considera que a luz é dividida em quatro componentes independentes (que são colocadas juntas): Ambiente: resultado da luz refletida no ambiente; é uma luz que vem de todas as direções; Difusa: luz que vem de uma direção, atinge a superfície e é refletida em todas as direções; assim, parece possuir o mesmo brilho independente de onde a câmera está posicionada; Especular: luz que vem de uma direção e tende a ser refletida numa única direção; Emissiva: simula a luz que se origina de um objeto; a cor emissiva de uma superfície adiciona intensidade ao objeto, mas não é afetada por qualquer fonte de luz; ela também não introduz luz adicional da cena. A cor do material de um objeto depende da porcentagem de luz vermelha, verde e azul incidente que ele reflete. Assim como as luzes, o material possui cor ambiente, difusa e especular diferentes, que determinam como será a luz refletida. Isto é combinado com as propriedades das fontes de luz, de tal maneira que a reflexão ambiente e difusa definem a cor do material. A especular é geralmente cinza ou branca. Texturização: Imagens podem ser representadas por bitmaps ou pixmaps (pixel maps). Um pixmap pode ser visto como uma região retangular, composta de um certo número de linhas e de colunas, onde cada posição contém informações sobre o pixel ali representado (cor, profundidade). Links de apoio: - Iluminação - Texturização |
||||||||||||||||||||||||