CPSC 324, Spring 2001
Final Project and
Schedule of Assignments
As we near the middle of the term, it's time for you to think about what you want to do for your final project in this course, and to get started on it. You should be working on your final project in parallel with the other work that you do for the course.
Your final project can take several forms. Whichever form it takes, you will have a choice of topics. Here are some ideas:
- A portfolio project. For a project of this type, the goal is simply to make a variety of images and perhaps animations using GIMP and/or blender. You should use the program to produce a variety of interesting and/or aesthetic images. With GIMP, you have a choice of two approaches: creating images from scratch or making compositions using existing images. For a portfolio, there should be one or two dozen images, with an hour or more of work going into each one.
- A major animation project with Blender. Design and produce a short movie using Blender.
- Learn and use another graphics program. Learn one of the other available image manipulation or 3D modeling programs, such as Photoshop or Ray Dream Designer. Write a couple of tutorials that show how to exploit some of its features. Or write a comparison of Photoshop with GIMP.
- Learn how to make ray-traced images with POV-Ray (which we will only encounter briefly at the end of the term). Make a portfolio of images, or write a couple of tutorials.
- Learn one of the advanced features of Blender in depth. Write a short paper explaining what it's all about, and make some images using it. Some possibilities include: particle systems, inverse kinematics, environment mapping, and radiosity. We might encounter some of these briefly in lab, but we will not cover them in any depth.
- Program a 3D game using OpenGL. Or program some other useful application.
- Do a research paper on Web3D, the project that is trying to make 3D more common on the Web. It has a number of components, including a somewhat stripped-down VRML and a new MPEG standard for multimedia that can include 3D content.
- Learn the Java 3D API and do some 3D programming in Java.
- Write a research paper on some topic in computer graphics. This might or might not include some image creation or programming. Possible topics include: Ray tracing, radiosity, particle systems, constructive solid geometry, volumetric rendering, hidden surface removal with binary spatial partition trees, streaming video for the Web, Direct X, virtual reality, 3D game programming techniques, computer graphics in movies, applications of computer graphics to scientific visualization, fractals, 3D images using stereo pairs, stereograms, hardware for computer graphics, and graphics standards such as JPEG and MPEG.
On Thursday, March 22, you will have to give me, in writing, a one paragraph proposal for your final project. This will count for ten homework points. The project itself is due at the end of the term. It must be finished no later than Saturday, May 7, at 1:00 PM. The complete project must be on the Web. If the project involves a research paper, you can convert it to HTML form for posting on the Web. (Most word processors can export a document in HTML format.) I would also like a hardcopy of the paper. If the project does not involve a paper, then it might or might not be appropriate to turn in something in hard copy. You can decide. If you do one or more animations, we can discuss what should go on the Web and what should be turned in. I will be very unhappy if you have not discussed your project with me several times before the end of the term.
After you turn in your project, you might want to put a few finishing touches on your Web portfolio. You can do this up until 7:00 PM on Sunday, May 8. I will grade the Web portfolios at some time after that. The final exam is on Monday, May 9, at 7:00 PM.
We are finally ready to begin 3D programming in OpenGL. Of course, writing in naked OpenGL can be painful, so it is also time to add a level of abstraction. From now on, the programming assignments will use a simple object-oriented 3D graphics system built on OpenGL. I have written a first, incomplete version of this system, which you can find in the directory /home/cs324/GObject. The classes for graphics system are specified in the file GObject.h and are defined in GObject.cc. There are several sample programs that use this system. You will want to copy this directory into your own home directory. We will be going over all this in class during the next few classes. This first version does not do anything with lighting or materials, so it is really only suitable for making wireframe models.
For programming Assignment 2, which is due on Tuesday, April 3, you should create a 3D wireframe animation using the GObject graphics system. You might want to do some kind of attractive, complicated "mobile," for example. Your program must use a hierarchical model. There must be at least three levels in the hierarchy, and the animation must make changes on several different levels. If you do an unsegmented animation, you must have at least twelve basic objects. In a segmented animation, where your objects do different things in different parts of the animation, you can have fewer objects.
For Programming Assignment 3, you will add lighting and materials to the GObject graphics system. This means that you will be modifying many of the classes in that system. You will add the possibility of applying a material to an object and of adding lights to a scene. The assignment will also include writing one or more programs to test your system. This assignment will be due on Tuesday, April 17.
For the last assignment, Programming Assignment 4, you will add "indexed face sets" to the GObjects graphics system. An indexed face set is just a polygonal mesh. Your program will be able to display such meshes, given the proper data in a specified format. The assignment will also include a program that uses indexed face sets, perhaps something similar to the pipes screensaver. This assignment will be due on Tuesday, May 1. There will be more information about assignments 3 and 4 when the time comes.
Because of all the other stuff going on, I will try to make the labs self-contained from now on. That is, I will expect you to pretty much finish the work in the lab, except for adding the work to your Web portfolio.
Here is a schedule of events for the rest of the term.
Date What's Happening Tuesday, March 20 The class today is Lab 4
Lab 3 must be on the Web
Final project proposal due on Thursday
Tuesday, March 27 Lab 4 must be on the Web Tuesday, April 3 The class today is Lab 5
Programming Assignment 2 is due
Tuesday, April 10 Lab 5 must be on the Web Tuesday, April 17 The class today is Lab 6
Programming Assignment 3 is due
There is a test on Thursday
Tuesday, April 24 Lab 6 must be on the Web Tuesday, May 1 Programming Assignment 4 is due Saturday, May 5 Final project must be turned in by 1:00 PM Sunday, May 6 Web portfolio must be finished by 7:00 PM Monday, May 7 The final exam is at 7:00 PM
David Eck, March 5, 2001