INF01009 - Trabalho de Implementação
Nº 1
Definição:
Data de Divulgação: 07/04/2008
Data para Entrega : 16/04/2008
- Renderizando modelos geométricos arbitrários (malhas triangulares) no centro
da janela
- Realizando translações e rotações de câmera ao redor de seus eixos
- Explorando cores em OpenGL
- Explorando o relacionamento entre near e far clipping planes e
o efeito na resolução do buffer de profundidade
- Utilizando uma GUI (Graphics User Interface)
- Renderizando modelos cujos vértices encontram-se orientados nos sentidos
horário e anti-horário
Link
para descrição completa do trabalho
Pontos a serem
implementados:
(a) Read
and display arbitrary geometric models represented as triangle meshes. These
objects are described in text files whose layout will be presented next. Once
you read the objects, these should be displayed in the center of the window (20 points);
(b) Translate the virtual
camera along its own axes (u, v, n) (not along the world coordinate system
axes) (7.5
points);
(c) Translate the virtual
camera along its own axes, while looking at the center of the object (7.5points);
(d) Rotate the virtual camera
along its own axes (15
points);
(e) Reset the camera to its
original position (i.e., object centered inside the window) (5 points);
(f) Support for rendering
objects whose polygon vertices were defined using CW (clockwise) and CCW
(counter clockwise) orientation (5 points);
(g) Support for changing the
values of the near and far clipping planes (5 points);
(h) Support for interactive
change of colors (R, G, B) for the models (12.5 points);
(i) Graphics user interface
(GUI) (15
points);
(j) Support for reading a new
model file through the user interface (7.5 points).
Dificuldades
Encontradas:
- A implementação da GUI levou um tempo
considerável pois não tinha muito conhecimento de como fazer isso (pelo menos
não usando OpenGL junto). Depois descobri como usar a glui e os problemas foram resolvidos.
- A GUI também proporcionou alguns problemas
ao ligá-la ao programa real, principalmente ao se carregar um novo arquivo. Mas
depois de um curto espaço de tempo isso também foi resolvido.
- Obtive ajuda com o meu colega Kao para o item (d), que me
indicou o uso de quartenions e também me ajudou a implementar esta solução.
- Tentei implementar meu próprio parser para o
arquivo de entrada, porém desisti após algumas tentativas frustradas e decidi
usar o exemplo dado na descrição completa do trabalho.
Imagens
dos resultados obtidos:

Gui
do programa



Zoom, translação e
rotação da vaca

A Vaca colorida



A vaca em três
momentos: Nuvem de pontos, WireFrame e sem iluminação
Voltar
para Trabalhos
de Implementação