User Tools

Site Tools


DynamicSet Tree View

  The DynamicSet Tree View is one of the most important areas inside of thinkingParticles. It is here that you set up your control systems and process ordering for your particle animation. Nearly all of the advanced effects that you can create within the system are based on the fact that thinkingParticles is able to store its rules and operators in separate DynamicSets and have them evaluated based on other rules and conditions.

TreeView - the tree view will give you fast access to DynamicSets within a tP system. You may Cache, Drag and Drop, Reorder, Rename or Remove DynamicSets.

Create - when pressed an Empty DynamicSet will be created below the current level.

UP - when clicked, the DynamicSet is moved up in the tree.

Down - click this button to move a DynamicSet down the hierarchy.

Remove - click this button to remove/delete the selected DynamicSet from the tree.

M - lets you merge a DynamicSet to the current position in the tree.

P - will show you a set of presets that give fast access to a DynamicSet already prepared including empty Groups and possible operators pre-wired.

Load - lets you load a blackbox or any dynamic set that was previously saved.

Save - saves the selected black box or DynamicSet along with any sub-sets.
There are three options available:

  • Save With Groups in Use -  select this option to only save those Groups that are actually used in a DynamicSet
  • Save With All Groups -  this will save ALL groups even if they are not used.
  • Save As Preset - this will save the Dynamic Set to its dedicated Preset folder. The saved file will show up as a preset option when P is clicked on.

What is a DynamicSet?

DynamicSets are another key to the power of thinkingParticles. A DynamicSet can be seen as another type of hierarchical container that holds one or more instructions (operators, helpers and conditions) telling the created Particle Groups what to do. Like Particle Groups, DynamicSets can also hold other enclosed (or nested) containers within them with even more instructions. By creating and using these DynamicSets, and placing them into a single hierarchy you can create particle animations where only certain particles (those within a specific Group) get affected by a set of conditions or rules in one DynamicSet, while other groups of particles aren't affected at all, or are affected by rules and conditions in a completely different DynamicSet.

Now by default, thinkingParticles uses the Master Dynamic DynamicSet as the root of the hierarchy. The Master Dynamic is a permanent part of the interface, and can't be deleted or moved by the user. It is here that you turn the entire thinkingParticles particle system on or off and set up how your particle system is displayed in the 3ds Max view ports and the user interface for thinkingParticles. When you create DynamicSets, they will all reside beneath this Master Dynamic root.

Any number of instructions (operators) may be stored in one DynamicSet and a DynamicSet can store any number of other sub-DynamicSets. It is recommended that you use multiple DynamicSets to create a particle system. Now, it may be tempting to just add all of your operators to a single DynamicSet - and in the end, you might get the effect you want. However, from an organizational standpoint, doing this with complex effects would be bad practice. Just as in life, you wouldn't put all of your clothes (socks, shirts, belts, etc.) into one drawer for keeping since it would be difficult, if not impossible to find anything in the future, the same holds true for thinkingParticles. Putting all operators in a single event will make diagnosing problems within the particle animation much more difficult, and it will also make it far harder to modify or re-purpose the elements within the animation. Think about what you are going to do and then break the task up into manageable chunks by using multiple DynamicSets.

Creating and Manipulating DynamicSets 

To create new DynamicSets, simply click on the Create button beneath the Tree View. Once you've got a new DynamicSet created it will be named DynamicSet by default. As this name is not terribly descriptive and is given to all DynamicSets you create, when you generate a new DynamicSet you are strongly encouraged to rename it immediately to something more recognizable.

To rename a created DynamicSet you should take your mouse and perform a slow left-click over the name. This process is identical to renaming a file using standard Windows controls. You'll click once to select the DynamicSet (it will highlight), then do the slow left-click to open up the naming dialog.

Once you have several DynamicSets, you might decide that you want to re-order them or make one DynamicSet a sub-set of another DynamicSet. To do simple re-ordering of the various sets, you can use the UP and DOWN buttons beneath the Tree View. You also have the ability to drag-and-drop one DynamicSet or the operators they contain onto another DynamicSet in order to make it a sub-set of that DynamicSet. This process is sometimes called nesting.You can even drag and drop DynamicSets onto the Master DynamicSet to effectively bring them back up to the main branch level.

DynamicSets can be re-ordered in various ways, the Drag Icon will indicate the task that will be performed when the mouse button is released. Arrow symbols will show where the DynamicSet will land in the hierarchy. Keep in mind that there are several “hot” areas in the DynamicSet Tree-View to drop an Icon on.

You can drag and drop a DynamicSet on :

  1. the name of the DynamicSet; this will move the DynamicSet UP/Down in the Hierarchy
  2. the Icon of the DynamicSet; this will move it “inside” a DynamicSet


Shift + Dragging a DynamicSet will copy the complete DynamicSet or operator to its new position.

One other important feature of DynamicSets is the fact that you can disable them quickly from the DynamicSet Tree View. If you right-click upon the DynamicSet, it will turn a light grey, indicating that is has been removed from processing by thinkingParticles.

DynamicSet Caching


When an icon is right clicked in the DynamicSet Tree-View, a special DynamicSet related menu is opened. Every DynamicSet may be recorded to hard disk individually. Controls to set or create cache files along with statistical data, is displayed in that right click menu as well.

Important Restrictions 

DynamicSet caching is a powerful tool to speed up and enhance particle animation work flow within a network. Caching particle effects removes the calculation overhead usually introduced by “serial” processing of particle effects. Particle effects rendered in a network are always calculated from start to the current frame to be rendered; so with an increasing amount of frames the rendering time also increases a lot when particles are involved. Caching particles helps there a lot, because every position of the particle is already calculated, every PC in the network can access the frame data immediately.

