Animation and Planning in Games

Assignment One : Particle Systems

For this assignment I created an array of different particle systems. A screenshot of each system is below as well as a video presentation of all systems with descriptions of each. One of my overarching goals for this assignment was to render the particle systems in a painterly fashion. My main strategy to this end was to use textures I created using ArtRage, a painting application, and dynamically use subsections of the texture for each glyph.



Tools used

  • G3D (graphics engine) :
  • This basically serves as a wrapper around openGL calls, and provides utility classes such as Vectors and Cameras. I still wrote all the shaders for this project as well as all of the particle system code.

  • ArtRage (texture software) :
  • I used this software to create all of the textures in this program with the exception of the ground plane.

  • GroundTexture :
  • I used this nice open souce tileable ground texture.

  • Normal Map Creation :
  • This is a neat little program that creates normal maps from images. I used it on the ground texture to create a nice effect with phong shading.


Listed in assignment description

  • Ball bouncing on floor
  • Water Fountain
  • Fire Simulation
  • Fireworks Simulation
  • 3D controlled camera (I did use a G3D camera manipulator)
  • 3D implementation
  • Realtime rendering
  • Video documentation
  • Textured Sprites
  • Art Contest Submissions, see below
  • Real-time user interaction with system
  • Art Contest Submissions, see below

Not listed in assignment description

  • Bubble simulation
  • Animated textures

Difficulties Encountered

The most surprising issue that I ran into was a problem I had with the speed of my fragment shader. Going into this I thought I would be able to use large paint themed glyphs, not use as many particles, and have a fast compelling animation. On The contrary I found when using larger particle sizes, especially when the camera had many particles in its viewport the framerate bombed. All that my fragment shader does is a texture lookup, so this surprised me. Instead of fixing the problem I ended up just using smaller particle sizes. I am still curious if there is a good way to fix this, but if I had to guess myself the best way to speed this up would be to clip the particles that are occluded by more forefront particles.

Time Machine Features

By time machine features I just mean things I would like to implement if I had infinite time.

  • Tornado simulation.
  • Adding Perlin noise to bubble simulation.
  • A lightable/spreadable fire.
  • Using the normal map of the ground texture when computing the bounces.

Smokey Bear's Nightmare Fuel