3501 #6: Particle Systems
Assignment 6: Particle Systems
Due date: Wednesday, Nov 17
This assignment will give you some practice implementing particle systems
and parametric motion. The second portion of this assignment lets you build
a piece of technology needed for your project.
Part 1: setup
- Download the particles demo from the 3501 site.
- Run it to make sure it works before starting to modify it.
- Look carefully at the ParticleSystem.cs file, which has the setup
and simulation code for the particle system, and the particles.fx
file, which does the transformations and lighting for the particles.
Part 2: Vertex Shader explosion
Recreate the explosion effect without doing any CPU simulation.
The shader should receive as input the initial position of the particle,
its initial velocity,
and the time, and the vertex shader should compute the new position
for every time t along the parabolic arc of the particle. That is,
the position will be X(t) = Xo + V*t - (1/2)g*t*t for vector position X (initial position Xo) and
vector velocity V, with -(1/2)gt^2 for the cumulative effect of gravity.
Part 3: Your own effect
Invent your own particle system and implement it. You can do the
dynamics either in the vertex shader (if it is very simple motion) or
on the CPU (if you need more elaborate motion and can't get it to work
in the memoryless shader environment).
For full marks, the effect
should have some visual interest and should not be an extremely common
effect: in particular, do not do an explosion, fire, or smoke. Some
simple ideas are to do undirected atmospheric effects such as snow or dust,
or directed effects such as weapon fire or a spray of sparks from an impact;
you can use one of these, or hopefully you can use
your creativity to make a bizarre custom effect needed for your project.
Include a minimal UI (e.g., keypresses) to trigger or restart the effect.
Part 4: Bonus
For a bonus of up to +10%, write a "force field" particle effect in
which the particles move on arcs on the surface of a sphere and which
use the 3-term lighting model to determine illumination. Assign a large
ambient term to imitate a glowing force field, but include nontrivial
diffuse and specular values as well. You can compute the surface normal
of each particle by taking the normal of the sphere (i.e., a unit vector
pointing out from the centre of the sphere).
Handing it in
Hand in your project using WebCT.
The easiest thing to do is to create a single zipped folder and submit
that, rather than all the individual files. It might take a while to
upload, so be prepared to take a little break while the files are in
transit.