DynamicSet caching is a great tool, however as everything on this planet comes with a price tag there are some restrictions or things to consider.

  • Recorded particles can not be modified in any way (they are recorded!); however, the shape of a particle may be changed
  • All DynamicSets to be recorded must be “self contained” and complete, DynamicSets without a generator in it will not be recorded. A forces or movement only DynamicSet will not be recorded at all.
  • Cached DynamicSets maybe “stacked” or “nested” as long as they are complete and self contained
  • Deactivated DynamicSets will not play back their caches or create any particles at all

Cache Stop - choose this option to disable a cache playback

Cache Play Backward
- when selected, the cache is played back in reverse

Cache Record
- starts the cache recording to the hard disk

Cache Unset
- removes the assigned cache file

- displays the statistics about the cache file

Rule Processing in thinkingParticles

thinkingParticles uses a real-time interpreter to analyze the logical setup of the particle system. Based on a top to bottom order, the tree and its branches are analyzed in real-time and worked through one after another. This means that you need to examine your DynamicSets' order to determine how the particle animation will flow. As you add operators and rules to DynamicSets, they are added in so that they go one beneath the other - each one appearing in the DynamicSet Tree View at the bottom of the selected DynamicSet. Keep this in mind as you build up your particle animations.

You can add the operators to a DynamicSet in any order, but should be aware of how they are positioned in the stack relative to each other as your particle animation grows in complexity. Many conditions are dependent on the results that other conditions create. As was shown above, you can change the relative order of the DynamicSets and the operators within them from the DynamicSet Tree View.

A good question to ask yourself is: When do I get the results an operator needs?

Remember that one condition will generally create a rule or condition (such as a collision) that another condition will subsequently want to make use of and act upon the particles. For instance, if you have an event that creates a collision and another that modifies the direction the particle travels, would you want the directional change to occur before or after the collision takes place? It’s this kind of thinking that you must apply when you run into trouble with your particle animations.


Below is an example where the order of rules within the DynamicSet Tree View can provide problems for the final outcome of the particle animation. While the order of the hierarchy doesn't always cause problems for a particular effect, there are situations where the top-down, left to right ordering of the operators is critical for the correct results. Just remember that all operators, conditions and Dynamic sets are evaluated in a top down left to right manner.


Before we proceed ahead, here is a description for each of the DynamicSets and visible operators in the example.

  • Create Particles DynamicSet: In this DynamicSet, 2 particles are created.
  • Crash DynamicSet : Within this DynamicSet, the collision between particles is handled.
  • Shape DynamicSet : This subset to the Crash DynamicSet assign a shape to the particles.
  • Repulsion Bounce Operator : This operator exchanges impulses when colliding
  • Fragment Operator : This operator creates fragments on collision
  • PPassAB Operator : This special operator (called an Initiator) handles collision detection and determines when the other operators are evaluated
  • Motion DynamicSet : This DynamicSet provides the initial speed of the two particles.
  • Spin Fragments DynamicSet : This DynamicSet spin the fragment particles.

    If you were to try and “read” this particle system, it would read as follows:

  1. thinkingParticles will start by evaluating the Create Particles DynamicSet first by going through all of the operators and conditions within it.
  2. Next, the Crash DynamicSet is evaluated. As can be seen, it contains other Sub-DynamicSets and several operators. So the next step is that the Shape DynamicSet is evaluated along with its internal operators and conditions.
  3. After this is complete, the operators Repulsion Bounce, Fragment and PPassAB are evaluated in that order (once the PPassAB Initiator is evaluated).
  4. Once the operators are evaluated, the Motion DynamicSet and finally the Spin Fragments DynamicSets are processed

While this order of rules is still not completely understood at this point (since we do not know what operators and rules will drive the various DynamicSets), we do understand the order in which they will be processed.

Analyzing the logic

When you begin to look at the logic behind the order of rules as shown above, you should be able to spot some errors just by the naming of the Operators and DynamicSets.

First and foremost, it does not make much sense to first test for a collision (Crash DynamicSet and the PPassAB operator) and then move the particles (Motion DynamicSet). The Motion DynamicSet is evaluated after the PPassAB collision operator, it's not critical in this case because when the objects don't move they can not collide. The result of the above DynamicSets is shown below. After a crash of the two particles, fragments are created.


False Thinking!

In this example we will assume that the user who did the setup does not care about hierarchies or the order of DynamicSets and operators. The scene/situation is exactly like the one described in the previous chapter but with one little exception. In the case shown below the Shape DynamicSet is placed after PPassAB. By consequence, this means that the shape assignment for the particles is done after the collision and fragmentation has been performed. This is absolutely wrong! As we will assign a shape to particles that do not exist at the time we have performed the fragmentation. The fragment particles will not become “fragments” they will become spheres or whatever shape is assigned in the Shape DynamicSet.


As shown in the previous chapter, the setup is nearly the same, only the Shape DynamicSet is differently placed in the order of rules.

The result out of the processing of the DynamicSets shown above is the following:


as you can see, when the shape is applied to the particles the result is not the expected one.


Presets shortcut button has been added to the DynamicSet View. This will give you access to pre-defined DynamicSet setups. Those presets are a good starting place when creating a new tP simulation. Those presets can be easily expanded or modified to the needs of the specific workflow or pipeline environment.

Where to go Next?

Now that you know what DynamicSets are and how vital they are to working with thinkingParticles, it's time to look at how the nodes and operators that will reside inside of these DynamicSets are created and connected together to produce amazing results.

While it is highly recommended that you learn how to build particle animations within your DynamicSets next through the Wire Setup View, if you prefer you can click on any of the topics that interest you.


©2024, cebas Visual Technology Inc.

introduction/thinkingparticels_overview/dynamicsettreeview.txt · Last modified: 2024/01/24 18:35 by

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki