6.837 Intro to Computer Graphics, Fall 2004
Assignment 10: "Create Your Own Assignment"
In this final assignment we give you the opportunity to explore an
additional topic not already covered in one of the previous
assignments. The scope of your assignment should be carefully defined
so that it can be successfully completed in about a week, similar to
the other assignments.
Possible Topics
In your Raytracer:
- Translucency and subsurface scattering (skin, marble, wax appearance)
- Multispectral Rendering (replace RGB by a sampling of wavelength)
- Ray tracing implicit Surfaces and Blobs
- Ray tracing tensor B-splines (mostly numerical solution of equation)
- Volumetric Textures (appearance of fur, grass)- warning, this is quite
difficult
- Caustics with Forward Ray Tracing - warning, this is difficult
- Distribution Ray Tracing (glossy materials, depth of field, soft shadows,
motion blur)
- Stratified sampling of glossy material for distribution ray tracing (requires
the understanding of a little bit of math, but not too bad)
- Participating Media (fog, smoke, shaft of lights)
- Virtual Gonioreflectometer (not easy, calculate BRDF and material appearance
from microgeometry)
- Mirage and other Non-Linear Ray Propagation
- Relativity (suprisingly easy to do special relativity, Doppler effect is
not so bad either)
- CSG, including Wireframe Previsualization - actually fairly easy.
- Texture Mapping, Bump Mapping, Displacement Mapping . The hard part is to
get texture coordinates.
- Shadow Maps and Closer Percentage Filtering in Ray Tracer (easy when using
our t visualization output)
- Experiment with Spatial Acceleration (bounding volume hierarchies, hierarchical
grids, BSP trees)
- Ray casting and shading of fractal objects (IFS or Quaternion Julia sets)
Independent code:
- Flare and HDR Tone Mapping (display images that have a too high contrast
for the monitor)
- Non-photorealistic post-processing of ray-traced images (using the depth
output)
- Shadow Maps, Shadow Volumes in OpenGL - hacker talents will help
- Rigid-Body Dynamics - must be simplified. e.g. one cube bouncing in
a scene. The challenge is collision detection and collision response.
- 2D Fluid Dynamics (Thin Water)
- Mass-spring cloth simulation
- Inverse Kinematics - warning, this is difficult
- L-systems (tree modeling with a grammar that describes tree growth)
- Triangle rasterization (you should probably do it only with 2D triangles)
You're welcome to propose a project on a topic not on this list, but we advise
you to chat with us prior to the proposal due date.
Proposal
As you choose your topic and begin to flesh out the details, keep in
mind that implementing new data structures or algorithms can take much
longer than anticipated. Also be warned that designing and
implementing even relatively simple user interfaces require alot of
effort (and is not particularly relevant to this course).
Your proposal should be plaintext (with optional supporting
images) or pdf. The document should include:
- A brief summary (~ 200 words) of the technical problem you are going to investigate.
- A list of the specific papers or other sources you've collected
for background reading.
- A timeline for your assignment with a list of the tasks you will
execute. It's ok to list optional tasks that you will work on once
the core features are functional.
The proposal is due on Friday, November 19th. We'll read them over
the weekend and give you feedback by the end of the day on Monday,
November 22nd. If necessary, we'll ask you to revise and resubmit
your proposal.
Final Report
Your final report should be plaintext (with supporting images and/or
animations) or pdf. The report document should be roughly 1000 words
and describe the technical details of your assignment. In particular,
we want to know about:
- Any algorithms or data structures you implemented,
- The core features of your assignment and how you tested them,
- The challenges that you overcame (or failed to overcome),
- Any known bugs or limitations in your implementation, and
- How long it took you to complete the assignment.
Make sure to acknowledge any references you consulted to complete the
assignment and the extent of any collaboration with other students or
outside sources. As with the other assignments, submit your source
code, a linux or windows executable, and any necessary data files.
See the main Assignments Page for submission information.