Project 3: OpenGL Robot
Due: Wednesday, March 17, 2010, 11:30am
Checkpoint: Thursday, March 4, 2010
CSC385 - Computer Graphics
Goal: 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,
there is no skeleton code.
Rather, you'll create an OpenGL
application from scratch.
Action:
The assignment is worth 100 points. The required features total 90 points. Choose options to bring your grade
up to 100 or more. (Points beyond 100 are discounted as in prior assignments.)
Required Features:
- (15 pts.) Build a 3D world with a tiled floor, three different 3D objects and lights. The world should have at least ambient light and 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.
- (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!!
-
(10 pts.) Build a robot that has a body, a head that turns and nods, and at least one arm that rotates at the wrist, elbow,
and shoulder (or something equiavalent depending on physiology).
-
(10 pts.) Create an intuitive and easy to use interface for the user to move the robot around the world and control its head and arm movements.
- (10 pts.)
Add a spot light to the robot's head (like a miner's lamp)
that can be toggled
on and off. (Node: The light should move when the robot's head turns or nods.)
-
(10 pts) Add functionality to the interface to allow the user to toggle on and off ambient lighting and (independently) the point light, and to toggle the camera position in order to see the world from the robots perspective.
(Note: When in this mode, the view should change when the robot turns or nods its head.)
- (5 pts.) Implement a help menu that explains all of the user controls.
- (10 pts.) Make the robot do a cool robot trick and demo it at the final. The trick also should be accessible from the interface.
- (10 pts.) Demo 50 points by the checkpoint.
Optional Features:
- (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 pts.) Add shadows using
the projection method with polygon offset.
- (5 pts.) Use "picking" for robot control.
- (5 pts.) Add reflections using the stencil buffer to prevent reflection
beyond the floor.
- (5 pts.) Add texture mapping.
- (10 pts.) Add bump mapping.
- (10 pts.) Add a "portal" using clipping planes.
- (5 pts.) 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 pts.) Add a billboarded object.
- (5) Add fog effects.
- (5 pts.) Win the best robot contest.
- (5 pts.) Win the best robot trick contest.
- (?) Impress us with something we hadn't considered.
Deliverables:
You should upload a zip file to Blackboard that includes the following:
- The complete windows project file for your robot (it must compile and run on the
Olin 102 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.
The late policy applies to this project, but you must hand in your project by the end of finals week (Friday, March 19th, 5pm). Also remember you must earn 50 points to pass the class.
Links: