Greetings, I am having some difficulty with the osgParticle classes, and I was wondering if someone could give me some advice.
It seems that whenever I choose a sorting mode for the particles other than NO_SORT, I get a particle list that grows unbounded. In a normal situation, the particle list should grow at first, and then stabilize as dead particles get reused. So, for example, if I set the particle effect to emit at a rate of 100 particles per second, and I give the particles a lifetime at 1 second, then over the course of the first second, I should see the particle list grow from 0 to 100. At that point, particles should start dying at about the same rate as they are being created, and so the list should stabilize at 100-105 (allowing some buffer because the world isn't perfect). And indeed, this is exactly what I see when the particles aren't sorted (I created a DebugParticleSystem subclass that prints out the particle list counts, and other info, each frame). However, when I set the sorting mode to SORT_FRONT_TO_BACK, then I get this weird behavior where the particle list grows and grows and grows and never stabilizes. Looking at the code, I think I have a hypothesis, but it isn't complete. Basically, after the particle list is updated, the list then gets sorted. This is an in-place sort on a vector of Particle objects, which has the effect (from what I can see) of invalidating the pointers in the _deadParts stack. So, the pointers in the _deadParts stack end up pointing to particles that are still living, and when a pointer from this stack is used to reuse a dead particle, it ends up reusing a particle that is already alive. Now, I'm not exactly sure how this results in a growing particle stack, but my guess is that, in reusing a particle that is already alive, you prevent it from dying on schedule, and so when it comes time to create a new particle, there aren't enough dead ones on the stack to reuse, and so new particles have to be created from scratch. The only thing that gives me pause about this explanation is that, after a Google search, I was not able to find anyone else who is having this same problem. So, I am pretty sure that I'm doing something wrong here, but I'm not sure what. Thank you! Cheers, Frank ------------------ Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=45953#45953 _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

