Emits particles into a particle fluid simulation.
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
Create a geometry object in the shape you want to emit fluid.
In the Particle Fluids shelf tab, click the
Emit Particle Fluid tool.
Select the geometry object to emit the fluid, then press Enter.
If you have an existing particle fluid 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.
|
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.
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. |
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
| DrainExample | Load | Launch |
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 | Load | Launch |
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. | |
Examples that use this node
| Example for | Example name | |
|---|---|---|
| Particle Fluid Object | PressureExample | Load | Launch |
| ||
| Particle Fluid Sink | DrainExample | Load | Launch |
| ||
| Particle Fluid Solver | FluidGlass | Load | Launch |
| ||
| Particle Fluid Solver | ParticlesAndCloth | Load | Launch |
| ||
| Particle Fluid Solver | PressureExample | Load | Launch |
| ||