Computer Graphics I

4003-570-01 / 4005-761-01 (Fall 2007)

Assignment #4: 3D Realism in OpenGL



Date posted: October 24, 2007
Date due: November 7, 2007


Purpose 

In this project, you will continue your work with OpenGL by experimenting with some more advanced OpenGL features.

You have the option of doing this project in C or in C++.

Task

As in project 3, what you draw is completely up to you, within the constraints of the following requirements. This time, your 3D model must contain at least four objects. You are free to use the GLUT and/or GLU objects (teapot, sphere, etc.) if you wish, or you may define your own. (For simplicity, you may re-use your models from project 3 if you wish, or even re-use the entire project 3 solution as the basis for your project 4 solution.)

Your program must include the following features:

Each feature must be controlled by keyboard or mouse input. 

Below is a suggestion for the keys controlling each feature.  You are free to use whatever mechanism you choose, just be sure to indicate how to build and run your application in a README file.

Key(s) Action
q Quit the program
1, 2 Toggle your first and second lights
3, 4 Toggle your third and fourth lights (if you have them)
5, 6 Toggle your first and second materials
7, 8 Toggle your third and fourth materials (if you have them)
9, 0 Toggle your first and second textures
a, b Toggle your third and fourth textures (if you have them)
f Toggle fog

Each texture and material must be applied to a separate object, and it must be possible to have any combination of the four (or more) enabled at the same time. Similarly, it must be possible to control each light independantly, so that any combination of them can be enabled at the same time.

Put a brief description of the input your program accepts in a file named README, and submit this with your solution.

Notes:

Fog is most effective when it has a color that is similar to the background color you use.

You can find many freely-usable textures (and models) online; here are some links:

There are a number of examples of the use of OpenGL in various public directories. Try looking in any of these places:

In particular, Nan Schaller's lab 4 examples and the SIGGRAPH tutorial sources contain examples of the types of manipulation you must accomplish.

What to submit

Please submit all files necessary to build and run your program.  This includes source files, header files, project files, and Makefiles.  In addition, the submission should include a README that indicates the platform on which your assignment is built, as well as notes on how to build and run your project.  

Platform specific OpenGL libraries should exist on each platform that supports OpenGL.   (In most cases, these libraries are supplied by the manufacturer of the graphics card present on your system).    If you are planning on using the Suns for your project,  please make use of the following
header.mak file to see the proper libraries that need to be linked and the locations of those libraries.  (Note that if you use makemake or gmakemake, the contents of this file will be incorporated into the Makefile produced).

All submission should be made using mycourses.   Look for the folder named "Assignment 4" in the dropbox area.

Assessment

Your grade will be based on the complexity of your output (i.e., how interesting it is, how many objects you have, etc.), your animation, how your program responds to user input, your program design, and your internal documentation. 

While the primary goal of this project is for you to draw something using the required elements described above, a portion of your grade is based (subjectively) on how ``interesting'' (complex, unusual, etc.) your design is. I realize that not everyone is an accomplished artist; photorealistic depiction of objects is not a requirement - effort is more important.

 

last updated 10/30/07