Trabalhos de Laboratório a serem implementados nas aulas práticas.

Entregar um relatório sucinto no final de cada aula prática, relatando as principais funções implementadas a partir dos exemplos do livro do OpenGL. Este relatorio nao vale nota diretamente, mas sera considerado como ate um ponto caso o aluno precise de nota no final, a criterio do instrutor.



1. Implementar diretamente os exemplos, sem modificar, e ver seus efeitos. Tempo estimado: 20 minutos.
Example 3-1 : Transformed Cube: cube.c
Example 3-5 : Wireframe Sphere with Two Clipping Planes: clip.c
2. Troque o comando gluLookAt() no Example 3-1 para a transformação de modelagem glTranslatef() com parâmetros (0.0, 0.0, -5.0). Obs: o resultado deve ser exatamente o mesmo que usando o gluLookAt(). Pense: por que os efeitos são o mesmo? Mude também os parâmetros do gluLookAt() (lookfrom, lookat e vup) para ver seus efeitos.

3. Mude o comando glFrustum() no Example 3-1 para o mais comumente usado (Utility Library routine) gluPerspective() com parâmetros (60.0, 1.0, 1.5, 20.0). Então, experimente usar diferentes valores, especialmente para fovy e aspect (dois primeiros parametros).

4. Tente mudar os coeficientes que descrevem os planos de corte no Example 3-5. Aplique uma transformação de modelagem, tal como glRotate*(), para alterar glClipPlane(). Faça o plano de corte mover independentemente dos objetos na cena.


  • Aula prática (Visualizacao e Transformacoes)

  • Implementar diretamente os exemplos, sem modificar, e ver seus efeitos. Estudar o codigo de cada exemplo e gerar um relatorio sucinto ao final da aula pratica, descrevendo as principais funcoes de cada exemplo.
    Example 3-6 : Planetary System: planet.c
    Example 3-7 : Robot Arm: robot.c
    Example 3-8 : Reversing the Geometric Processing Pipeline: unproject.c
    Se sobrar tempo:
    Modificar o Example 3-7 adicionando segmentos adicionais ao braço robótico.
    Modificar o Example 3-7 adicionando segmentos adicionais a mesma pocicao. Por exemplo, colocar varios dedos na ponta do braco (pulso). Sugestao: Use glPushMatrix() e glPopMatrix() para salvar e restaurar a posicao e orientacao do sistema de coordenadas no pulso. Ou seja, se voce vai desenhar dedos no pulso, voce precisa salvar a matriz corrente antes do posicionamento de cada dedo e restaurar a matriz corrente apos cada dedo seja desenhado.

  • Aula prática (Iluminacao)

  • 1. Implementar diretamente os exemplos, sem modificar, e ver seus efeitos. Estudar o codigo de cada exemplo e gerar um relatorio sucinto ao final da aula pratica, descrevendo as principais funcoes de cada exemplo.
    Example 5-1 : Drawing a Lit Sphere: light.c
    Example 5-6 :  Moving a Light with Modeling Transformations: movelight.c
    Example 5-9 :  Using glColorMaterial(): colormat.c
    2. Modificar o exemplo 5-6 da seguinte maneira: faça a luz transladar, passando do objeto, ao invés de rotationar ao redor dele. Sugestão: use glTranslated() no lugar do primeiro glRotated() na display(), e escolha um valor apropriado para usar no lugar de spin. Mude o valor de atenuação de modo que a luz decresce a intensidade quando a luz move para longe do objeto. Sugestão: adicione chamadas a glLight*() para acertar os parametros de atenuação desejados.
    3. Modificar o exemplo 5-8 da seguinte maneira: mude o valor global da luz ambiente na cena. Sugestão: altere o parametro GL_LIGHT_MODEL_AMBIENT. Mude os coeficientes de reflexão difusa, ambiente e especular, e o (expoente shineness) de espalhamento e a cor de emissão. Sugestão: use glMaterial*() mas evite chamadas excessivas.

  • Aula prática (modelos de iluminacao)

  • 1. Implementar diretamente os exemplos, sem modificar, e ver seus efeitos (gerar um relatorio ao final da aula).
    Example 4-1 : Drawing a Smooth-Shaded Triangle: smooth.c
    Example 5-1 : Drawing a Lit Sphere: light.c
    2. Modificar o exemplo 4-1 colocando FLAT no lugar de SMOOTH e tente entender o que acontece (nao precisa colocar no relatorio).

  • Aula prática (texturas)

  • Implementar diretamente os exemplos, sem modificar, e ver seus efeitos. Estudar o codigo de cada exemplo e gerar um relatorio sucinto ao final da aula pratica, descrevendo as principais funcoes de cada exemplo.
    Example 9-1 : Texture-Mapped Checkerboard: checker.c
    Example 9-4 : Mipmap Textures: mipmap.c
    Example 9-6 : Automatic Texture-Coordinate Generation: texgen.c

  • Sétima aula prática

  • 1. Implementar diretamente os exemplos, sem modificar, e ver seus efeitos (gerar um relatorio ao final da aula)
    Example 11-4 : Quadrics Objects: quadric.c
    Example 12-1 : Bezier Curve with Four Control Points: bezcurve.c
    Example 12-2 : Bezier Surface: bezsurf.c
    Example 12-5 : NURBS Surface: surface.c

    2. Modificar os valores das coordenadas pontos de controle do exemplo 12-1 e verificar a mudança ocorrida na curva. Mudar as coordenadas de modo que a curva dê um nó.

  • Dia 03/11/05

  • 1. Implementar diretamente os exemplos, sem modificar, e ver seus efeitos. Estudar o codigo de cada exemplo e gerar um relatorio sucinto ao final da aula pratica, descrevendo as principais funcoes de cada exemplo.
    Example 8-1 : Drawing a Bitmapped Character: drawf.c
    Example 8-2 : Drawing a Complete Font: font.c
    Example 8-3 : Use of glDrawPixels(): image.c
    Example 8-4 : Drawing, Copying, and Zooming Pixel Data: image.c

  • Dia 10/11/05

  • Implementar diretamente os exemplos, sem modificar, e ver seus efeitos. Estudar o codigo de cada exemplo e gerar um relatorio sucinto ao final da aula pratica, descrevendo as principais funcoes de cada exemplo.
    Example 6-1 : Blending Example: alpha.c
    Example 6-2 : Three-Dimensional Blending: alpha3D.c

  • Dia 03/05/12

  • 1. Implementar diretamente os exemplos, sem modificar, e ver seus efeitos (gerar um relatorio ao final da aula).
    Example 7-1 : Creating a Display List: torus.c
    Example 7-2 : Using a Display List: list.c


                    Mostrar o projeto final funcionando!
                    Entrega do projeto final (trabalho pratico de implementacao).