For my Masters thesis, I wrote a volume modeling tool kit and volume renderer in C++ and then used swig to generate python bindings for it. This allows the user to generate and render volumes using python scripts. This shot had guide particles that were animated in Houdini written out to a file. A python script read in this file and then used the tool kit to build volumes from the particles and their attributes. The script then rendered the volumes. The background was animated and rendered in Maya. The rendered volumes were composited onto the background using nuke.
In Digital Production Arts at Clemson, our studio course has us work in teams on a short film for a year. This is a shot from the film I worked on. I built a particle system into the rig of the matches for the flames. To render the flames, I used a python script to export particle and camera data for the shot. I then read that data into an early version of the volume renderer that I wrote. From that data, I was able to build a volume and render it for each flame in the shot. The flames were then composited into the shot.
This is from the same short film mentioned above. In this shot, I animated the particles. To render them I used the same process mentioned in shot 2. I used a python script to export the particle and camera data and that was then read by my software. From that, a volume was generated, rendered and then we composited it into the final shot.
This is a wisp generated and rendered by my volume renderer. For each frame 10 million particles are displaced from center of the wisp using Perlin noise and placed on a voxel grid. This grid is then rendered. The movement seen in this shot is caused by an animation of one of the noise parameters as well as a rotation of the wisp.
For my physically based animation class, I wrote a particle system. I also implemented collision detection between the particles and solid geometry.
For the same course I also wrote a cloth simulator. This was my final project for the course. The cloth also has collision detection with spheres implemented.