NEWS: Now on github: hairy-tracer
If you use it, I'd love to hear from you. Any improvements are welcome. Please send a pull request for any fixes/improvements.
Comp 175 Graphics Final Project - Ray Tracer Raoul Veroy
Comp 175 Fall 2010
Prof: Sara Su
Welcome to my project page!
Screenshots
spheres on infinite plane
Fig. 1 Spheres on infinite plane
spheres on larger sphere
Fig. 2 Spheres on larger red sphere
3 spheres on checkerboard
Fig. 3  Spheres on infinite checkerboard
Reflective sphere on checkerboard
Fig. 4 Reflective sphere on infinite checkerboard plane
Reflective sphere on checkerboard part 2
Fig. 5 Reflective sphere on infinite checkerboard plane
multiple reflective spheres on checkerboard
Fig. 6 Multiple reflective spheres on infinite checkerboard plane - different angle
multiple reflective spheres on checkerboard 2
Fig. 7 Multiple reflective spheres on infinite checkerboard plane
Introduction
Ray tracing is a technique for photorealistic rendering that simulates global
illumination of a scene by tracing the path of light as it travels through a
virtual 3D scene. My final project consists of implementing a basic recursive
ray tracer renderer in Python.

The project serves as an educational tool to learn more about ray tracing and
global illumination.  My hope is that project will also form the basis for a
platform that I can extend using advanced techniques from books and research
papers even after the semester is over.
Related work
I plan to use the following sources:
  • Watt, A and Watt, M. Advanced Animation and Rendering Techniques
  • Glassner, A. An Introduction to Ray Tracing

Design considerations
The ray tracer is implemented in Python using the Python Imaging Library
to produce the 2D images.

The following object primitives form the minimum basis of implementation:


  1. plane
  2. sphere

The following light effects are implemented:

  1. basic color using the simple Phong illumination model
  2. simple procedural textures on the plane like the chess board pattern
  3. shadows
Key features
  1. Recursive ray tracing
  2. Simple Phong illumination model
  3. Multiple light sources
  4. Shadows
  5. Supersampling
  6. Reflections
  7. Scene description language is Python. (After all, why reinvent the wheel poorly when I have a perfectly good scripting language in Python?)
Future work: possible extensions and improvements
  1. transparency
  2. texture mapping
  3. refraction
  4. more geometric primitives:
    • polygons
    • quadric surfaces
  5. advanced global illumination
  6. stochastic sampling
  7. parallel rendering