CS 184: COMPUTER GRAPHICS
Submission deadline: Wednesday, May 20, 2009.
Final Project, Spring 2009 (Score sheet)
The goal of the final project is to integrate and reinforce the various
techniques learned in the first 11 weeks of this course, and also to
give you an opportunity to pick one additional technique that
you are particularly interested in and to study it and pursue it in
Thus, we will split our discussion of ideas for your project into two
parts: the "core" part that is based on course material covered in depth
and on the first 8 programming assignment, and then the "extension" part.
Your work should be done primarily in the C++ environment used in this
class, and it may, of course, draw heavily on the frameworks created for
the various assignments.
There are five key techniques that you should have become familiar
with; your project will probably incorporate some elements from each
1. Modeling Interesting Geometry
Interesting primitives can be made from triangle meshes, B-spline patches, or sweeps;
they can also be procedurally generated, such as a fractal landscape based on
subdivision, or a B-rep terrain specified as a height function.
Interesting composites can be constructed from combinations of spheres, cubes, tori, and/or some of the above primitives.
The various instances could also be placed procedurally in arrays or along a curvy path.
2. Surface Decoration
The geometrical elements mentioned above can be provided with colors, textures, bumps, or can be made reflective or transparent.
The various geometric elements can be hooked together in a hierarchical manner with variable transformations,
so as to achieve kinematic, articulated limbs, or rotating wheels and sub-assemblies.
Alternatively, the geometry of the primitives itself could be
Individual parts could stretch non-uniformly, or the
control points of
a spline could move.
All these variables can simply be a function of time, or they could be controlled via the mouse or the keyboard.
Real-time interaction could be as simple as starting or stopping an animation or controlling its speed.
At the other extreme, the mouse-cursor could be used to interactively change the pose of a mannequin,
or to define a target point in a landscape for a creature to walk toward.
Interaction could also be used to control the camera or to change the lighting in the scene.
In the simplest case you can just call OpenGL with the right parameters to do the rendering for you.
For scenes with lots of reflecting surfaces and transparent objects it is better to use a ray-tracing renderer.
You should make a decision early on whether your project will focus
more on a changing interactive scene with real time OpenGL rendering,
or on a mostly static or slowly varying scene, using more offline rendering techniques.
(Don't try to mix the two).
Example Scene Contents:
Extend the roller-coaster model into a
carnival scene with one or two other rides that may involve intricate
articulated movements of beams with attached seats for the riders.
Create a "spider" or other multi-legged creature that
walks along your roller coaster track.
Some vehicle-creature transformer that can be controlled in its movement and transformation.
A glassy bubble-man composed of kinematically linked ellipsoid
limbs that walks along some fractal terrain -- rendered by raytracing.
An intricate interlocked arrangement of donuts and of higher-genus objects rendered with some attention to global illumination.
Below are some suggestions of how you might extend your project along one of the five axes outlined above.
you strongly wish to try something else, you need to discuss that with
the instructors and obtain permission from Prof. Sequin.
Modeling Interesting Geometry
Implement CC-subdivision surfaces with texture mapping for higher-genus objects.
One ore two examples of geometry files with texture coordinates will be provided.
Implement some form of displacement mapping
Write your own inventive shader
Add inverse kinematics
to your articulated creature, so it can walk on uneven terrain;
or create some interactive claw on a multi-segmented limb that will try
to reach a target position controlled by the mouse cursor.
Implement a simple spring-mass simulation
system, that allows you to model a quivering piece of jello, or a waving flag.
Use the mouse cursor to interactively change the shape of a sweep curve or the form of a subdivision surface.
Use the mouse cursor to interactively manipulate the poses of a mannequin by grabbing any part of its body or its limbs.
Use the mouse and/or various keyboard keys to control the movement of a vehicle or creature.
For offline rendering
: A fancier rendering technique that considers global illumination
, such as photon mapping or path-tracing.
For real-time rendering
: Some technique to do real-time shadows
in a dynamic scene, such as shadow volumes,
or to otherwise bring in more non-local information, for example with ambient occlusion
To allow you to make an informed decision as how to best invest your time and effort, consult the Score-sheet;
it will give you an idea of how we value various possible
contributions and what combination might give you the best chance for
a working program (obviously);
a representative screen shot, by which we can remember your project (a 500x500pixel jpg should be just fine).
a 1-2 page report (500-1000 words) that describes your special
(this write-up and the above picture should remind us of your
project and accomplishments when we do the grading,
and it may also form the basis of description of your
project in any letter of recommendation that you may ask for).
a filled out score sheet with your own evaluation of what you have done
(the TA's will collect this score sheet during demo time (see below) and add their own notes on it).
a real-time demonstration that the claims on the score sheet are real and working.
Demonstrations of Final Course Project:
On Tuesday and Wednesday, May 19 and 20, 2009, in 330 Soda Hall.
-- either on one of our Lab machines or on your laptop.
A sign-up form with 12-minute interview/demo time slots on either
of the two days will be made available in due time.
I understand that there are some concerns about how difficult it may be to obtain an A-grade on the project.
score sheet should help you to invest the available time wisely so you
can obtain some interesting results with a reasonable amount of effort.==> We would like to see 40% of the projects obtain a grade A- or better !
- - > CS
< - - - - > CURRENT
< - -
Page Editor: Carlo H. Séquin