Project 1 | Project 2 |Project 3 (Team Project) | Paper Presentation | Final Project

MAIN IDEA

In this project we got four matches dancing. They are turned on in the middle of the scene and they produce fire simulated as a particle system. As the scene evolves all the dancers play a solo and at the end they synchronize. The selected music was Calypso interpreted by Harry Belafonte.




HOW IT WAS DONE

Motion Capture

One of the member of our group played the match role. We use four motion sensors to record the movements. We placed one sensor in the head, one sensor in the chest, one sensor in the knee, and the last in the foot.

Filtering

After we capture the data we realized that there was noise. To filter the noise we developed a Java application that implements a low-pass FIR filter. You can download the code of the filtering application here.

We had a big challenge in the filtering task. Since the “head” of the match moves slowly at the beginning of the animation we did not want filter that information. However we observed a lot of noise in the sensor located at the foot of the actor. After experimenting with our code, we decided to apply different kinds filters to our captured motion. As a result, we have three different levels of filtering to get the final result.

Building The Match

The match model is built up using a number of small cylinders for the match body. The number of these cylinders can be configured inside the main animation script and allows to create more or less 'bendy' matches. The match head is just a stretched sphere.

Animating The Match

To achieve a smoother effect for match movements, we did not use directly our motion capture data to move the match body. Instead, we used our four markers as control points of a quadratic spline, and we then sampled this spline in several points to obtain positions for each cylinder in our match body. Some simple math is then used to rotate cylinders in order to make them line up with the actual spline direction and generate a final continuous shape.

Fire!

The fire effect was generated through a particle system implemented directly in lua. Each flame is made up of three different particle emitters that use both different parameters and prites to generate respectively the blue part of the flame, the main flame and a sort of light glow around it. When all the four matches are turned on, the particle system has to do a lot of work: in this case a major bottlenck was due to the fact that a lot of particles has to be created and destroyed in each frame, and the consequent creation / destruction of scene entities was extremely limiting the maximum number of particles we could have on screen at the same time. An important optimization here was to 'recycle' old particles: instead of destroyiyng dead particles we just hide them, and show them again with the right parameters when a particle of the same kind is created.

Shadows & Lights

The scene has four dynamic light sources associated to each one of the match flames. These lights get turned on / off smoothly in sync with the flame particle emitters. Some additional fixed lighting is used as base light when all the matches are turned off. The 'fake' shadows are created using semitransparent black sprites placed on the table surface. These sprites get animated depending on the movements of the corresponding match to achieve a somewhat realistic effect.


The End Of All Things

Download Matcheez!
  • Run matcheez.bat to start the program
  • Press enter to play the animation. Pressing enter again at any time will restart the animation from the beginning
  • Press 'S' To pause the animation
  • Use the left / right arrow keys to move backward / forward in the animation
  • Use the LEFT mouse button + mouse movement to rotate the view.
  • Use the RIGHT mouse button + mouse movement to zoom the view.


Q&A

Coming soon...
 

© copyright 2003+ Template designed by www.zymic.com