Particle Fluid Emitter
dynamics node
Emits fluid in a particle fluid simulation.
See also: Particle Fluid Object, Particle Fluid Solver, Particle Fluid Sink
Attach this node to input 3 of the Particle Fluid Solver to emit fluid particles in a particle fluid simulation. It is possible to emit particles using all of the standard emission techniques provided by POPs (eg. point, primitive, volume emission, etc.).
Like the Source POP, the Particle Fluid Emitter can emit particles from geometry using either a constant or impulse birth rate. With a constant birth rate, a fixed number of particles are emitted per second. With an impulse birth rate, a fixed number of particles are emitted each time the node is cooked.
The emitter also handles stream emission, such as that provided by the Velocity Stream POP. In this case, the number of particles emitted is always precisely the number of points in the input geometry, and the timing of emissions is based on emission velocity and a desired spacing between particles.
For the desired results, make sure that this node is connected to the third input of the Particle Fluid Solver (the second green input). The solver may behave unpredictably if it is connected to any other input.
Using Emit Particle Fluid
| To... | Do this |
|---|---|
|
Create a default elliptical/rectangular emitter |
Note
The default shape is elliptical, but you can change the shape and size in the operation controls toolbar.
|
|
Create multiple emitters and have them interact |
This example shows two particle fluid streams colliding and merging. |
|
Emit particles from points on an object |
This example shows points on a cube emitting particle fluid. |
A possible next step could be to drain particle fluid. To remove particle fluid from a simulation, use the
Sink Particle Fluid tool or the
Sink from Objects tool on the Fluids shelf.
For specific parameter help see the
Particle Fluid Emitter node help.
Parameters
Source
|
Particle Fluid Object |
The Particle Fluid Object node for the simulation to be affected. The Particle Fluid Emitter uses this node to obtain information such as fluid particle attributes, parameters from the Particle Fluid Object node, etc. |
||||||||||||||||||||||||||
|
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, uniform stream of fluid spraying from an emitter. |
||||||||||||||||||||||||||
|
Emission Type |
Where on source geometry to emit particles from.
|
||||||||||||||||||||||||||
|
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 each time the emitter is run. |
|
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 is set to 1 in the x direction, and the Stream Spacing parameter is set to 1, then particles will be emitted from each point in the Geometry Source every 1 second in order to maintain the desired spacing. |
|
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 velocity, but are immediately affected by a downward gravity force, then the acceleration caused by that force could be specified here. |
|
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.
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 |
|
||||||
|
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. |
Local variables
|
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 |
|
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 |
|
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 |
|
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 |
|
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. |
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:
$positionx + 0.1
…to make the object move 0.1 units along the X axis at each timestep.
Example files
DrainExample
$HFS/houdini/help/examples/nodes/dop/particlefluidemitter/DrainExample.otl
This example demonstrates the use of Stream Emission in a Particle Fluid Emitter. A stream of particles is emitted in to a bowl. This example also demonstrates how to combine emitters and Particle Fluid Sinks in the same simulation, since the fluid is allowed to drain out of the bowl, where it is removed by a sink.
VolumeSource
$HFS/houdini/help/examples/nodes/dop/particlefluidemitter/VolumeSource.otl
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.
Usages in other examples
| Example name | Example for | |
|---|---|---|
| DrainExample |
Particle Fluid Sink dynamics node |
|
| PressureExample |
Particle Fluid Object dynamics node |
|
| PressureExample |
Particle Fluid Solver dynamics node |