Though, this code isn’t really shared atm, I wanted to at least share some of what I’ve been doing with it.
One of the coolest updates is ensuring that particle transforms can be handled completely independent of the emitter. Currently, in JME and another particle system that I won’t directly mention, scaling and rotation are not independent of the emitter. More specifically, the translation is the only part of the individual particle transform that is independent of the emitter.
Before you say… THAT’S NOT TRUE! Let me explain. If you move the emitter shape, the particle will either a) move with the emitter, or b) keep a constant relationship between it’s original emission point and move independently of the emitter. BUT! What happens when you scale or rotate the emitter? Either a) nothing! or b) the entire particle mesh is scaled and rotated with the emitter.
Sooooo… long story short, I updated this to work as I originally intended!
Here is a demo of what this allows you to do. The vid also shows a small hint at the updates to the influencers, which now allow you to add as many change stages as you would like and define the interpolation between each stage independently. I’ll explain more in a moment, however, watch the yellow color. It chases the emitter as it moves.
Now, as for the updates to the influencers, like stated above, all influencers allow you to add as many different change stages as you would like. For instance, if your were working with the size influencer… instead of adding a start and end size, you can now do something like this: (on a side note… scaling for all three axis is now independant)
emitter.getInfluencer(SizeInfluencer.class).addSize(new Vector3f(1.5f,0.5f,1), Interpolation.bounceOut);
emitter.getInfluencer(SizeInfluencer.class).addSize(new Vector3f(0.5f,1.5f,1), Interpolation.bounceIn);
The above would switch the particle between a wide/short config to a thin/tall config in a jello-ish fashion every 0.25f second until the particle’s life cycle was over. You can also just use addSize(Vector3f size) and it will assume Interpolation.linear.
Anyways, here is a vid using just the color and alpha influencers to create different effects:
Next on the list is adding particle stretching.