Houdini 17.0 Nodes Dynamics nodes

Particle Fluid Emitter dynamics node

Emits particles into a particle fluid simulation.

On this page

Overview

This node is intended to be wired into the second (Particles) input of the FLIP Solver DOP. It adds new particles to a given particle fluid object using either "stream emission" or the standard particle emission method from the Source POP.

Stream emission vs. POP emission

The Use stream emission option lets you set and initial velocity for the emitted particles, and calculates the emission rate from that based on the desired particle separation in the particle fluid object, as in the Velocity Stream POP. This option only emits particles from the points of the source geometry.

Turning Use stream emission off gives you a more complex but flexible set of parameters to control particle emission, identical to the options on the Source POP. You can use the Emission type parameter to emit randomly from the surface of the source geometry instead of from the points (as well as many other options).

Using Emit Particle Fluid

  1. Create a geometry object in the shape you want to emit fluid.

  2. In the Particle Fluids shelf tab, click the Emit Particle Fluid tool.

  3. Select the geometry object to emit the fluid, then press Enter.

  4. If you have an existing FLIP object you want to add the new emitter to, select it and press Enter.

    Otherwise, just press Enter and the tool will create a new particle fluid object for you.

Parameters

Source

Particle Fluid Object

The Particle Fluid Object node for the simulation to be affected.

The Particle Fluid Emitter uses this node

Use Stream Emission

Enable this toggle to use stream-based emission of particles rather than constant or impulse emission. Stream-based emission controls the timing of particle emissions to maintain a specified particle separation in the outgoing particle stream.

This can be useful for creating a smooth,

Note

If stream emission is set, a special detail attribute is set to record the last emission time. If you want to re-use a particle simulation with a different start time, you may have to first delete this detail attribute with an Attribute SOP.

Emission Type

Where on source geometry to emit particles from.

Points (ordered)

Emit particles from each point in the source geometry, in order. Primitives (for example, primitive sphere) have only one point from which to emit particles.

Points (random)

Same as "Points (ordered)", but emits particles from points in random order. This order does not change over time: the same randomized sequence repeats over and over.

Prim center (ordered)

Birth particles from the center of each primitive in the source geometry, in order. This is useful when used in combination with the Rotate to Template parameter in the Primitive SOP.

Prim center (random)

Same as "Prim center (ordered)", but emits particles from primitive centers in random order. This order does not change over time: the same randomized sequence repeats over and over.

Prim center (attribute)

Use the attribute named in the Distribution attribute parameter below as the probability that a primitive will emit a particle.

Primitives where the attributes is less than or equal to 0 will not emit particles.

For primitives where the attributes is over 0, for each particle to be emit, the probability that a primitive will emit it is equal to that primitive’s attribute value divided by the sum of the attribute values of all the primitives.

You use the Measure SOP to create an attribute on primitives that records the surface area, then use that attribute here so primitives with greater surface area emit particles more often.

Edges (ordered)

Emit particles from each spline/polygon edge in the source geometry, in order. The birth points are along continuous intervals on the curve, not just from CVs or points.

Edges (random)

Same as "Edges (ordered)", but emits particles from edges in random order. This order does not change over time: the same randomized sequence repeats over and over.

Edges (attribute)

See "Prim center (attribute)" above.

Surfaces (ordered)

Emit particles from each UV spline surface or mesh type in the source geometry, in order. If there is no surface but only a spline curve, then emit particles from the curve. For polygons are used, only emits particles from the polygon edges.

Surfaces (random)

Same as "Surfaces (ordered)", but emits particles from surfaces in random order. This order does not change over time: the same randomized sequence repeats over and over.

Surfaces (attribute)

See "Prim center (attribute)" above.

Volume

Emit particles from inside the volume of the source geometry. The behavior is undefined if the source geometry is not closed.

Metaballs

Emit particles from inside the volume of a metaball, according to the Density Threshold and Density Minimum parameters below.

Emission Geometry

The Particle Fluid Emitter can either emit particles from a specified piece of emission geometry, or from pre-built elliptical or rectangular grids of particles. Use this menu to choose which type of emission geometry to use.

Source SOP

The name of the emission geometry to use, if Emission Geometry is set to Specify Emission Geometry.

Source Group

Subset of all points/primitives in the source geometry to emit from.

Ignore Transform Object

Particles normally use the object space of emission geometry. Turn this parameter on to not transform in to the space of the emission geometry SOP.

Distribution Attribute

When Emission type is "Prim center (attribute)", "Edges (attribute)", or "Surfaces (attribute)", the attribute to use as the probability of emitting a particle.

Density Threshold

When Emission type is "Metaballs", continue sampling points until the summed density exceeds this threshold.

Density Minimum

When Emission type is "Metaballs", points with densities less than or equal to this value will not emit particles.

Use Metaball Density

