Here are some projects that I have worked on in recent (and not-so-recent) years.
Simulation
Finite Element Simulation, December 2006This program simulates the deformation of solid structures using the finite element method. Objects are simulated using the nonlinear St Venant Kirchoff material model, and the system is timestepped using second order accurate Newmark integration.
Implicit Cloth Simulation, March 2006
I implemented a cloth simulator that models the stretching and bending of cloth using the model given in discrete shells. Integration is done using implicit Newmark and rudimentary collision detection and contact resolution with static objects is supported.
Water Simulation, Summer 2006
I extended my smoke simulator to work on a dynamic domain determined by a level set with mixed Dirichlet and Neuman boundaries to simulate water.
Model Reduction for Real Time Fluids, May 2006
Model reduction is a common method for getting computationally expensive simulations to run in real time (for example FEM). In this project I implemented model reduction for fluids as described by Treuille et al in SIGGRAPH 2006.
Graphics and Gaming
Moog and Blith Combat, 2000-2002Moog and Blith Combat is a 3D fighting game similar to Mortal Kombat that I created in my spare time between by sophomore and senior years of high school.
NBT, Summer 2005
This is my perpetually-in-development next game which I sometimes call NBT, the Next Big Thing (MBK having been Previous Big Thing). In this project I added reasonable physics using ODE. The project also supports a number of features implemented in GLSL including hardare skinning and normal and parallax mapping.
Doom 3 MD5 Resources, Fall 2005
To give students in a course I was TAing some real world models and animations to use in their projects (as opposed to marionettes of OBJ files of barnyard animals), I put together this class to load Doom3's MD5 mesh and animation files.
Ray Tracer, Spring 2005
This is a ray tracer that I wrote as part of a computer graphics course while at UIUC. It supports photon mapping, distribution ray tracing, procedural textures, and other features. Rendering can be distributed among machines on a network.







