Graphics

I enjoy learning about and experimenting with computer graphics. These projects represent a couple of my endeavors in this field.

Birds Flocking over Generated Terrain

This animation features a flock of birds in flight over an artificial terrain generated through a customized subdivision scheme. The realistic flocking motion emerges from simple physically-based rules followed by each bird. The simulation and rendering run in real time.

Shallow Water Simulation

Shallow water simulation simplifies the problem of simulating a fluid by limiting the problem to the surface of the water. The height of points along a two dimensional grid is calculated based on various physical parameters of surrounding points and the result is rendered in real time. The video shows off a few different visualizations of the data involved in the simulation: vertical height, horizontal velocity, and horizontal direction. Download the program itself to create your own waves and see all the visualizations.

Wii Remote Control Scheme for an Immersive Visualization System

The immersive visualization system pictured here consists of multiple projected surfaces designed to better fill a participant's field of view. While capable of displaying many different scenes, the atta texana project - which maps the tunnels and chambers of a leaf cutting ant colony - was presented as a New Tech demo at SIGGRAPH 2008 and gained coverage in a BBC article. My main contribution to the project was creating a control scheme to navigate the various scenes using the Wii remote.

Ray Tracer

This collection of images was produced by a ray tracing program. Features include texture mapped planes, spheres, and polygons, multiple light sources, soft shadows, multiple levels of reflection and refraction, depth of field effects, image based lighting, and caustics. Some custom shaders were programmed as well, including "bump grid", "rainbow swirl", and "wavy" (pictured). Watch a video highlighting spheres with changing refraction and texture maps with transparency.

Computer Aided Sculpting

Most of these images were produced using TopMod, a topological modeling program. A few illustrate the results of a python script used to create a twisting torus tool for TopMod. Other images show real object sculptures based on 3D models.

Animated 3D Hand

This hand model was constructed from seventeen elipsoids and rendered using OpenGL. Its position is described using a hierarchical model with twenty-five adjustable joints. The hand can be animated by linearly interpolating between multiple positions, each position being a list of values describing each joint. My original goal was to perform sign language with the hand. Run the jace.bat batch file to see "Jace" spelled in sign language. Other animation and batch files are included. See the accompanying ReadMe to learn how to make your own animations.

Birds

One day I saw some birds in flight. As I watched how they stayed together as a flock while avoiding obstacles like trees, I was inspired to try and model their motion. The interface to this program is not very intuitive, but a description of the controls is included. Watch a clip of the program in motion.

Color Space Cube

This is a model of a color space mapped to a cube. I wrote an OpenGL program to do the shading. I copied a screenshot and edited it in Paint to create the finished product. I also like the way the tabs interlock so that no tape is required.

Nintendo 64 Logo

I made this model in high school to learn about the DirectX X file format. You may need to download an X file mesh viewer to see it correctly. You can get one with the Microsoft DirectX SDK.

Vase

The vase is modeled using points along a Bezier curve rotated about a vertical axis. The program is written to support any object with a specified Bezier curve and material. Included are files for a vase, a gold ring, a drop of water, and a mushroom. Just click on the batch files to run the program with different inputs. You can create your own models of any object with rotational symmetry.

Sparks

Although fun to watch, the particle simulation is not the main focus of this project. Rather, the implementation of interfaces in C++ was the new concept I was experimenting with. Both Points and Lines are drawn with the same function call since both implement the Drawable interface. See the included code for more details.