Assignment 3: Particle Systems

 

CS 551/651 Advanced Graphics: Computer Animation

Spring 2002, Professor Brogan

Due 9:00 a.m. April 2nd 

 

UPDATES:

(3/26/02) Runge-Kutta integration is no longer created for the assignment.  It doesn't contribute much to the simulation of the particles during free fall and it becomes a bit more complicated for the particles connected by springs.

 

Introduction

 

The following description is what is required to get a “B” on this assignment.  Following this description are suggestions for extra things you can do to earn an “A.”

 

Write a spring/mass simulation of a particle.  You can render each particle however you wish, but conceptually, these are small, symmetrical objects and you can ignore any angular effects.  Your system should have at least 1000 particles.  These particles can be generated from multiple sources and can take on many different physical characteristics.  

 

There should be a minimum of ten surfaces off which the particles should bounce.  These surfaces can be walls, the floor, polygonal objects, etc.  The surfaces need not move, so need only concentrate on the dynamics of the particles.  

 

You should also create a method for connecting sets of particles via springs (and dampers).  Use these springs to create a spring-mass mesh of at least eight particles (a cube, for example) and triangulate the mesh with polygons off which the free-falling particles will bounce.  Again, this spring-mass mesh will be extremely dense and it will not be affected at all by the momentum of the colliding particles.  

 

Your animation should resemble some physical phenomenon.  For example, particles can be used to model waterfalls, rocket exhaust, lava lamps, or snowballs smashing on a wall.

 

You must implement Runge-Kutta and Euler integration algorithms.  Note that you’ll want to pick different time steps for the each.  You’ll also have to implement impulse-based collision response and spring/damper dynamics.

 

Your FLTK interface should include the following: 

 

Turnin in a README that explains the forces in your world (more than gravity?).  Tell me how to run your program (command line arguments?  settings for the interface that produce good results?)  Tell me what you did in addition to the basic requirements I specified above to make sure I give you all the credit you deserve.


Supplemental features to earn an “A” on this assignment.

 

 IK: Build a kinematic structure and use inverse kinematics (underdetermined – more degrees of freedom than constraints) to allow the user to control the structure’s configuration by manipulating the position of the end effector.  You could combine this with your particle simulation by letting the particles bounce off the structure.

 

Water: By creating a lattice of interconnected particles, you can simulate the surface of a body of water.  By simulating the water pressure beneath the surface, you can simulate the transmission of forces across the body and the surface of water will rise and fall accordingly.

 

Cloth: Cloth is frequently simulated as a spring-mass mesh.  We’ll discuss a paper in class that will provide you with some extra ideas.

 

Plants: The surfaces with which the particles collide could be the surfaces of a plant that you grow using a plant grammar.  Make sure your grammar is realistic enough to produce interesting-looking effects.

 

Dynamics: Change the point-mass particles into realistic rigid bodies.  These bodies should be asymmetrical and angular terms must be accurately simulated.  As these bodies tumble off one another and rigid surfaces, realistic things should happen.

 

I’ve described each of these options in a way that permits them to be added to the basic part of the assignment described on page one.  If you really want to focus on developing one of these projects, I’ll let you scrap implementing the basic particle system.  Check with me first, though.


Nitpick Checklist

 

____   If using Microsoft Studio, build your project so FLTK and OpenGL includes and libraries will be in the default locations.  You shouldn’t have to update your project properties to compile and link.

____   First thing in the README must be instructions for how to run your application (are there command line arguments?).

____   Zip your source code and README (not the executable or object files).

____   The zipped directory name must include your name or userID (I’m tired of unpacking “assignment 3” turnins and then moving them to another directory to avoid overwriting).

____   Attach turnin file to email with your name or email in the file name.

____   Submit turnin zip file to dbrogan@cs.virginia.edu.