Use the metaball density function as the probability of emitting a particle, so denser areas emit particles more often.

Birth

This emitter creates fluid particles in three different ways; constant, impulse and stream emission. Constant emission emits a constant number of particles per second, regardless of the number of points in the emission geometry. Impulse emission emits a specified number of particles each time the emitter is cooked. Stream emission always emits a particle from each point in the emission geometry simultaneously. The timing of these emissions is determined by the outgoing particle velocity and a Stream Spacing attribute. Particles are emitted with the desired spacing between emissions. This can be useful for creating a smooth, uniform stream of fluid emitted from a surface.

Impulse Activation

Activates or deactivates impulse emission.

Impulse Birth Rate

The number of fluid particles to emit at each time step.

Constant Activation

Activates or deactivates constant emission.

Constant Birth Rate

The number of fluid particles to emit per second.

Stream Activation

Activates or deactivates stream emission.

Stream Spacing

Controls the spacing between particles in the emitted stream. This is done by regulating the times at which particles are emitted.

For example, if the velocity of emitted particles

Stream Acceleration

This parameter does not affect the behavior of particles once they are emitted, but rather affects the timing and direction of particle emission. It is used to regulate the timing of particle emission in the presence of external forces accelerating the particles.

For example, if particles are emitted with no

Stream Velocity Scale

This parameter is a multiplier which controls the velocity used to determine the timing of particle emissions. It does not affect the actual velocity of emitted particles, but rather can be used to internally scale the emission velocity to thicken or thin out the emitted particle stream.

Setting this parameter to 2, for instance, causes the emitter to emit points twice as often.

Life Span

Determines how long generated particles will live, in seconds, before they die of old age. A value of -1 will cause them to live forever.

Random Seed

When birthing particles at random, this seed determines what random sequence will be used.

By varying the seed on multiple runs through the particle simulation you can get variations on how the particles were created.

Velocity

This tab is used to control the velocity of emitted fluid particles.

Initial Velocity

How to set the initial velocity of the emitted particles.

Use inherited velocity

Use the inherited velocity attribute as the initial velocity of the particles.

Add to inherited velocity

Add the inherited velocity attribute to the values from the Velocity and Variance parameters below.

Set initial velocity

Set the initial value of the velocity attribute using the Velocity and Variance parameters below.

Note

Acceleration is inherited independently, if applicable.

Inherit Velocity

(When Initial velocity is Use inherited velocity or Add to inherited velocity) The proportion of the inherited velocity to use. Use 1 for the full inherited value, 0.5 to half the inherited value, and so on.

Velocity

Set or add to velocity attribute.

Variance

Variance to velocity set above. The node will add +/- from 0 to this number along each axis to the Velocity parameter.

Ellipsoid Distribution

By default, the variance (if any) is distributed in a box, the size of which is determined by the Variance parameter. When this option is on, the variance is distributed in an ellipsoid instead.

Density Test

This tab is used to control the number of particles emitted by ensuring that particles are not created in areas where the fluid density is too high. This is available to prevent large spikes in pressure as fluid particles are created.

Density Test Activation

Activates or deactivates the density test.

Density Threshold

This is a multiplier for the fluid rest density. If a particle is emitted in a location where the density exceeds this quantity multiplied by the fluid rest density, then the particle is immediately killed.

Pre-built Emitter

This section appears at the bottom of the parameter pane and contains parameters related to pre-built emission geometry in the Particle Fluid Emitter node. The emitter node provides pre-built geometry to emit particles in a grid pattern from a rectangular or elliptical surface.

The geometry automatically makes use of the Particle Separation parameter on the Particle Fluid Object specified in the Particle Fluid Object parameter to determine the necessary spacing between points in this pre-built geometry.

Size

The two-dimensional size of the geometry.

Center

The center point of the pre-built geometry.

Orientation Type

How to orient the geometry in space. Align With Velocity

Aligns the emission geometry to be perpendicular with the emission velocity specified in the Velocity tab.

Specify Direction

Aligns the emission geometry to be perpendicular with the direction vector specified in Direction Vector.

Free Rotation

Allows the geometry to be freely rotated using the Rotation Order and Rotate parameters.

Direction Vector

The direction to align the emission geometry with if Orientation Type is set to "Specify Direction".

Rotation About Axis

If Orientation Type is set to align the emitter with a velocity or direction vector, this parameter specifies the rotation of the geometry about that vector.

Rotation Order

If Orientation Type is set to "Free Rotation", this controls the order in which rotations are applied.

Rotate

If Orientation Type is set to "Free Rotation", this controls the rotation of the emission geometry about the x, y and z axes.

Jitter Scale

Controls the amount of random jitter to apply to points in the pre-built emission geometry.

Jitter Seed

The seed to use when applying random jitter to points in the pre-built emission geometry.

Locals

ST

