24

Is there a way to animate whether or not a particle emitter is emitting particles at a given point in time? I'm using the particle system to animate bullets, so basically I'm trying to find a way to say: at frame 150 the gun fires a burst until frame 170, at frame 240 it fires a burst until frame 265, and so on.

I've tried key framing the particle render setting between "object" and "none", but the problem with that is that the hidden particles are still there, so when the render setting switches to "object", the particles that were initially hidden suddenly appear.

I've also thought of putting a plane (not rendered) with a collision modifier in front of the emitter and then moving it when I want the emitter to start emitting particles.

Is there a better way?

Yu Asakusa
  • 797
  • 4
  • 15
Spectre87
  • 343
  • 1
  • 2
  • 10
  • 3
    I know you can do this by setting up multiple particle systems, each with their own start/end times, but that's a really clunky way to handle this. – Gwen May 27 '13 at 02:19
  • I was going to suggest the same thing as Gwenn. Multiple particle systems would give you a lot of control over what you are trying to achieve here. – A Wild RolandiXor Has Appeared May 27 '13 at 03:30
  • LOL Is this a joke? You cannot animate the Particles Number in Emission, that would provide an off-going? Instead have to make different Particle Systems with different Frame Start Ends. Thats ridicilous lol – Gordon1fm Mar 14 '23 at 21:34

6 Answers6

18

The simplest way to handle this is to add a keyframe for the particle lifetime. To make the particles stop emitting, set the lifetime to zero.

If you have very fast-moving particles (such as bullets), you will also need to keyframe the initial velocity down to zero.

Gwen
  • 11,636
  • 14
  • 68
  • 88
  • Thanks... That would definitely work - the problem is that it won't let me set a lifetime of less than 1. Any way around that? – Spectre87 May 27 '13 at 02:39
  • Lifetime 1 should be 1 frame; if you want to keep it from emitting at a certain time, keyframe the emission rate to 0. – Kyle Willey May 27 '13 at 03:04
  • 1
    @AlexSchimp With a lifetime of 1, the particles shouldn't appear in the render (unless your particles are type "halo"), even though they appear in the 3D view. – Gwen May 27 '13 at 03:11
  • @KyleWilley I don't think there is a "rate" setting, although there is a "number" which can be set to zero. Unfortunately, it has the same problem as the OP's original solution in that it makes all of the previously emitted particles disappear when it is keyframed. – Gwen May 27 '13 at 03:13
  • @Gwenn I have my particle type set to object, and they appear in the render even with the lifetime set to 1. I do have the velocity set fairly high, as they are bullets. If I turn the velocity down, they don't render, but, of course, I need the velocity set high. – Spectre87 May 27 '13 at 03:25
  • @AlexSchimp Well, it couldn't have been something easy, like rain? Since they're moving so fast, is it okay if bullets that have already been emitted disappear when you turn the emitter off? If that's the case, you can keyframe the "number" parameter to zero. – Gwen May 27 '13 at 03:33
  • @Gwenn You're totally right; Blender lacks a rate functionality for emitters-I was thinking of Maya.

    As for the minimum one frame, are the particles emitting from the brake or the chamber? If they're coming out through the barrel and only exist for one frame, they'd be effectively invisible.

    – Kyle Willey May 27 '13 at 04:19
  • 1
    @Gwenn If I keyframe the initial velocity along with the lifetime, it works great. I just turn the velocity down when the lifetime is set to 1. – Spectre87 May 27 '13 at 13:17
  • @KyleWilley I'm actually compositing the bullets into live footage, so the gun isn't rendered in Blender. But keyframing the velocity does the trick. – Spectre87 May 27 '13 at 13:23
  • @Gwenn AFAIK keyframing the number is impossible currently. – gandalf3 Nov 12 '13 at 04:25
  • thanks, but doesn't seem to stop emitting. lifetime cannot be set to zero – juFo Aug 10 '16 at 15:03
  • life time can't be set to 0 – user2824371 May 23 '20 at 13:56
5

According to the comments here, it seems that keyframing (hovering over the value with mouse cursor and pressing I) the velocity of the particles, (Velocity panel, Emitter Geometry: Normal) is the best way to go.

enter image description here

You can also automate the curve with F-Curve Cycles modifier (Shift+E):

enter image description here

If it annoys you that the 0-velocity particles keep popping up, you can model a structure around the emitter:

enter image description here

Manu Järvinen
  • 7,392
  • 2
  • 25
  • 62
1

I just did this by having a kill particles collision cube jump in and out of the particle path, close to the particle generation point. A little clunky, but seems to work.

rick
  • 41
  • 4
1

You can keyframe the visibility of your emitting object in the outliner window. Just select the required spot on the timeline, find the name of your emmitter in the top right outliner window, then hover over the eyeball symbol next to it and press i on your keyboard. Visibilty can be toggled on or off as required and keyframed accordingly.

0

The best way I've found is to duplicate the particle system, make single user copy, then adjust each frame start/end to desired lengthsParticles System On/Off

  • It's a little lame that this answer is downvoted, because it's actually a practical answer that works just as OP asked. – Marty Apr 12 '23 at 14:46
0

I found the solution for me. Just animate mesh far far away in one frame and then return.

enter image description here

enter image description here

colorage
  • 1
  • 1