Physically Based Animation Project - Fluid Simulation

Smoke Simulation (C++, openGL) - Made a fluid simulation project that simulates smoke using the Incompressible Navier-Stokes equations. The smoke uses a staggered 3D Mac grid for the advection step for velocity, density, and temperature, and solves it using a semi-lagrangian approach. Uses the conjugate gradient algorithm to solve the system of linear equations for the smoke pressure step. Also includes buoyancy forces so smoke travels up when it is warmer and falls down when it is colder or more dense. Finall, vorticity confinement is included to help with the averaging which causes the smoke to lose its swirling effects. Finally an object is placed in the volume to interact with the smoke, in this case a mini ceiling below the top of the smoke volume.

Additional Features / Optimizations - The fluid solver utilizes the main diagonal preconditioner to help speed up the pressure solve step of the simulation. The smoke is rendered using a basic openGL window with the density value used for the alpha value of the smoke grid. The user can use the mouse to move the interactive emitter located at the bottom of the volume, and use keyboard inputs to emit smoke, temperature, and velocity upwards in the volume.

Video Demo - Here is a video demo of the fluid solver as presented in the CIS 563 - Physically Based Animation course I took in the Spring 2009 semester at Penn.

Back to Projects Page