CS 185- Computer Graphics I: Instructions for Assignment 4

Assignment Description:

For this project you can implement the graphics application of your choosing. It can be can build on what you've done so far, it can be done in conjunction with a project in another class, or something of your own invention including a game, visualization, simulation or exploration using 3D graphics.

Requirements

1. Use OpenGL with 3D models and lighting.
2. Use OpenGL shaders to implement at least some of your effects.
3. Allows user interaction either in controlling the viewpoint and/or objects in the scene.
4. If you have any doubts the program you are designing meets the necessary requirements, check with the instructor!

 

Notes:

1.You can refer to the description page for geometric handling for the 3D model information.

2. When you update the first camera position (3 parameters in gluLookAt), you should check if the new view penetrates into walls.

3. You can refer to the RenderRoom() function in room.cpp to generate a room like structures with doors on the side. The sides of the rooms are not composed of large polygons, instead it is composed of many small polygons for reasons of 3D rendering. Each polygon has a normal vector assigned to it. The incorrect normal direction will make the surface face the opposite direction and thus invisible.

glNormal3f(1.0F, 0.0F, 0.0F);
glVertex3f(..);
glVertex3f(..);

4. Use the following command to change polygon material color in the rendering routine :

GLfloat mat_diffuse[] = {1.0, 0.0, 1.0, 1.0};
glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE ,mat_diffuse);

To extend the basic requirements, you may do the following:

1. Smooth turn with one command as opposed to incremental turn by using a button several times. Consider arc-turn (turning on arc trajectory) as opposed to stop-and-rotate.
2. Continuous navigation control using mouse control.
3. Hierarchy of objects as targets.
4. Better illumination, texture mapping, and other rendering effects.