Computer Science 155: Graphics
Fall 2001
Project 4
This assignment is due by midnight Wednesday, November 28.
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.
What you have to do
The assignment is worth 20 points. Following is a list of features
you may implement and their point value. Items listed in
bold are required.
-
(2) 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.
-
(1) The robot's position should be user controllable via the keyboard
or mouse.
-
(1) The right arm should be user controllable via the keyboard or
mouse. In particular, the user must be able to rotate the arm (about at
least one vector) at the shoulder, elbow, and wrist. Use hierarchical coordinate
systems.
-
(1) The robot's head must be user controllable via the keyboard
or mouse. The head should be able to rotate left, right, up, and down.
-
(1) Add menus. Initially the menu options should include "Quit"
and "Adjust light." When the user selects "Adjust light" you should
query the user for new ambient values and adjust the light accordingly.
-
(2) Add lights and diffuse and specular lights material properties.
There should be (at least) one point light source and one spotlight.
The spotlight should be mounted on top of the robot's head and should rotate
and move with the head. Allow the user to adjust the intensity of
the lights and to reposition the point light.
-
(1) 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. The user should be able to zoom in and
out and move the viewpoint so the world can be viewed from different perspectives.
At least one object should have a metallic appearance.
-
(1) 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.
-
(2) Add shadows with polygon offset.
-
(1) Add a help option to the menu that prints an explanation of
the keystrokes your program accepts and how the mouse can be used.
-
(2) Add reflections using the stencil buffer to prevent reflection beyond
the floor.
-
(1) Add some transparent objects using blending.
-
(1) Add something to your world that uses bezier patches or NURBs.
-
(1) Add texture mapping.
-
(1) Add a mirror. (Be sure to consider the possible viewpoints; i.e.
the robot can look in the mirror and see itself.)
-
(1) Use display lists to build the floor and robot.
By implementing all the required features, you get 13 points. There are
many ways to get more points:
(as listed above) implementing optional features,
(1) submitting a still image of your world
for the art contest,
(0-3 as warranted) incorporating a cool robot
trick, e.g. juggling, unicycle riding, dancing etc., that is initiated
from a menu option
(1) submitting a .mpeg movie of a cool robot
trick,
(as warranted) something cool we haven't thought
of,
(2) winning the art contest.
It is possible to get more than 20 points. However, after 20 points,
each point is divided by 2, and after 22 points, each point is divided
by 4.
Submit your code with a makefile and a README file that contains instructions
on how to operate the robot. Have fun with this!!!