CS348B Final Project

Mike Madison and Nader Zaki



caustics1.mpg : Water caustics

duck.mpg : A duck trying to get food from passers-by using its cuteness

Project Description:

Objective:  render water, caustics, and maybe a water fountain -- and if we get *REALLY* ambitious we *MAY* add particle interaction with splash. (We still don't know about the duck).

Why:  It looks cool. For example, in the first image, one of the coins appears "overly" bent due to light interaction with the water surface. The human eye might sometimes miss these effects in their fullest because the water surface is moving relatively fast; in fact, this effect was not captured on purpose, but instead recognized after reviewing the video at a slower frame rate.

Challenges: appropriate surface generation to achieve realistic looking caustics (given the environment).

Tentative approach: We will use Henrik Jensen's photon mapping approach.  Apropos the surface of the water, generate the surface and normals procedurally

Project Break Down:
* 1. Photon Mapping Pass One ()
        - sending out rays from the light (backwards ray tracing)
        - building up the photon map using a k-w tree, one for caustics and another for general" surfaces
        - figuring out where to send the rays (intelligent sampling)
* 2. Photon Mapping Pass Two ()
         - incorporate photon map lookup into normal raytracing
         - use appropriate interpolation scheme when using photon map information
* 3. Merging pass one and pass two
* 4. Modelling the water surface
         - write a script that generates a RIB file of water with sinusoidal perturbation
* 5. Modelling the Environment
         - the ground under the water
         - maybe add some interesting tidbits such as plants, fish, dirt, etc.
* 6. Procedural noise (optional)
         - generate a noisy underwater ground surface
* 7. Splash (***OPTIONAL***)
         - particle interaction, chaos effects, bubbles

Michael - 2, 3, 4, 5
Nader - 1, 3, 6, 7