For my electrical engineering senior design project, we designed a system that
hides digital information imperceptibly in audio. This information was recovered
by a DSP with a microphone that captured the output of a speaker.
One of the projects for my computer graphics class (EECS 487 W11) was to write a
raytracer and render an interesting scene.
The description from the course gallery says:
I generated this animation of Newton's cradle with 50 separately raytraced
scenes. I generated the scene files with a python script that simulated Newton's
cradle, moved the camera, and controlled the moving "Go Blue" text in the
background. Each frame has (24)^2 rays per pixel to generate a variety of
effects, including area lights with soft shadows and motion blur. Using this
many rays also helped smooth the image so successive frames looked better in
sequence (early renderings had distracting artifacts where soft shadows appeared
to flicker). It would have been impossible to generate this animation in the
time allotted without some optimizations. Most importantly, I parallelized the
raytracer so I could take advantage of my multiple processor cores. This made
experimenting with different scenes much faster and also helped speed up the
final render. The slowest part of rendering was almost certainly drawing the
cradle, which was the only mesh in the scene. Adding a bounding sphere test and
reducing the poly count dramatically improved rendering speed. This final
animation was generated overnight (approx 7 hours) with 24 cores.