Project 4: OpenGL Robot
Due: 25 points by Monday, October 27, 2003
Due: 75 points by Monday, November 4, 2003
Due: 100 points by Monday, November 11, 2003
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 coder.
In this assignment you'll create an OpenGL
aplication entirely from scratch. Look at your OpenGL book, the GLUT
guide, and previous projects for guidance.
Here are some screen shots of robot worlds created by former students.
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. To receive full credit for a feature it must
work well and the user interface for the feature must be simple and
intuitive.
- (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.)
- (10) Add controls so the
user can reposition and orient the viewpoint in the world.
You'll probably want to use gluLookAt() to establish the viewpoint.
(Most of these points are for designing a simple and intuitive interface.
For example, you may want to use mouse motion to rotate the world.)
- (5) The robot should turn and move under the user's control.
- (5) The robot's right arm should rotate at the shoulder, elbow, and wrist under the user's control. 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 control.
- (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 of each light through a menu option.
- (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 of the spotlight.
- (5-10) 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.
(The more interesting and imaginative your world, the more points you will garner.)
- (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.
- (10) Make the robot do a cool robot trick and capture it in an mpeg movie. The trick should be accessible from the menu. You will not receive any credit if you don't do the movie!! (This item can be repeated for additional credit.)
- (5-10) Add shadows using
the projection method 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 and/or bump mapping (5 points each).
- (5) Use alpha blending to make some object semi-transparent.
- (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
herself.)
- (5) Use display lists for the floor and robot.
- (?) Impress us with something we hadn't considered.
By implementing all the required features, you get 80-90 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 the features you've implemented.
Make sure the source code compiles in the graphics machines.
You may use one late date for this assignment plus any unused late days from previous assignments.
Notes
- Stay tuned for more notes
Links
Last Update: October, 2003