$30
Physically Based Modeling
Homework Assignment 2: Particle Systems
The goal of this assignment is to expand on the previous bouncing ball simulation to handle a much
larger-scale particle system simulation. You are to create a particle simulator.
At a minimum, your project should have:
A particle generator
At least one polygonal face that particles bounce off of. Your simulation should demonstrate
that the face is indeed a polygon (with an edge), and not just an infinite plane. The polygon and
at least one of its edges should not be aligned to one of the major coordinate axes – that is, you
should show that you are handling a general polygon, and not just a simple x/y/z value check.
Particles with initial attributes including position, velocity, lifespan, and color (you may modify
or eliminate these in order to achieve particular effects, but your simulator should be able to
handle a particle system with that level of complexity).
Initial attributes drawn from a probability distribution (probably different for each attribute).
Some level of particle behavior control/choreography, beyond simply generating particles and
letting them fall under air resistance and/or gravity. This may include a clever generator,
additional forces such as wind, a potential field, etc.
Large numbers of particles, at least in the thousands.
As a reminder, to receive “A” level of credit for the assignment, you will need to enhance the simulation
from the basic requirements. Some examples (this is not exhaustive) of this might include:
Better rendering techniques. You might want to import your particle simulation results into
another rendering system (e.g. by writing out particle positions per frame), and generate a video
of your results for the demonstration. However, you should be able to demonstrate that your
code produced the original simulation on which the rendering is based.
Particularly interesting forces. For example, these could be vortices or more complex potential
field forces that create particular particle effects.
Using more complex polygonal objects (e.g. reading in .obj files).
Allowing for interesting user interaction with the simulation. In the past, students have used
everything from musical instruments to video processing to do this.
Optimizing computation to simulate extremely large numbers of particles
You should exercise your creativity to come up with a simulation that is interesting.
You should be prepared to demonstrate your program in class on the day it is due, and turn in your code
on ecampus.