Advanced Features Thinking Particles Nodes TP Generator Group PStorm
Function available in CINEMA 4D Studio
PStorm

Basic Node Parameter

Parameter

Type

The shape of the invisible emitter surface: Rectangle or Circle.

Birth Type
Count [0..2147483647]
Rate [0..+∞]
Shot [0..2147483647]

There are three modes for creating particles: Count, Rate and Shot. Set Birth Type to the desired mode.

Count

In this mode, the Count value defines the maximum number of particles that may exist at any one time. The Count value works closely with the Life value. For example, if Life is set to 5 and Count to 100 particles, the number of particles will increase steadily to 100. As particles begin to die, new particles are emitted to keep the particle count at 100.

Rate

With Birth Type set to Rate, the Rate value defines the number of particles that are born per second of animation — the total number of particles will therefore be affected by the frame rate.

Shot

In Shot mode, Shot is the number of particles created per frame of animation.

Life
Life Variation [0..100%]

The Life value defines how long each particle lives, in frames. You can vary the life span of the particles using the Life Variation parameter.

Speed [-∞..+∞]
Speed Variation [0..100%]

The Speed parameter defines the initial speed of each particle, measured in units per second. You can vary the speed of each particle using the Speed Variation parameter.

Size [0..+∞]
Size Variation [0..100%]

The Size value is a scaling factor for the objects that are used as particles. The ratio of Size to Bounding Radius (see the PShape node for details on the Bounding Radius) gives the scaling factor:

(Size/Bounding Radius)*size of the object=size of the particle object.

So if you want the particle object to be exactly the same size as the original object, set Size to the same value as the Bounding Radius. You can vary the size of each particle using the Size Variation parameter.

X Fov [0..360°]
Y Fov [0..360°]
X Size [0..+∞m]
Y Size [0..+∞m]

These settings control the emission angle and the size of the emitting surface along its X axis and Y axis.

Distance [0..+∞m]
Distance Variation [0..100%]

Usually, the particles are emitted from the position assigned to the node via the Emitter Position input port, which in most cases is the origin of an object that represents the emitter. Using the Distance parameter, you can offset the particle emission from this position along the Z axis. This is especially useful when emitting multiple particle streams from the same object where you need the start the streams in different positions.

Distance Variation simulates jittering on the Z axis of the emitter area, creating an uneven particle stream.

Spin [0..+∞]
Spin Variation [0..100%]

Spin defines the rate at which each particle will spin about its axis, measured in how many seconds it takes for a particle to do a complete revolution (i.e. rotate through 360˚). For example, a value of 2 means that each particle will take two seconds to perform a complete revolution. So higher values will result in a slower spin. You can vary the spin rate of each particle using the Spin Variation parameter.

Spin Type
Spin Axis [XYZ ]

Random

If Spin Type is set to Random, each particle will rotate about a randomly chosen axis.

Axis

If Spin Type is set to Axis, the particles will rotate about the axis defined by Spin Axis. For example, if Spin Type is set to Axis and Spin Axis is set to (0,0,1), the particles will rotate about the Z axis (X=0, Y=0, Z=1).

Additional input ports

On

A Boole value of True switches the node on; a value of False switches it off.

Animation Time

Since the node’s parameters can be keyframe animated, by default the Cinema 4D time is used internally to ensure that the values are interpolated correctly. However, you can pass your own time value to this port. This should be of the data type Time, which is a Real number in the simplest case. If no value is passed, Cinema 4D’s time is used.

Emitter Alignment
Emitter Position [XYZ ]

Use these two ports to control the emitter’s position and rotation. Usually these ports should be connected to an Object node (see image above). You can then move and rotate this object in the viewport to move and rotate the emitter.

We recommend using a Null object for this purpose, since it will be invisible in the render and thus will not get in the way of the effect. Connect the Object node’s Global Position and Global Matrix ports to the PStorm node’s Emitter Position and Emitter Alignment input ports respectively, as illustrated above.

Note that the Emitter Position uses world coordinates, not local ones.

By default the emitter will emit the particles along the Z axis.

Emitter Velocity [XYZ ]

When animating the position of the emitter, to create the exhaust of a rocket, for instance, you may find that evenly spaced gaps, rather than a continuous flow, appear in the particle stream. This is because the particles are being emitted only from those positions of the emitter at frame boundaries, and not from the positions it has between the frames.

To achieve a smooth, continuous flow of particles, pass a velocity (speed plus direction) to the Emitter Velocity input port.

You can set a velocity via an XPresso Constant node (of type Vector) or with the Velocity output port of a PGetData node (to use a particle’s velocity) or with the Position velocity output port of an Object node if the emitter’s position is controlled using an object (see Emitter Alignment, Emitter Position, above).

You can also calculate a velocity by determining the vector difference between a current and previous position.

Connect the PStorm node to an Object node to control the emitter via an object.

Output ports

Particle Birth

The particle stream that is available here is the particles that have been born at the current frame. So, if you connect this up to a Particle input port of another node, the node will affect particles only as they are born.

If instead you want to affect all particles created by PStorm, put them into a group by connecting this port to a PGroup node and use a PPass node to pass on all the particles in the group. This is normally the most useful thing to do.

Birth Count [-2147483648..2147483647]

Outputs the number of particles born at the current frame.

Birth Num [-2147483648..2147483647]

Outputs the number of the last particle born at the current frame, starting from 0. This will normally be one less than Birth Count.