Has anyone successfully used the particle engine in Panda for a project? Here are some short notes on the particle system, and assumptions I have formed. Correct me if I am wrong, please!
ParticleEffects are Python objects that contain references to ParticleSystems. ParticleSystems are wrappers to the actual C++ class that handles particles. PS contain a factory (particle source controller), emitter (particle nozzle), and a renderer (particle visualizer). A PS also may have one or more forces attached to the PS which modify the emitter.
I get an instant crash if I enable set the flag SystemGrowsOlder on a ParticleSystem. Is there something I am missing here? Currently I am adding a task that will run cleanup() on the ParticleSystem object after the desired lifetime. I don’t like this because cleanup() will delete all particles, immediately, regardless of their remaining life time. I would prefer the particle system lives long enough to finish animating/rendering any child particles and then perform a self-cleanup, which is what I assume SystemGrowsOlder would do if it didn’t crash?
The ParticlePanel is very crash-prone. Okay, obviously it hasn’t been touched in ages. If people aren’t using this for their projects, how are they building particle systems?
The ParticlePanel program doesn’t appear to be aware of multiple ParticleSystems. You can define them, but only the first one is saved to the .ptf file and can be selected in the editor.
Is it wrong to assume that one could chain multiple ParticleSystems in order to achieve layered effects? (ie: Smoke + fire at the same time, in two different PS running under the same PE.) If so, how does the ParticleEffect get cleaned up once all of the ParticleSystems have run their length?
If the built-in particle system isn’t used that often, are people implementing their own?
And if they aren’t using Panda particles, is it worth fixing up the Panda system? To me, it looks like a fairly robust and feature-rich system compared to the other particle systems I’ve used.
I’ve used particle systems to good effect, but that was some years ago. The Panda systems were great for automating, e.g., fire, smoke, dust clouds, etc. If all you need is a few individual particles, or if you want manual control at a comprehensible level, it’s quite easy to spin your own system by creating multiple transparent textured cards and invoking any of the SetBillboard* methods on them to keep them facing the camera.
The only thing that the built-in particle system lacks which I would like to see is aligned particles. They don’t have to be true axial billboards, I’d be happy with screen-aligned particles that just rotate their Z-axis (or whatever) towards the direction they are moving.
That would be useful for things like particles flying in the direction they are traveling, like sparks.
Treeform, I found your ParticlePanel patch and I am using it. That did fix the most annoying crashes of the Panel, but I am guessing you have abandoned the system entirely due to its bugginess?
I’ve thought about my own system too, but I am not familiar enough with the C++ side of Panda to be willing to tackle such a system right now.
I’ve been playing with Panda particles and they seem to work – mostly. They just need some TLC, part of which will need to be done in the C++ code. The reason I started this thread is that that Panda particles seem almost unfinished. If my suspicions are true (points #2 and #4 in my OP), there are also some logic flaws embedded in the particle’s Python interface that will require some careful thought to resolve.
Hence me asking how many people have actually used them in released projects… As I am curious if anyone else has tackled this already.