nParticle.emitter2RatePP question


Hi Everyone,

I’m fairly new to MEL and as such expressions & programming of any sort. I was hoping someone here could help me with regards to what I think should be a fairly simple problem to solve… however, I’ve tried my best on my own and doing google searches to no avail.

Here’s my situation:

I’m trying to create a ‘Debris & Dust’ rig

  1. I’m birthing nParticleShape1 to carry instanced geometry (the debris). This nParticleShape1 is set to ‘LIVEFOREVER’

  2. From this nParticleShape1, I’m using it as an emitter to birth my second set of particles (nParticleShape2). I added to this emitter the ‘Use Per-Point Rates (ratePP)’

  3. I then went to the nParticleShape1 Per Particle (Array) Attributes and right clicked on the field beside Emitter 2Rate PP to make a creation expression which is:
    nParticleShape1.emitter2RatePP = 1;

(I assume this tells Maya to birth a nParticleShape2 from EACH of the nParticleShape1 particles every 24 frames (seeing as my scene is set to 24fps)

  1. From my tests… it appears as though this is what is happening. Now for my quandary:

I would like to tell the emitter2RatePP to birth only 1 particle ONCE and NOT every 24 frames. I only want ONE nParticleShape2 from each of the original nParticleShape1’s.

The reason for this is that the job of the nParticleShape2 is to generate the Dust coming from the Debris… but I don’t want continual puffs of dust being emitted as the debris falls through the shot… i want only once emission so that I can control that one ‘puff’ of dust from each piece of Debris.

I hope my explanation isn’t too convoluted or hard to follow… any help you all could offer would be greatly appreciated.


You could set the emitterRatePP value inside the runtime expression… make it zero when you don’t want emission and 30 or so when you do(perhaps based on the particle age). However it will randomize it so you might not get uniform reliable emission, if that is what you want.

A more controllable option is to use the emit command inside the runtime expression for the particle doing the emitting( where the emit target is the other system ). You need to set all the desired particle attributes within the emit command, like position and velocity(presumably based on the position and velocity of the emitting particle).

Also something to be aware of is that sometimes there are evaluation order problems when the particle systems both belong to the same nucleus solver, when emitting from one system into another. A solution can be to simply assign the second system to a different nucleus solver. (it can also work to reverse the order of the systems in the dag, if you need them to belong to the same solver)


Hi Duncan,

Thank you very much for the reply. I’m going to follow your suggestions the best my limited knowledge on this subject allows… I would love to report back here afterwards and tell you of my success… or possibly, I may ask for some more help if I can’t get things going… but I’ll do my best to solve any issues on my own first.

Once again, my sincere thanks for your help.