View Full Version : API: set nParticle positions
12-18-2012, 04:15 PM
I'm trying to create a command plug-in that scatters particles (nParticles) inside closed geometry, and it's actually working, but the problem is that when I play some frames and return to the first frame of simulation, the particles are deleted.
This is the part of the code where I create the nParticle:
MObject partTransform = dagMod.createNode("nParticle");
MObject partShape = dagFn.child(0);
particle.emit(scatteredPoints); // scatteredPoints is a previously calculated MPointArray
What is the correct way of adding particles to an nParticle node, as the "particleFill" command does?
12-18-2012, 04:26 PM
You obviously forgot to set the initial state for the particles.
For the position attribute, for example, there`s a position0 attribute where the initial state is saved.
The API gives you:
12-18-2012, 04:38 PM
That works :cool:
12-19-2012, 04:03 PM
I have a new question. What's the way to delete all particles or individual particles from a nParticle node?
I'm thinking on setting the age to "1" and using
MFnParticleSystem::evaluateDynamics()for one frame.
Would that work or is there a better way of doing this?
EDIT: I tried this and it's not working. Maybe I'm missing something...
12-20-2012, 02:55 AM
Age normally refers to one second in dynamics rather than 1 frame. Im not sure about the API though.
12-20-2012, 04:50 AM
If you need to delete all the particles, maybe you should just delete the particle system. To delete individual particles maybe:
12-20-2012, 09:58 AM
If you want to kill individual particles, you should set the lifespan mode to "lifespanPP". Or, if it does not exist, create it.
If you want to do that with the API, use
to get the attribute/
to add the attribute.
You got to set the lifespanPP as a MDoubleArray. So, find the particles you want to kill and set the individual array-elements to zero, than create a MObject with that array, set the plug with ::setValue and, again, apply
12-20-2012, 09:58 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.