Project 4: OpenGL Robot
- The first 35 points are due by the end of the day Sunday, October 31, 2004.
- The next 35 points are due by the end of the day Sunday, November 6, 2004.
- The last 30 points are due by the end of the day Sunday, November 13, 2004.
Overview
In this assignment you will implement an OpenGL robot that can be
controlled by the user. This assignment is loads of fun! The
earlier you start the more fun you'll have. Unlike previous assignments,
we are not supplying any skeleton code.
In this assignment you'll create an OpenGL
application entirely from scratch. Look at your OpenGL book, the GLUT
guide, and previous projects for guidance.
What You Have to Do
The assignment is worth 100 points. Following is a list of features
you may implement and their point value. Items listed in
bold are required.
- (10) The robot should have a body, a head, and a right arm. Left
arm and other body parts are optional. Be creative! Initially use
ambient light to light the scene. Use perspective projection.
- (5) Add menus. Initially the menu options should include "Quit,"
"Adjust ambient light," and "Help." When the user selects "Adjust ambient light"
you should query the user for new ambient values and adjust the ambient
light accordingly.
The "Help" option should explain every keyboard and mouse control. (Add to the help menu as you add additional controls.)
- (5) The robot should turn and move under the user's direction.
Design your UI (for this feature and those that follow) so that it is simple and intuitive to use!
- (5) The robot's right arm should rotate at the shoulder, elbow, wrist under the user's direction. Be sure to use hierarchical coordinates in your
design.
- (5) The robot's head should turn left and right and nod up and down at the user's direction.
- (5) Add lights and diffuse and specular material
properties. There should be (at least) one point light source.
Allow the user to adjust the
intensity and position of the point light.
- (5) Add a
spotlight mounted on top of the robot's head. It
should rotate and move with the head. Allow the user to adjust the intensity and cutoff angle of the spotlight.
- (5) The robot should live in a 3D space with a shiny floor and
at least a few 3D objects in it. Make sure to partition the floor into a
number of separate tiles so that specular reflection from the light
sources looks reasonably good.
At least one object should have a metallic appearance.
- (5) Add controls so the
user can position and orient the viewpoint.
The UI should make this feature simple and intuitive to use.
- (10) Allow the user to toggle the viewpoint to see the world
from the robot's eyes. As the robot moves or rotates its head, the view
changes.
- (5-10) Make the robot do a cool robot trick and capture it in an mpeg movie. The trick should be accessible from the menu. (This item can be repeated for additional credit.)
- (5-10) Add shadows using
the projection method with with polygon offset (5 points) or
shadow volumes (10 points).
- (5) Add reflections using the stencil buffer to prevent reflection
beyond the floor.
- (5) Add texture mapping.
- (5) Add a mirror (the floor does not count!). (Be sure to consider the
possible viewpoints; i.e. the robot can look in the mirror and see
itself.)
- (5) Use display lists to build the floor and robot.
- (?) Impress us with something we hadn't considered.
By implementing all the required features, you get 70 points. Select options to bring your score to 100.
It is possible to get more than 100 points. However, after 100 points,
each point is divided by 2, and after 120 points, each point is divided by
4.
What to Submit
You should submit:
- the complete source code for your robot,
- a makefile,
- the .mpeg movie of the robot trick(s)
- a writeup.
The writeup should be a HTML document called assignment3.html which may
include other documents or pictures. It should explain how to operate the
robot and enumerate features you've implemented.
Make sure the source code compiles in the graphics machines. If it
doesn't, you will be in a world of hurt.
Remember our standing late policy and collaboration policy.
Notes
- Stay tuned for more notes
Links
Last Update: 7/24/02