Daemons - Filter

This daemon is used to swap particles from one emitter to another and to separate them. "Filter" requires two emitters: a source emitter and a target. For an easy workflow, it is best to use the "Container" node, because this is nothing but an empty bin which gathers the swapped particles from the source.

 

 

Source

Define one or more particle source(s) by choosing an existing emitter from a node browser. Target and source emitters must share the same "Resolution" value. Currently, this field does not accept node names with blanks (e.g. Source Emitter).

Target (True)

This is the emitter where the particles will be moved to when the adjusted “Condition” is true – ideally this would be a "Container” node with standard particles or a second domain with Dyverso fluids. If the field is left blank the filtered particles will be deleted. Target and source emitters/domains must share the same "Resolution" value.

Filter When False

These are your options:

  • “Yes” means that, if the condition of the emitter is fulfilled, the particles will be sent to the emitter under “Target Emitter (True)”. If the condition is not fulfilled the particle will be moved to the emitter from “Target Emitter (False)”.
  • With “No”, particles will only be moved to the emitter from "Target Emitter (True)" when the condition is fulfilled.
Target (False)

If “Filter When False” is set to “Yes” all particles which do not fulfil the given condition will be sent to this emitter. This field does not necessarily need an entry and can be left blank.

Condition

You can select the desired condition by simply choosing one of the eight predefined options:

  • A condition tells RealFlow when a particle has to be transferred.
  • Once the condition is fulfilled, the particle will be attached to the target emitter and removed from the source.
  • With “In Range” or “Out of Range” the “Min Value” and “Max Value” fields are unlocked. You can then define a range with a minimum and a maximum value which will be used for this condition.
Attribute

When you are shifting particles you also need an attribute to be compared, e.g. “If speed is greater than 2.0 shift the particle from the source to the target emitter”. In this case, “Attribute” is “Speed”, the “Value” parameter is 2.0 and the “Condition” is “greater than”.

Value

This is the trigger value for the condition. Please note that this field is inactive with “Condition” set to “In Range”, “Out of Range” and “Expression”.

Min Value

With “Condition” set to “In Range” or “Out of Range”, this field becomes unlocked, giving you the possibility to define a range between “Min Value” and “Max Value”.

Max Value

With “Condition” set to “In Range” or “Out of Range”, this field becomes unlocked, giving you the possibility to define a range between “Min Value” and “Max Value”.

Expression

This field becomes active when “Condition” is set to “Expression”. RealFlow constantly checks against the given → expression during a simulation and decides whether the condition is fulfilled or not. There is a long list of keywords that can be used to create a certain condition:

 

Attribute

Expression keyword

Age

particle.age, particle.isolation

Collision

particle.collision

Density

particle.density

Force

particle.force.mod, particle.force.x, particle.force.y, particle.force.z, particle.f.mod, particle.f.x, particle.f.y, particle.f.z

ID

particle.id

Mass

particle.mass

Neighbors

particle.nv, particle.neighbors, particle.neighbours

Normal

particle.normal.x, particle.normal.y, particle.normal.z

Position

particle.pos.x, particle.pos.y, particle.pos.z, particle.position.x, particle.position.y, particle.position.z

Pressure

particle.pressure

Temperature

particle.temperature

Texture

particle.texture.u, particle.texture.v, particle.texture.w

Velocity

particle.speed, particle.velocity.x, particle.velocity.y, particle.velocity.z, particle.vel.x, particle.vel.y, particle.vel.z

Viscosity

particle.viscosity

Vorticity

particle.vorticity.mod, particle.vorticity.x, particle.vorticity.y, particle.vorticity.z

Emitter Idparticle.emitterid

 

An example:

Let's assume you want to filter the particles from “Domain01” against the particles' velocities:

  • If a particle' speed is lower than 2.0 the particle should be attached to “Domain02”

  • Target (True) > Domain02

  • Source > Domain01

  • Condition > Expression

  • Under “Expression” enter: particle.speed < 2.0

You can use any other keyword from the table and modify the expression to your needs. It is also possible to combine expressions, e.g. 

  • if particle.age > particle.velocity

Split

When the given condition is fulfilled RealFlow will create additional particles – their number is defined under “# child”.

# child

Here the number of child particles is specified when a certain condition is fulfilled. You should start with moderate values, because the amount of additional particles can become huge.

Bounded

With this option it is possible to restrict the daemon to a certain volume.

Filter Inside

With “Yes”, the particles inside the daemon's bounding box will be affected; “No” only filters the particles outside this box.

Random percent

This is the probability of a particle to be filtered when it satisfied the filter condition. Higher values mean that more particles will be filtered.

Random seed

Change the random number generator's initialization. All positive and negative integers are accepted.

Random per frame

If enabled, a particle, that has not been filtered because of it's probability value, will not be filtered during the current frame as well. Otherwise, the random particle tested will be performed with every simulation step.

Reset Age

When active, the filtered particles' age will be set to 0. Otherwise the age value of the original particle will be used.

Keep Source Particles

This option is suited for the creation of trails, for example. It should only be used with → "Dumb" particles or "Override Target" set to "Yes". Otherwise you might see instabilities and particles explosions.

Override Target (True)

This feature is needed when you work with emitters in cache mode, the "Binary Loader" or the "NBinary Loader". These “emitters” are cleared with each frame and load new particles from already saved BIN files. Using them as source emitters will lead to instabilities, because the particles are not moved, but simply copied. If you also clear the target emitters with each step, you can avoid these problems. Please note that the result with this mode might slightly differ from the original simulation of the source emitter. Here, the target is only overwritten when the given "Condition" is fulfilled.

Override Target (False)

This feature is needed when you work with emitters in cache mode, the "Binary Loader" or the "NBinary Loader". These “emitters” are cleared with each frame and load new particles from already saved BIN files. Using them as source emitters will lead to instabilities, because the particles are not moved, but simply copied. If you also clear the target emitters with each step, you can avoid these problems. Please note that the result with this mode might slightly differ from the original simulation of the source emitter. Here, the target is only overwritten when the given "Condition" is not fulfilled.