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++.
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.
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.
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