Math 155 - Winter 2001
Programming Assignment #5

Programming Assignment #5: Choose from one of several projects involving textures or animation or other special OpenGL features.

Due date: Saturday, March 17.  Midnight.

For this assignment, you will choose an individual project from the list below.  You will need to design the details of the project, and you have a great deal of flexibility in how you design it and what you implement.  It is expected that no two of you will do exactly the same kind of project.   Please note the features in the projects are only suggestions, and you are free to design different details in your project.

• Create a 3D-scene with polygonal objects, with texture maps applied to the objects, and appropiate lighting and material properties.
Suggestions for the 3D scene include:

1. A museum room with a 4 walls, floor and ceiling, perhaps a door, several paintings on the walls, perhaps a bench in the middle of the room.
2. A ceramic bowl or dish with texture maps applied to the interior and/or exterior.
3. A table and two chairs, placed in a small room.  Model the table and chair with cylinders and/or boxes.  Apply textures, and use lighting to make the scene look attractive.

• Design a boxy, polygonal car.  Give it headlights or brakelights (emissive materials).  Place it in a flat open area with four walls.  Let the arrow keys provide some rudimentary driving controls (the car should be clamped at the walls, or bounce off the walls, so as to not get too far away from the origin).

• Design a simple robotic arm with three segments.  Let the user control the three joint angles with key strokes (one degree of freedom per joint).   Give a target point for the user to try to make the tip of the arm hit the point.   (This will may a bit of work learning how to work with hierarchial rotations.)

• Build a 3D scene incorporating blending to create transparency effects.   For example, model an ordinary and a wine glass with transparency.  Optionally put colored liquid in the glasses.  (You will need to learn about blending and transparency mostly on your own, and should consult with me on how to implement these effectively.)  Let the viewpoint revolve around or move around the objects to show off the transparency effects.

• Other projects which are similar in scope would be acceptable IF you get prior approval.

Level of effort:  This is a major programming assignment.   The level of effort should be higher than that for the earlier assignments; however, it should not be unreasonably high.  I would expect you to spend  20 hours on the project, but not over 30 hours.  I highly recommend that you implement your project in phases, so that you get one feature or aspect of the project implemented at a time.  In this way, if you run into difficulties and take extra time on one aspect of the project, then you still have results from your work to show.

You must choose a project, and let me know what it is, no later than Monday, March 5.  A signup sheet is available in class Monday, or you may email me your choice.

What to hand in:

• As usual, your code will be individually graded in sessions with the instructor or the TA.  This must be done no later than 11:00 AM on the last Saturday of finals week.  Preferably this should be done in the first half of the finals week.
• In addition, you should create a JPEG file showing the image you hav created (or an image if you have animation).  To do this, draw the image in as large a window as you can, then press the ALT + PRINTSCREEN button.   This puts the current window's contents in the clipboard as a graphics image.   Then run a program such as Paint (or Photoshop or almost any other drawing program), create a new image, paste in the clipboard contents and save the results as a JPEG file.  Save this file in your home directory named Project5Img.jpeg or Project5Img.jpg.  If you have more than one image, name them Project5ImgA.jpeg, Project5ImgB.jpeg, etc.   If your graphics program gives you options on the quality of the JPEG, use the highest quality available.
I will create a course web page with a gallery of the images created.