source_particles
Allows the user to emit particles into a simulate_particles compound.
To use this node, connect a geometry object into the geometry input, then plug source_particles.particle_source output into the sources
input of a simulate_particles
compound.
Inputs
geometry
An array of input meshes, points and volumes that define the source geometry.
General
Overall properties for time bounds and disabling of the source.
enable
Whether this source should be used. When not checked this source will be ignored, and will not produce particles.
start_frame
Is the frame at which emission from the source starts.
use_end_frame
Can be enabled to stop the emission at a certain frame. Otherwise emission will continue for the duration of the simulation.
end_frame
Is the frame at which emission from the source stops.
Creation Options
These controls affect the act of emission from the geometry source.
passthrough_points
Turn on this option to use the point_position
of the input geometry as the initial point_position
for the particles. The other Creation Options
are ignored in this case.
passthrough_properties
When passthrough_points
is on, these additional properties will be copied to the particles every frame, and interpolated to substeps when the type supports it. If multiple source_particles
are being used then all their passthrough_properties
will be merged, with default values used for missing properties.
distribution
This controls how particles are distributed on the geometry:
Surface
: Emit from the surface of the input geometryVolume
: Emit from the inside of the input geometry. This requires the geometry be voxelized, which uses the volume_detail_size property to determine how finely to voxelize relative to the bounding box. One can also set the geo_volume_mode and geo_volume_offset for this voxelization by making this compound editable and going into it.
Geometry Volume Conversion
volume_resolution_mode
How the voxel size is determined for mesh emitters.
Absolute
: The size of an emitter voxel is thevolume_detail_size
value in world-space units.Relative
: Thevolume_detail_size
is taken to be proportionate to the largest dimension of the source axis-aligned bounding box. So, a cube that is 20 units in size will have a world-space voxel size that is 20 times larger than the specifiedvolume_detail_size
value inRelative
mode. For sources, the bounds of the source mesh at the start frame are used to determine thevolume_detail_size
for the full animation, even if the source size is animated.
volume_detail_size
This is the voxel size to use when voxelizing the geometry for the Volume
distribution
method.
geo_volume_mode
Defines how an input mesh is voxelized.
Solid
: This mode voxelizes a polygonal mesh as a solid and works best if the mesh is watertight.Shell
: This mode voxelizes a mesh as a thin shell and does not require the mesh to be watertight.
geo_volume_offset
The amount to offset the voxelized volume when emitting from meshes or points in world units. Positive values expand the volume and negative values shrink it.
rate
This controls how many particles will be emitted each step, based on the rate_mode
.
rate_mode
This controls how rate
is defined:
Density
: The number of particles per frame is based on the worldspace unit area for surface distribution, and unit volume for volume distribution. In general when changing the rate mode to density it is a good idea to lower the rate first, as a very large object may have a very large aero or volume, which could result in a huge particle count.Count
: The rate will represent the average number of particles to emit every frame.Count Per Point
: Particles will be emitted from vertices, not surfaces or volumes. The rate is the number of particles to emit from each vertex every frame. If switching to this one may wish to first lower the rate if a mesh has a lot of vertices, as the resulting particle count could be large.
Particle Properties
These controls affect the initial value of per particle properties at emit time.
speed
This is the initial speed of the particles. This value affects both the normal_speed
as well as the direction
vector. The general speed is in units per second.
direction
This is the component of the emission speed along a fixed direction in worldspace.
normal_speed
This is the component of the the emission speed along the geometry normal. If the geometry does not have a point_normal then this will emit in all directions.
spread
This affects the direction of emission. A value of 0 will be along the defined direction or normal. A value of 0.5 will randomly perturb this direction to a spread of 180 degrees. A value of 1.0 will result in a fully random emission direction.
inherit_velocity
This is the degree to which the emission velocity has the velocity of the source geometry added to it. At a value of 1.0 the emitter will add the full object velocity to the particle.
bounciness
This is the resilience of the particle for collisions, and determines how much particles bounce. If both the collider and the particles have bounciness values of 1.0 it will result in perfectly resilient collisions where particles will continue to bounce to the same height, providing there is no drag. Values greater than 1.0 would result in collisions that are not physicially possible.
live_forever
If this is enabled then the age_limit is ignored and particles do not die, unless killed with an influence_field.
age_limit
The age of particles in seconds beyond which they are killed.
size
The initial value to set for the particle point_size, which is used for collisions as well as drawing.
additional_properties
One can add additional per particle properties using this object port. Any simple property on the object passed in will become an array geo property on the particle system. The value on the passed in object will be the value the particles get on emission. For example one could create a set_property node, set the key to color
, set the value to a float3, then plug it into additional_properties
. The particles will have a color property.
Outputs
particle_source
The output is an object that contains an aggregation of source related inputs to the particle solver and should be connected to the sources
port on a simulate_particles
node.