This topic offers answers to a number of questions users commonly ask when first learning to use Particle Flow. The first section contains links to all the questions, and the subsequent sections contain the questions and answers organized by category.
How does Particle Flow handle time?
When I go to a different frame, 3ds Max sometimes seems to freeze for a while. What's going on?
Is there a way to pre-calculate portions of a particle simulation, as in "baking" the animation?
What else can I do to optimize performance?
How do I use Particle Flow to make an object explode?
How can I control the accuracy of the Particle Flow simulation?
Can I use MAXScript to affect particles?
Can I use more than one object as instanced geometry?
How can I exclude particles from certain light sources?
How do I open Particle View without clicking Particle View button on the command panel?
Do I need multiple Particle Views to manage more than one particle system?
Can I selectively disable or "turn off" portions of a particle system?
I sometimes see events named “Action Recovery” in Particle View. Where did they come from?
How do I animate action parameters?
How can I synchronize an animated bitmap texture to particle age?
Do I still need to bind my Particle Flow particles to space warps?
How do I make particles follow a path?
Can I use Snapshot with Particle Flow?
How do I use motion blur with Particle Flow?
How do I use the Particle Age and Particle MBlur maps with Particle Flow?
I'm trying to apply Particle Flow to an animation created with a dynamics system. Why am I getting strange results such as unexpected spawning of particles?
How can I make all particles appear in the first frame while giving them different ages?
How can I specify the time frame in which animated parameters are applied to particles?
How can I apply bubble motion to particles?
How can I branch an event to several other events?
Does it matter which order I put actions in an event?
How can I tell which particles are in a certain event?
Why do my particles lose their material when they move to another event?
Can I have an event receive input from multiple events?
I changed an operator setting, but it doesn't seem to have any effect on the particle system.
Can an event be isolated in Particle View and not connected to anything?
How does Particle Flow handle time?
Parameters that measure time in Particle Flow, such as Birth Emit Start/Stop and Age Test Test Value, are specified in frames. However, Particle Flow is always aware of the current system frame rate (fps), and if you change this rate, it adjusts all time-related parameters to keep the same timing. For instance, if you set Test Value to 60 when you're using the NTSC frame rate (30 fps), and then switch to PAL (25 fps), Particle Flow automatically changes the value to 50, so the age that's tested for is still two seconds.
On the other hand, rate parameters, such as Speed, are measured in units per second, so they don't change when you go to a different frame rate.
When I go to a different frame, 3ds Max sometimes seems to freeze for a while. What's going on?
Most of the animation in Particle Flow is history dependent; that is, to be able to draw the particles in a particular frame, Particle Flow needs to know what happened in all previous frames. Normally, when you change a parameter value, Particle Flow needs to recalculate all frames between the start and the current frames. Or, if you go to a different frame, Particle Flow must recalculate one or more animation frames. If you go forward, it must calculate the frames between the current frame and the one you go to. So, for example, if you just go to the next frame, relatively little calculation is needed. But if you go backward, even only by one frame, it must calculate all frames from the start of the animation to the frame you go to.
If a lot of calculation is needed, there is a delay. Meanwhile, 3ds Max displays a message like “PF Source 01 Update xx% (Press Esc to cancel)” in the status bar, so you can get an idea of how the recalculation is progressing. If, when you see this message, you press the Esc key, Particle Flow displays an alert with the message “Click OK to turn off PF Source 01.” If you click OK, the recalculation stops, giving you the opportunity to optimize the animation. For example, you could reduce the number of particles for testing purposes. You must turn the source back on to continue. If you click Cancel, the calculation continues.
Is there a way to pre-calculate portions of a particle simulation, as in "baking" the animation?
Yes. Particle Flow's Cache operator lets you store all or part of a particle animation in memory, and then play back the animation from memory rather than having to recalculate particle motion. This makes it much faster to jump between different parts of the animation. You can even save the cached animation to disk as part of the scene file.
What else can I do to optimize performance?
Particle Flow can place heavy processing and resource demands on your computer. For optimal performance, the most important thing you can do is to use the fastest available CPU. Also, when using particle systems with many particles, install as much memory as possible in your computer, especially if you're using caching.
Other ways to improve performance include reducing the percentage of viewport particles with the Quantity Multiplier setting, and temporarily disabling flows and actions that you're not currently working with. When making parameter changes, return to the first frame and play forward, or set Particle View Options menu Update Type to Forward. That way, if you change a setting, the particle system is not forced to recalculate its state from the very beginning. The change will affect only animation from the current frame forward. On the other hand, the result could be misleading, because you wont be able to see the difference right away.
Also, be cautious when using spawning; it can quickly create very large numbers of particles, especially when you use the By Travel Distance option in the Spawn test.
How do I use Particle Flow to make an object explode?
Particle Flow doesn't have a fragmentation operator, but by utilizing the PArray particle system in a Birth Script operator, you can implement fragmentation in Particle Flow. You can find example scenes, with commented Birth Script operators, in the files on the second disc in the directory Samples\Scenes\Particle Flow\Fragments\.
How can I control the accuracy of the Particle Flow simulation?
On the command panel System Management rollout of the PF Source icon, you can adjust the integration step independently for viewport playback and rendering. The smaller the integration step, the more times Particle Flow calculates particle motion per frame, resulting in greater accuracy at the cost of calculation time.
Can I use MAXScript to affect particles?
Yes. Particle Flow includes a Script operator and test, as well as a Birth Script operator, that let you fully customize the particle system. Each scriptable action includes a sample script, which also lists all relevant scriptable functions. You can also control parameters of the Force operator and Keep Apart operator with script wiring, described in the respective topics.
In addition, you can execute a script at each integration step, and another just before each frame is viewed or rendered; see Script rollout.
Can I use more than one object as instanced geometry?
Yes. With the Shape Instance operator, you can use groups, hierarchies, and objects consisting of multiple elements, with each members of the combined object constituting a separate particle. These objects can be emitted in a specific order, or in a random order. For example, you can use a text object, with the letters emitted in the order in which they appear in the text.
How can I exclude particles from certain light sources?
To prevent particles from being affected by a light source, use the light’s Exclude function, found on the General Parameters rollout (Modify panel), to specify any events containing particles to be excluded. Specifying the PF Source XX object (default name) has no effect; you must specify all objects listed as PF Source XX->Event XX.
How do I open Particle View without clicking Particle View button on the command panel?
Press the 6 key. It might be necessary to first turn on the Keyboard Shortcut Override Toggle.
Do I need multiple Particle Views to manage more than one particle system?
No: All particle systems appear in Particle View. You can scroll and zoom the event display to see the different systems.
Can I selectively disable or "turn off" portions of a particle system?
Yes. Particle View gives you a number of different ways of doing this. You can click an action's icon or an event's light-bulb icon to turn it off, or use the right-click menu, or use Edit menu's Turn On and Turn Off commands. Also, if you press Esc while Particle Flow is calculating, 3ds Max gives you the opportunity of turning off the entire particle system, thus immediately returning control of 3ds Max to you. You can then analyze the system to determine the area of slowdown, optimize or simplify the particle flow, and then recalculate the animation.
How do I animate action parameters?
Use the same Auto Key method as with animating any other parameter in 3ds Max.
How can I synchronize an animated bitmap texture to particle age?
Use the Material Dynamic operator in conjunction with the Bitmap 2D map. You'll find a procedure that describes the method in detail here.
Do I still need to bind my Particle Flow particles to space warps?
No; you use the Collision test, Collision Spawn test, or Force operator to affect particle motion with 3ds Max space warps. The ability to do this on a global and local (per-event) basis gives you much greater control over how space warps affect the particles than with previous systems.
How do I make particles follow a path?
You can use the Speed By Icon operator or the Find Target test, assigning the icon or target to a spline path. You'll find illustrative procedures in both topics.
Can I use Snapshot with Particle Flow?
No. The Snapshot tool is not currently compatible with Particle Flow.
How do I use motion blur with Particle Flow?
You can apply motion blur on a per-event basis by editing the event's object properties with the right-click menu in Particle View, or on a global basis by editing the global event's object properties. In the Particle View dialog, highlight the event to edit and then right-click and choose Properties. On the Object Properties dialog, edit the Motion Blur group settings.
Alternatively, you can apply motion blur to an entire Particle Flow system without the need to set properties by using the multi-pass motion blur effect with a camera.
How do I use the Particle Age and Particle MBlur maps with Particle Flow?
To use the Particle Age map with Particle Flow, you must use the Delete operator to give the particles a finite life span. For further information, see Delete Operator.
I'm trying to apply Particle Flow to an animation created with a dynamics system. Why am I getting strange results such as unexpected spawning of particles?
The dynamics system probably generates rotation keys using the Euler XYZ controller. To avoid interpolation discontinuities, change the rotation controller for such objects to TCB Rotation.
How can I make all particles appear in the first frame while giving them different ages?
Use a negative frame range in the Birth operator. For example, to get a particle-age spread of 30 frames, set Emit Start to -29 and Emit Stop to 0.
How can I specify the time frame in which animated parameters are applied to particles?
You can animate many of the Particle Flow parameter values with keyframing. In most actions, you can choose the time frame by which to apply this animation to the particles from a drop-down list labeled Sync By. You can apply this animation to particles in the time frame of the entire animation, or at a specific time of each particle's life (particle age), or based on the length of time the particle has been in the current event. See the individual operator and test topics for details.
How can I apply bubble motion to particles?
Although Particle Flow doesn't have the bubble motion option found in PArray, you can simulate the effect by following this procedure:
The result is particle motion in which the particles bob about while moving along their paths, similar to bubble motion.
How can I branch an event to several other events?
Particle Flow includes several Split tests, which let you send some particles to another event based on quantity, selection, or source. You can use any number of these in a single event to send parts of the particle stream to different events, and then use a Send Out test to redirect the remaining particles to another event. Keep in mind that any tests subsequent to the first can work only with particles remaining in the event, not necessarily all particles that begin in the event.
Does it matter which order I put actions in an event?
It depends. If an event contains two or more operators of the same type, such as Shape, the last one overrides the rest. If an event contains two or more tests, they are evaluated and particles redirected in the order in which the tests appear.
However, if two actions in an event control the same properties, the interaction is more complex. An action that works on a continuous basis will typically prevail over one that affects particles only when they first enter the event. For example, both the Find Target test and Speed operator can control particle speed and direction, but the test works continuously, while the operator takes effect only once. If an event contains both, particle speed and direction will be primarily controlled by the test, in general, even if the operator comes after the test. However, the operator's settings will still have some influence over particle behavior, particularly if its Speed value is significantly higher than that of the test. For a list of actions’ effective time frames, see Action Time Frames.
Also, if you're testing for a specific condition that can be affected by other actions in an event, be sure to place the test after the actions. For example, in an event with a Force operator and a Collision test, place the Collision test after the Force operator. This avoids the possibility of the force pushing particles past the deflector before Particle Flow can test for the collision, which would allow the particles to penetrate the deflector. In general, place tests at the end of the event.
How can I tell which particles are in a certain event?
One way is to set the Type option for the Display operator in each event to a different choice. For example, the first event could use Ticks, the second Circles, and the third Lines. This way the particles change appearance in the viewports as they move from event to event. You can also use the Display operator to change particle colors, to further distinguish them.
Another way is to select all particles in a certain event. Select the Particle Flow source icon, and then go to the Modify panel Selection rollout and click the Event icon. You can then click an event in the Select By Event list to highlight all of its particles in the viewports.
Why do my particles lose their material when they move to another event?
A material is a static property of an event. It does not travel along with the particles from event to event. A particle's material ID does, but its material does not. If you want particles always to use the same material, define the material in the global event with a Material operator or a Shape Instance operator. Otherwise, you need to define it in each local event.
Can I have an event receive input from multiple events?
Particle Flow lets you wire any number of tests to a single event.
I changed an operator setting, but it doesn't seem to have any effect on the particle system.
A similar operator in the global event might be overriding your local operator. By default, Particle Flow evaluates local operators first, and then global operators. If a global operator affects the same property, such as speed, as a local one, the particle system will use the value set by the global operator. You can set local operators to override global ones by choosing Particle View Options menu Action Order Globals First.