First DRAFT: Final Project, Spring 2011

Tentative Submission deadline: Monday, May 9, 2011.

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 opprtunity to pick one additional technique that you are particularly interested in and study it and pursue it in some more detail.
Thus, the discussion below of ideas for your project is divided into two parts: the "core" part that is based on course material
and on the first nine programming assignments, and then the "extension" part.

Your work should be done primarily in the C++ environment used in this class and may, of course, draw heavily on the frameworks created for the various assignments.

Project Core

There are five key techniques that you should have become familar with; your project will probably incorporate some elements from each one:

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.

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 subassemblies.
Alternatively, the geometry of the primitives itself could be changing: 
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 controling its speed.
At the other extreme, the mouse-cursor could be used to interactively change the pose of a mannekin,
or to define a target point in a landscape for a creature to walk towards.
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 some default OpenGL rendering,
or on a mostly static or slowly varying scene, using more sophisticated rendering techiques.
(Don't try to mix the two).

Example Scene Contents:

Extend the roller-coaster model into a carneval 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 rollercoaster 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.

An intricate interlocked arrangement of donuts and higher-genus objects rendered with some attention to global illumination.

Project Extensions

Below are some suggestions of how you might extend your project along one of the five axes outlined above.
If 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.

Surface Decoration

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 multisegmented limb that will try to reach a target position controled by the mouse cursor.
Implement a simple spring-mass simulation system, that alows 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 mannekin by grabing 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.


A fancier rendering technique that considers global illumination, such as photon mapping or path-tracing.
Some technique to do real-time shadows in a dynamic scene.

Ambient occlusion for proximity shadows.

With respect to the various effects you may want to incorporate into your project
and the amount of work you should plan to invest for each technique, please consult the score sheet. [UPDATED 2011 VERSION WILL BE DONE LATER]

Project Deliverables:

  • 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 accomplishments
  •      (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 10 and 11, 2009, somewhere in Soda Hall (TBD).
    -- either on one of our Lab machines
    or on your laptop.
    A sign-up form with 15-minute 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.
    The 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 184 HOME < - - - - > CURRENT < - -
    Page Editor: Carlo H. Séquin