In RealFlow, fluids are represented as particles and these particle carry lots of information stored in so-called channels. With the nodes in this class you have direct access to these channels. It is also possible to add and remove particles, filter them and add forces. The latter opens a huge area of applications, because you can create force fields from images, objects, and even other particles. These forces can then be applied to an emitter's particles and act like a custom daemon.
Nodes
Name | Description |
---|---|
ArrayParticlesConcat | This node concatenates the inputs 'array0' and 'array1' into a single 'out' array. |
ArrayParticlesConstant | This node returns a constant array. |
ArrayParticlesFilterByMask | This node returns the elements of the input 'array' at positions specified by the 'mask' parameter. |
ArrayParticlesFindAllElementIndices | This node returns all positions in the input 'array', which fit to the input 'element' values. |
ArrayParticlesFindElement | This node returns the first position of appearance of the input 'element' within the input 'array'. If the array does not contain the element, -1 is returned. |
ArrayParticlesInsertElement | This node inserts all elements from the 'element' input into the input 'array' at the position specified by 'position'. If 'position' is equal or lower than 0 then the elements are inserted at the beginning of the array. If 'position' is greater or equal than the inputs 'array' size, elements are appended at the end. |
ArrayParticlesMix | This node creates an output array based on the two inputs 'array0' and 'array1' and the input mask. If the mask value equals 0 then the value of 'array0' is used, if the mask value is 1 the value of 'array1' is used. |
ArrayParticlesPushElement | This node appends all the elements from the 'element' at the end of the input 'array'. |
ArrayParticlesRemoveElement | This node removes all elements of the 'by_value' from the input 'array'. The returned mask has the same size as the input 'array' and is set to 0 at removed positions. |
ArrayParticlesRemoveIndex | This node removes all input array positions by the 'index' input. |
ArrayParticlesRemoveRepeatedElements | This node removes all repetitions of elements from the input 'array'. The 'new_to_old' array can be used as an 'index' input for a GetArrayElement-Node to restore the original array. The returned mask has the same size as the input 'array' and is set to 0 at removed positions. |
ArrayParticlesResize | This node resizes the input 'array'. If the result is bigger than the input array, the last value is repeated accordingly. |
ArrayParticlesReverse | This node reverses the order of the input 'array'. |
ArrayParticlesSlice | This node returns an array containing the range of the input 'array' from the 'first' position with the given input 'size'.Thus, the output array is a subarray or slice of the input. |
ForceAdd | This node adds a force to the particles in the emitter. |
GetArrayParticlesElement | This node returns the elements of the input 'array' at positions specified by the 'index' parameter. |
GetParticles | This node gets the particles from the input scene node. |
GetParticlesInfo | This node returns information about the input particle system. |
ParticleAdd | This node adds particles using the position and velocity inputs. |
ParticleAddChannel | This node creates a new channel for the particles. The value for the new channel for both existent particles and new particles is set using the 'default value' value. The 'default value' input is necessary. Otherwise, the channel will not be created. |
ParticleCreate | This node creates an empty Particles object inside the graph. |
ParticleCreateVoxelization | This node creates a particles voxelization. |
ParticleDisplaceFromImage | This node displaces the particles using an image. The particle system must have a "normal" and "uv" channels, both of type "Vector3". In the case of the "uv" channel the component "z" of the "Vector3" is ignored. |
ParticleFilterByVolume | This node splits the input 'inParticles' array into the two output arrays according to the positions of the particles relative to the input axis aligned bounding box. |
ParticleFindNearestNeighbors | This node gets the particles that satisfied two conditions: they are inside the sphere defined by the radius 'outer radius' and centered at the 'point', and they are outside the sphere defined by the radius 'inner radius' and centered at the 'point'. |
ParticleGetAllChannelNames | This node returns all the input 'particles' channel names and types, which are available. |
ParticleGetChannel | This node extracts and copies channel data from the particles to the output channel. Because the channel type is only known at run-time you might need to use a "NumDemux" node to specialize the type of the channel, particularly, if the following connected input can have differente types. |
ParticleMesher | This node computes a mesh for the input 'particles' according to the specified parameters. |
ParticleRemoveAll | This node removes all particles from the input particle system. |
ParticleRemoveById | This node removes particles from the input particle system. |
ParticleSetChannel | This node sets the channel value for the particles. The size of the value array can be shorter than the number of particles. In such a case, the last element of the array is used for the rest of particles. |
SetArrayParticlesElement | This node returns the elements of the input 'array' at positions specified by the 'index' parameter. |
SetParticles | This node set the particles of the input RealFlow node. Channels of the current particle system are kept and initialized with default values. New channels from the new particle system are created and copied. |
ArrayParticlesConcat
This node concatenates the inputs 'array0' and 'array1' into a single 'out' array.
Inputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
array0 | Particles |
| The array0 | |||||
array1 | Particles |
| The array1 |
Outputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
out array | Particles |
| The out array |
ArrayParticlesConstant
This node returns a constant array.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
constant | Particles | The constant | |
size | Integer (1) | The size |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
out array | Particles | The out array |
ArrayParticlesFilterByMask
This node returns the elements of the input 'array' at positions specified by the 'mask' parameter.
Inputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
array | Particles |
| The array | |||||
mask | Bit | The mask |
Outputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
result | Particles |
| The result |
ArrayParticlesFindAllElementIndices
This node returns all positions in the input 'array', which fit to the input 'element' values. .
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
array | Particles | The array | |
element | Particles | The value to find in the input array |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
index | Integer | The index | |
mask | Bit | The mask |
ArrayParticlesFindElement
This node is executed in parallel according to its input pins size.
This node returns the first position of appearance of the input 'element' within the input 'array'. If the array does not contain the element, -1 is returned.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
array | Particles | The array | |
element | Particles | The value to find in the input array | |
start index | Integer | The first index to search the element from |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
index | Integer | The index |
ArrayParticlesInsertElement
This node inserts all elements from the 'element' input into the input 'array' at the position specified by 'position'. If 'position' is equal or lower than 0 then the elements are inserted at the beginning of the array. If 'position' is greater or equal than the inputs 'array' size, elements are appended at the end.
Inputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
array | Particles |
| The array | |||||
element | Particles | The value to insert | ||||||
index | Integer (1) | The position to insert the input element on |
Outputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
out array | Particles |
| The out array |
ArrayParticlesMix
This node creates an output array based on the two inputs 'array0' and 'array1' and the input mask. If the mask value equals 0 then the value of 'array0' is used, if the mask value is 1 the value of 'array1' is used.
The size of the output is the same as mask's size.
Inputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
array0 | Particles |
| The array0 | |||||
array1 | Particles |
| The array1 | |||||
mask | Bit | The mask |
Outputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
out array | Particles |
| The out array |
ArrayParticlesPushElement
This node appends all the elements from the 'element' at the end of the input 'array'.
Inputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
array | Particles |
| The array | |||||
element | Particles | The value to append at the end |
Outputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
out array | Particles |
| The out array |
ArrayParticlesRemoveElement
This node removes all elements of the 'by_value' from the input 'array'. The returned mask has the same size as the input 'array' and is set to 0 at removed positions.
Inputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
array | Particles |
| The array | |||||
element | Particles | The value to remove all its instances from the input array |
Outputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
out array | Particles |
| The out array | |||||
mask | Bit | The mask |
ArrayParticlesRemoveIndex
This node removes all input array positions by the 'index' input. .
Inputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
array | Particles |
| The array | |||||
index | Integer | The positions of the input array to remove |
Outputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
out array | Particles |
| The out array |
ArrayParticlesRemoveRepeatedElements
This node removes all repetitions of elements from the input 'array'. The 'new_to_old' array can be used as an 'index' input for a GetArrayElement-Node to restore the original array. The returned mask has the same size as the input 'array' and is set to 0 at removed positions.
Inputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
array | Particles |
| The array |
Outputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
new to old | Integer | The new to old | ||||||
mask | Bit | The mask | ||||||
out array | Particles |
| The out array |
ArrayParticlesResize
This node resizes the input 'array'. If the result is bigger than the input array, the last value is repeated accordingly.
Inputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
array | Particles |
| The array | |||||
size | Integer (1) | The size |
Outputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
out array | Particles |
| The out array |
ArrayParticlesReverse
This node reverses the order of the input 'array'.
Inputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
array | Particles |
| The array |
Outputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
out array | Particles |
| The out array |
ArrayParticlesSlice
This node returns an array containing the range of the input 'array' from the 'first' position with the given input 'size'.Thus, the output array is a subarray or slice of the input.
Inputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
array | Particles |
| The array | |||||
first | Integer (1) | The position of the element that will be the first of the output array | ||||||
size | Integer (1) | The total number of elements to copy from the input array. If value is negative, all the elements from 'first' are copied to the output array |
Outputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
out array | Particles |
| The out array |
ForceAdd
This node adds a force to the particles in the emitter.
Inputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
emitter |
| The emitter | ||||||
force | Vector3 | The force |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
evaluate | Evaluate | The evaluate |
GetArrayParticlesElement
This node returns the elements of the input 'array' at positions specified by the 'index' parameter.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
array | Particles | The array | |
index | Integer | The index |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
element | Particles | The element |
GetParticles
This node gets the particles from the input scene node.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
node | RealFlow Node | The scene node |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
out particles | Particles | The out particles |
GetParticlesInfo
This node returns information about the input particle system.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
particles | Particles (1) | The particles |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
number | Integer | Number of particles | |
bounding box | Box | The bounding box | |
velocity min | Real | Minimum Velocity | |
velocity max | Real | Maximum Velocity | |
channel names | String | The name of all the input 'particles' available channels | |
channel types | String | The data type of all the input 'particles' available channels |
ParticleAdd
This node adds particles using the position and velocity inputs.
The 'position' input is used to add the particles, i.e. the number of particles added is the size of the 'position' input. The 'velocity' input has not to be the same size than the 'position' input, in the case it is larger it will be truncated to the size of the 'position' input, in the case it is shorter the last velocity value in the array is used to set the velocity for the rest of the particles.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
particles | Particles | out particles | The particles |
position | Vector3 | The position of the particles | |
velocity | Vector3 | The velocity of the particles |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
id | Integer64 | The id of the newly created particles | |
out particles | PassThrough | particles | The out particles |
ParticleAddChannel
This node creates a new channel for the particles. The value for the new channel for both existent particles and new particles is set using the 'default value' value. The 'default value' input is necessary. Otherwise, the channel will not be created.
Please, keep in mind that channels with different types than graph types may result in data precission loss when getting and setting its values.
Inputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
particles | Particles (1) | out particles | The particles | |||||
name | String (1) | The name of the channel | ||||||
type |
| The type of the channel. Types between parentheses represent the graph type for the selected channel type | ||||||
default value |
| The default value for the channel |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
out particles | PassThrough | particles | The out particles |
ParticleCreate
This node creates an empty Particles object inside the graph.
This way it is possible to use particles inside graphs without needing to load them from file, or getting them from an existing node.
Only the'id', 'position' and 'velocity' channels are created.
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
particles | Particles | The particles |
ParticleCreateVoxelization
The algorithm to perform the operation of this node is multithreaded.
This node creates a particles voxelization.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
particles | Particles | The particles | |
voxel size | Real | The voxel size |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
voxelization | ParticleVoxelization | The voxelization |
ParticleDisplaceFromImage
The algorithm to perform the operation of this node is multithreaded.
This node displaces the particles using an image. The particle system must have a "normal" and "uv" channels, both of type "Vector3". In the case of the "uv" channel the component "z" of the "Vector3" is ignored.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
particles | Particles (1) | out particles | The particles |
image | Image (1) | The image | |
repeat u | Real (1) | The number of tiles in u | |
repeat v | Real (1) | The number of tiles in v | |
scale | Vector3 | The scale of the displacement. If the number of elements in this input is larger than 1 then it must have the size of the number of particles, so that a per particle scaling of the displacement is done. |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
out particles | PassThrough | particles | The out particles |
ParticleFilterByVolume
This node splits the input 'inParticles' array into the two output arrays according to the positions of the particles relative to the input axis aligned bounding box.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
volume | Box | The volume | |
particles | Particles | The particles |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
inside particles | Particles | The particles inside the volume | |
outside particles | Particles | The particles outside the volume |
ParticleFindNearestNeighbors
The algorithm to perform the operation of this node is multithreaded.
This node gets the particles that satisfied two conditions: they are inside the sphere defined by the radius 'outer radius' and centered at the 'point', and they are outside the sphere defined by the radius 'inner radius' and centered at the 'point'.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
voxelization | ParticleVoxelization (1) | The voxelization | |
particles | Particles (1) | out particles | The particles |
point | Vector3 | The point | |
outer radius | Real (1) | The outer radius | |
inner radius | Real (1) | The inner radius |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
mask | Bit | True if at least one particle was found, False otherwise | |
first | Integer | The index of the first element in the 'index' where the indexes of the found neighbor particles start | |
size | Integer | The number of found neighbor particles | |
index | Integer | The indexes of the found neighbor particles | |
id | Integer64 | The ids of the found neighbor particles | |
out particles | PassThrough | particles | The out particles |
ParticleGetAllChannelNames
This node returns all the input 'particles' channel names and types, which are available.
The channel types are the internal storage types which might not be exactly the same as graph types. For example, the UV channel might store data of type 'Vector2' while getting the UV channel in the graph will result in an array of 'Vector3' elements.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
particles | Particles (1) | The particles |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
channel names | String | The name of all the input 'particles' available channels | |
channel types | String | The data type of all the input 'particles' available channels |
ParticleGetChannel
This node extracts and copies channel data from the particles to the output channel. Because the channel type is only known at run-time you might need to use a "NumDemux" node to specialize the type of the channel, particularly, if the following connected input can have differente types.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
name | String (1) | The name of the channel, built-in valid names are "position", "velocity", and "id". | |
particles | Particles (1) | The particles |
Outputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
channel |
| The channel |
ParticleMesher
The algorithm to perform the operation of this node is multithreaded.
This node computes a mesh for the input 'particles' according to the specified parameters.
The algorith used for it is the same as for the RealFlow RenderKit mesher.
Inputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
smooth | Real (1) | The smooth | ||||||
polygon size | Real (1) | The polygon size | ||||||
particle radius | Real (1) | The particle radius | ||||||
particles |
| The particles |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
mesh | Mesh | The mesh |
ParticleRemoveAll
This node removes all particles from the input particle system.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
particles | Particles (1) | out particles | The particles |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
out particles | PassThrough | particles | The out particles |
ParticleRemoveById
This node removes particles from the input particle system.
Inputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
particles | Particles (1) | out particles | The particles | |||||
id |
| The id of the particles to remove |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
out particles | PassThrough | particles | The out particles |
ParticleSetChannel
This node sets the channel value for the particles. The size of the value array can be shorter than the number of particles. In such a case, the last element of the array is used for the rest of particles.
Inputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
name | String | The name of the channel | ||||||
particles | Particles (1) | out particles | The particles where the channel is set | |||||
value |
| The value to be given to the channel. If the array is shorter than the number of particles the last element of the array is used to set the channel value for the rest of particles |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
out particles | PassThrough | particles | The out particles |
SetArrayParticlesElement
This node returns the elements of the input 'array' at positions specified by the 'index' parameter.
Inputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
array | Particles |
| The array | |||||
index | Integer | The index | ||||||
element | Particles | The element |
Outputs
Name | Types | PassThrough | Description | |||||
---|---|---|---|---|---|---|---|---|
result | Particles |
| The result |
SetParticles
This node set the particles of the input RealFlow node. Channels of the current particle system are kept and initialized with default values. New channels from the new particle system are created and copied.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
node | RealFlow Node | out node | The RealFlow node to set the particles |
particles | Particles | The particles |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
out node | PassThrough | node | The out node |