Aula Prática: Exercícios para o T2 Disciplina: Computação Gráfica Professores: Isabel Harb Manssour e Marcelo Cohen
O objetivo desta aula é aprender como utilizar a biblioteca OBJLoader, que é responsável por carregar e exibir arquivos obj, e praticar a animação de objetos. Além desta biblioteca, também será utilizada a JOGL e a linguagem de programação Java.

Para implementação de aplicações com JOGL na linguagem de programação Java é necessário configurar um projeto para linkar as bibliotecas. Na primeira aula prática já foi explicado como configurar o projeto para o ambiente Eclipse. Entretanto, além de criar um novo projeto no drive H, configurá-lo conforme explicado, também será necessário incluir o arquivo OBJLoader.jar, contendo as classes da biblioteca. Clicando aqui, é possível fazer o download do arquivo que contém o .jar da biblioteca, bem como de vários arquivos .obj que poderão ser utilizados nesta aula e no trabalho 2. Para facilitar, deixe os arquivos .obj na pasta do projeto (junto com os programas fonte), ou crie uma pasta para eles.

Para utilização desta biblioteca, há um conjunto de classes e métodos disponíveis. Os mais importantes são:

- Carga de um modelo no formato .obj:

    // pathname do arquivo (SEM .obj), tamanho máximo, objeto GL e true/false para exibir diversas informações
    model = new OBJModel(filename, maxSize, gl, true);

O tamanho máximo especifica um fator de escala a ser aplicado: as dimensões do objeto são medidas durante a carga, e este é reduzido ou aumentado de maneira que a sua maior dimensão seja igual a esse parâmetro. Recomenda-se utilizar o valor 1.

- Desenho de um objeto já carregado:

    gl.glDisable(GL.GL_COLOR_MATERIAL); // Necessário se você estiver usando GL_COLOR_MATERIAL
    model.drawList(gl);      // Desenha o objeto
    gl.glEnable(GL.GL_COLOR_MATERIAL); // Necessário se você estiver usando GL_COLOR_MATERIAL

Operações de escala, rotação e translação podem ser aplicadas nos objetos antes deles serem desenhados. Valem os mesmos cuidados no uso de gl.glPushMatrix() e gl.glPopMatrix().

A primeira tarefa consiste em compilar e executar o programa que exemplifica a utilização desta biblioteca: as classes ExemploObj e Renderer2D. A imagem abaixo deverá ser apresentada:

Observe como foram implementados os métodos init e display. Agora experimente carregar outros objetos. Depois, escolha dois objetos (de preferência, dois aviões) para serem exibidos.

Agora experimente fazer os aviões andarem da esquerda para a direita, e da direita para a esquerda de forma alternada (ex: enquanto um está do lado esquerdo indo para o lado direito, o outro está do lado direito indo para o lado esquerdo). Utilize variáveis para controlar uma transformação geométrica de translação (por exemplo, veja a implementação da aula prática de transformações geométricas 2D), e lembre que quando o avião muda de sentido, ele deve ser rotacionado para não andar "de ré".

Comentários, dúvidas, sugestões, envie um mail para seu professor.

Última alteração em 03 de junho de 2008.