Hia,
I’m proud to announce that I’m finally ready to present the project I’ve been working on for the last couple of weeks. It’s Particle Reality, an extremely versatile open source java particle engine. It is based on the ideas of a commercial partical animation software package named Particle Illusion by wondertouch software. (You can download a demo version)
Basically, the library allows you to define all aspects of particle and particle emitter behaviour over their entire lifetime in xml, allowing for a very flexible particle system.
A good place to start would be:
[url=http://cal007300.student.utwente.nl/vincent/particleReality/particlereality.jnlp]
http://cal007300.student.utwente.nl/vincent/particleReality/images/c/c2/Demo_5_small.jpg
http://cal007300.student.utwente.nl/vincent/particleReality/images/b/b3/Demo_4_small.jpg
Webstart Demo
[/url]
It is very easy to use in your own programs:
// Loads the file 'particleset.xml' using the classloader:
ParticleEffectsManager.loadEffectsResource("/particleset.xml");
// Gets the emitter with the name 'myEmitter' from the manager
Emitter myEmitter = ParticleEffectsManager.getEmitter("myEmitter");
// Initialize the emitter using the Renderer (Do once)
OpenGLRenderer renderer = new SimpleOpenGLRenderer();
renderer.initialize(myEmitter);
// Updating and drawing the particles from the emitter (Do every frame)
renderer.render(myEmitter);
Here is an example of how a particle is described in xml
<particle blendingMode="intense" shape="/img/smallblurstar.png" name="trail" useEmittersRangeAndAngle="true">
<angle type="specific">
<key frameNum="0" angle="45"/>
</angle>
...
<motionRandomnessVariation>
<key frameNum="0" value="44"/>
</motionRandomnessVariation>
<bounceVariation>
<key frameNum="0" value="0"/>
</bounceVariation>
<sizeOverLife>
<key life="0%" percentage="160%"/>
<key life="42%" percentage="140%"/>
<key life="63%" percentage="120%"/>
<key life="80%" percentage="75%"/>
<key life="100%" percentage="0%"/>
</sizeOverLife>
<velocityOverLife>
<key life="0%" percentage="120%"/>
</velocityOverLife>
<weightOverLife>
<key life="0%" percentage="100%"/>
</weightOverLife>
<spinOverLife>
<key life="0%" percentage="100%"/>
</spinOverLife>
<motionRandomnessOverLife>
<key life="0%" percentage="100%"/>
</motionRandomnessOverLife>
<bounceOverLife>
<key life="0%" percentage="100%"/>
</bounceOverLife>
<color>
<key life="0%" red="255" green="126" blue="152"/>
<key life="25%" red="255" green="141" blue="35"/>
<key life="65%" red="255" green="252" blue="165"/>
<key life="90%" red="0" green="0" blue="0"/>
</color>
<alpha>
<key life="0%" percentage="100%"/>
<key life="25%" percentage="100%"/>
<key life="65%" percentage="100%"/>
<key life="90%" percentage="0%"/>
</alpha>
</particle>
I don’t think there are any aspects of particles which cannot be changed or modified, allowing for tons and tons of particle behaviours. Even better, you can download the demo version of particle illusion and mimic their massive library of particle emitters for effects including text-fading, explosions, worm holes, dripping. Or design your own.
A few main points which will be adressed in the future of this project will be to create a particle editor, optimize the system, make renderers for java2d and bring the particle system into the realm of 3d.
Enjoy, please let me know what you think and if you happen to use the program in one of your own projects or create a particle emitter, let me know. Besides, the project page is a wiki, so you can all expand on it, if you like
Kind Regards,
- Vincent Vollers