Computer Engineering 290 - Final Project Requirements
For the final project in our class, we'd like you to use all the
knowledge that you've accumulated so faithfully and do a killer
OpenGL program. Ya know, something that reflects your mind's eye
and all that.
The programs will be graded based on how much of your personal
objectives are met, minus any technical inaccuracies (of which I'm
sure that there will be none). Brad and Dave will review your project
submission and determine if we think what you're proposing is
complex enough but also possible to finish in the time left.
The required elements of your program include:
- Comments in each file describing the purpose of
each source file and your name.
- Print a help message if "h" is pushed.
- Use
GLUT_RGB
mode and be double buffered
(GLUT_DOUBLE
) with some sort of interactive or automatic
animation, just like your previous programs
- At least some user interaction, in the form of keyboard
commands or mouse control.
- Have at least four independent objects either composed of other
basic shapes (i.e. cubes, cones, cylinders, etc.) or from
defined polygons. This is a little hard to measure so we will
check each proposal to see if it fits our general idea.
- At least one instance of a dependent OpenGL transformation
which is at least two levels deep (i.e. there are at least two
glPushMatrix() / glPopMatrix()
calls) excluding
any that you might have for your viewing transformation.
- use the following OpenGL features:
- glLight
- glMaterial
- texture mapping, especially MIPmapping,
GL_MODULATE
texture environment
These are the absolute minimum requirements and are worth an 80% grade.
If, for example, you were to propose that you take lab 3 and add
texture mapping and nothing else, that would be worth no more than
80 on the final project, but then we'll take a closer look at the code,
too, so it probably won't be worth 80 in the end.
We want to see you reach a little beyond what we have taught you.
We're looking for creativity and some understanding of why things
work the way they do.
Here are a handful of fun things you might use to get more points or
extra credit, but these are not the only tools at your disposal. We
may not have talked about these much but they are an important part
of OpenGL. (Don't worry, they won't be on the exam if they weren't in
the notes.)
- Use linear
glTexGen
to "project" texture maps onto objects
- Use spheremap
glTexGen
to make objects look reflective
- Use clipping planes to cut off portions of an object.
- Use
GL_LINES
or GL_POINTS
as well as
polygons.
- Use blending (
GL_BLEND
) to draw transparent
objects (this one's tough to get right).
- Many others...
We will be checking your project for OpenGL correctness. Some things
we will look out for (but not all) are:
- Correct use of
glEnable
and glDisable
.
- Vectors used in glRotate and gluLookat-up-vector are normalized
(length of 1.0).
- Things you turn on, like GL_SPECULAR, GL_LIGHT0 through GL_LIGHT1,
are actually used.
- And others.
Think a little bit about what you're doing before you do it and that
will help make sure you do it right. (Good advice for anything you
do in life!) Also feel free to ask us or send mail to
coen290@plunk.org if you
have questions.
These requirements may be traded somewhat depending on the
content of your project, but we expect the overall difficulty
level to remain about the same. For example, you might not use
much texture mapping if you were to use complicated transformations,
but we expect you to explain that in your proposal.
Here are some suggestions, but these are not the only ideas you
can propose. One thing that might help you is to think about your
personal interests while you try to come up with a proposal.
- park demo
- walk through a park
- trees made of cones and cylinders
- some signs posted that say "stay off grass" (textured)
- afternoon sunlight (directional light off-center)
- clock
- textured clock face
- moving arms
- point light near top of face so base is darker
- flying game
- mountains
- buildings with texture
- sunlight
- data animator
- read text description of
- locations of cubes, spheres, and cylinders
- relative motions
- draw objects moving, allow keyboard to move camera
When your project is finished, you must present your final project with
a short report detailing your project. Requirements for the project
report are on the web.