This value is the simulation time for which the node is being evaluated.

This value may not be equal to the current Houdini time represented by the variable T, depending on the settings of the DOP Network Offset Time and Time Scale parameters.

This value is guaranteed to have a value of zero at the start of a simulation, so when testing for the first timestep of a simulation, it is best to use a test like $ST == 0 rather than $T == 0 or $FF == 1.

SF

This value is the simulation frame (or more accurately, the simulation time step number) for which the node is being evaluated.

This value may not be equal to the current Houdini frame number represented by the variable F, depending on the settings of the DOP Network parameters. Instead, this value is equal to the simulation time (ST) divided by the simulation timestep size (TIMESTEP).

TIMESTEP

This value is the size of a simulation timestep. This value is useful to scale values that are expressed in units per second, but are applied on each timestep.

SFPS

This value is the inverse of the TIMESTEP value. It is the number of timesteps per second of simulation time.

SNOBJ

This is the number of objects in the simulation. For nodes that create objects such as the Empty Object node, this value will increase for each object that is evaluated.

A good way to guarantee unique object names is to use an expression like object_$SNOBJ.

NOBJ

This value is the number of objects that will be evaluated by the current node during this timestep. This value will often be different from SNOBJ, as many nodes do not process all the objects in a simulation.

This value may return 0 if the node does not process each object sequentially (such as the Group DOP).

OBJ

This value is the index of the specific object being processed by the node. This value will always run from zero to NOBJ-1 in a given timestep. This value does not identify the current object within the simulation like OBJID or OBJNAME, just the object’s position in the current order of processing.

This value is useful for generating a random number for each object, or simply splitting the objects into two or more groups to be processed in different ways. This value will be -1 if the node does not process objects sequentially (such as the Group DOP).

OBJID

This is the unique object identifier for the object being processed. Every object is assigned an integer value that is unique among all objects in the simulation for all time. Even if an object is deleted, its identifier is never reused.

The object identifier can always be used to uniquely identify a given object. This makes this variable very useful in situations where each object needs to be treated differently. It can be used to produce a unique random number for each object, for example.

This value is also the best way to look up information on an object using the dopfield expression function. This value will be -1 if the node does not process objects sequentially (such as the Group DOP).

ALLOBJIDS

This string contains a space separated list of the unique object identifiers for every object being processed by the current node.

ALLOBJNAMES

This string contains a space separated list of the names of every object being processed by the current node.

OBJCT

This value is the simulation time (see variable ST) at which the current object was created.

Therefore, to check if an object was created on the current timestep, the expression $ST == $OBJCT should always be used. This value will be zero if the node does not process objects sequentially (such as the Group DOP).

OBJCF

This value is the simulation frame (see variable SF) at which the current object was created.

This value is equivalent to using the dopsttoframe expression on the OBJCT variable. This value will be zero if the node does not process objects sequentially (such as the Group DOP).

OBJNAME

This is a string value containing the name of the object being processed.

Object names are not guaranteed to be unique within a simulation. However, if you name your objects carefully so that they are unique, the object name can be a much easier way to identify an object than the unique object identifier, OBJID.

The object name can also be used to treat a number of similar objects (with the same name) as a virtual group. If there are 20 objects named "myobject", specifying strcmp($OBJNAME, "myobject") == 0 in the activation field of a DOP will cause that DOP to operate only on those 20 objects. This value will be the empty string if the node does not process objects sequentially (such as the Group DOP).

DOPNET

This is a string value containing the full path of the current DOP Network. This value is most useful in DOP subnet digital assets where you want to know the path to the DOP Network that contains the node.

Note

Most dynamics nodes have local variables with the same names as the node’s parameters. For example, in a Position node, you could write the expression:

$tx + 0.1

…to make the object move 0.1 units along the X axis at each timestep.

Examples

VolumeSource Example for Particle Fluid Emitter dynamics node

This example demonstrates the use of a volume emitter to fill a container with fluid. The volume of the inside of a tank is specified as volume emission geometry, and particles are emitted randomly at points inside of this geometry for a specified number of frames. This example uses an SPH fluid.

The following examples include this node.

VolumeSource Example for Particle Fluid Emitter dynamics node

This example demonstrates the use of a volume emitter to fill a container with fluid. The volume of the inside of a tank is specified as volume emission geometry, and particles are emitted randomly at points inside of this geometry for a specified number of frames. This example uses an SPH fluid.

FluidGlass Example for Particle Fluid Solver dynamics node

This example demonstrates how to get a smooth fluid stream to pour into a glass.

PressureExample Example for Particle Fluid Solver dynamics node

This is a simple example demonstrating pressure-driven flow with no viscosity. This example also demonstrates the use of a constantly emitting source of particle fluid as well as how to surface the fluid using the Particle Fluid Surface SOP.

See also

Dynamics nodes