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.
Refer to the course page for deadlines for this project.
What You Have to Do
The assignment is worth 100 points.
- Part I (30 points)
In the first part of the project you'll build a simple 3D
world with lighting, menus, and camera controls.
- (5 pts.) Build a 3D world with a tiled floor and three 3D objects.
- (10 pts.) Add ambient light as well as a point light. The point light should have noticable attenuation
across the tiled floor. All objects should be lit and at least one should be shiny.
- (5 pts.) Add menus that allow the user to toggle on and off ambient lighting and (independently) the point light.
- (10 pts.) Build camera controls that allow the user to reposition and reorient the camera easily. Also include a
zoom feature. To receive full credit your controls should be intuitive and easy to use!!
- Part II (30 points)
In the second part of the project you'll build a 3D robot using hierarchical coordinates. You'll also
build user controls for moving the robot.
- (5 pts.) The robot should have a head that turns and nods. The robot should have a spot light on its head (like a miner's lamp) that can be toggled
on and off.
- (5 pts.) The robot should have at least one arm that rotates at the wrist, elbow, and
shoulder (or some equiavalent depending on physiology).
- (5 pts.) The robot should have a body that can move around the floor.
- (10 pts.) The user should be able to access all controls through an intuitive and easy
to use interface. In addition, the user should be able to toggle the camera control to see
the world from the robot's perspective. It is not enough to simply implement an interface; to receive
full credit it must be easy to use.
- (5 pts.) Implement a help menu that explains all of the user controls.
-
Part III (35 points)
In the final part of project you'll add some bells and whistles.
-
(10 pts.) Build a simple roller coaster using a catmul-rom spline for the rails. (You should specify
the control points in your code but sample and draw the curve in real time.) The user should
be able to take a ride; i.e. move the camera along the rails (with toward and up specified
by the tangent and normal to the curve) at realistic speeds.
- (5-10) Make the robot do a cool robot trick and capture it
in an mpeg movie. The trick also should be accessible from the menu. A good trick is worth 5
points. A great trick is worth 10. (This may be repeated for additional credit but grading gets tougher for each one.)
- (5) Add shadows using
the projection method with polygon offset.
- (5) Use "picking" for robot control.
- (5) Add reflections using the stencil buffer to prevent reflection
beyond the floor.
- (5) Add texture mapping.
- (10) Add bump 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.
- (5) Add a billboarded object.
- (5) Add fog effects.
- (5) Win the best robot contest.
- (5) Win the best robot trick contest.
- (?) 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 110 points, each point is divided by
4, etc.
What to Submit
You should submit a CD labeled CS155 Proj 3 with your name and the date and time of submission that includes
- the complete windows project file for your robot (it must compile and run on the
LAC machines)
- a writeup called assignment3.html that (a) explains how to operate the
robot and (b) enumerates the features you've implemented.
There are many opengl tutorials and demos online. You MAY NOT use any code off the web
unless you get explicit permission from me.
You get two late days for this project. They may be used to extend any intermediate or final deadline.
A 5 points penalty per day will be applied for additional delays.