Difference between revisions of "Particle System Initializers"

From Valve Developer Community
Jump to: navigation, search
m (== General Concepts == with caps! we need perfect grammar! >:[)
(Format and grammar! :])
Line 5: Line 5:
  
 
== Alpha Random ==
 
== Alpha Random ==
Inits the particles with a random alpha.
+
Initializes the particles with a random alpha.
  
{| class=standard-table
+
; alpha_min
! Parameter !! Description
+
: Minimum alpha for the particle.
|-
+
; alpha_max
| alpha_min || Minimum alpha for the particle.
+
: Maximum alpha for the particle.
|-
 
| alpha_max || Maximum alpha for the particle.
 
|}
 
  
 
== Color Random ==
 
== Color Random ==
 
Sets the particle's color to a random color between two specified colors.
 
Sets the particle's color to a random color between two specified colors.
  
{| class=standard-table
+
; color1
! Parameter !! Description
+
: First color to choose between.
|-
+
; color2
| color1 || First color to choose between.
+
: Second color to choose between.
|-
+
; tint
| color2 || Second color to choose between.
+
: tint is a percentage (0-1) of how much of the local lighting should be applied to all particles.
|-
+
; tint control point
| tint || tint is a percentage (0-1) of how much of the local lighting should be applied to all particles.
+
: This is the location where lighting is sampled from.  Lighting is not per particle with this initializer.
|-
+
; tint control point movement threshold
| tint control point || this is the location where lighting is sampled from.  Lighting is not per particle with this initializer.
+
: For speed, the initializer only re-updates its lighting check if it has moved farther than this threshold.
|-
+
; tint clamp min/max
| tint control point movement threshold || for speed, the initializer only re-updates its lighting check if it has moved farther than this threshold.
+
: This clamps the lighting sample to a certain range.  It keeps the lighting withing an expected variance.
|-
 
| tint clamp min/max || this clamps the lighting sample to a certain range.  It keeps the lighting withing an expected variance.
 
|}
 
  
 
== Inherit Velocity ==
 
== Inherit Velocity ==
 
Used for emitters attached to a moving entity.  It will cause the emitter to add it's own velocity to each spawned particle.
 
Used for emitters attached to a moving entity.  It will cause the emitter to add it's own velocity to each spawned particle.
  
{| class=standard-table
+
; velocity scale
! Parameter !! Description
+
: The percentage of the velocity to inherit - can be higher than 1 for more than 100%.
|-
 
| velocity scale || the percentage of the velocity to inherit - can be higher than 1 for more than 100%.
 
|}
 
 
 
  
 
== Position Within Box Random ==
 
== Position Within Box Random ==
Inits the particles inside of a box with a certain speed.
+
Initializes the particles inside of a box with a certain speed.
  
{| class=standard-table
+
; x_min
! Parameter !! Description
+
: Minimum distance in the x-axis.
|-
+
; x_max
| x_min || Minimum distance in the x-axis.
+
: Maximum distance in the x-axis.
|-
+
; y_min
| x_max || Maximum distance in the x-axis.
+
: Minimum distance in the y-axis.
|-
+
; y_max
| y_min || Minimum distance in the y-axis.
+
: Maximum distance in the y-axis.
|-
+
; z_min
| y_max || Maximum distance in the y-axis.
+
: Minimum distance in the z-axis.
|-
+
; z_max
| z_min || Minimum distance in the z-axis.
+
: Maximum distance in the z-axis.
|-
 
| z_max || Maximum distance in the z-axis.
 
|}
 
  
 
== Lifetime from Sequence ==
 
== Lifetime from Sequence ==
 
Sets a particle's lifespan based on the animation length of the sequence based on a given FPS. Use with the 'use animation rate as FPS' flag in Render_Animated_Sprites render type to work hand in hand.  If both have the same FPS settings, a particle will map it lifespan and animation together perfectly.  Used when a single particle type consists of many sequences with varying sequence lengths (some have 10 frames, others 60, but all must act appropriately without slow framerate, etc.)
 
Sets a particle's lifespan based on the animation length of the sequence based on a given FPS. Use with the 'use animation rate as FPS' flag in Render_Animated_Sprites render type to work hand in hand.  If both have the same FPS settings, a particle will map it lifespan and animation together perfectly.  Used when a single particle type consists of many sequences with varying sequence lengths (some have 10 frames, others 60, but all must act appropriately without slow framerate, etc.)
  
{| class=standard-table
+
; Frames Per Second
! Parameter !! Description
+
: Sets the desired FPS for the animation.  This is mapped to lifespan according to the number of frames in the sequence the particle receives via a sequence_random or other sequence defining initializer.
|-
 
| Frames Per Second || Sets the desired FPS for the animation.  This is mapped to lifespan according to the number of frames in the sequence the particle receives via a sequence_random or other sequence defining initializer.
 
|}
 
  
 
== Lifetime Random ==
 
== Lifetime Random ==
 
Randomly sets the lifetime of a particle.
 
Randomly sets the lifetime of a particle.
  
{| class=standard-table
+
; Lifetime_min
! Parameter !! Description
+
: Minimum lifetime for the particle.
|-
+
; Lifetime_max
| lifetime_min || Minimum lifetime for the particle.
+
: Maximum lifetime for the particle.
|-
 
| lifetime_max || Maximum lifetime for the particle.
 
|}
 
 
 
  
 
== Lifetime Pre-Age Noise ==
 
== Lifetime Pre-Age Noise ==
 
Treats a particle as if it has already spent part of its lifespan.  All operators that act off of lifespan will act appropriately.
 
Treats a particle as if it has already spent part of its lifespan.  All operators that act off of lifespan will act appropriately.
  
{| class=standard-table
+
; time noise coordinate scale
! Parameter !! Description
+
: This sets the scale of the time part of the noise function - based on particle spawn time.  Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar.
|-
+
; spatial noise coordinate scale
| time noise coordinate scale || this sets the scale of the time part of the noise function - based on particle spawn time.  Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar.
+
: This sets the scale of the spatial part of the noise function - based on particle spawn location.  Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar.  Time noise is added to spatial noise, so set one or the other to zero in order to receive no effect from that portion of the function.
|-
+
; time coordinate offset
| spatial noise coordinate scale || this sets the scale of the spatial part of the noise function - based on particle spawn location.  Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar.  Time noise is added to spatial noise, so set one or the other to zero in order to receive no effect from that portion of the function.
+
: This sets the offset on the noise function to draw from.  Essentially moves the result of a given time input to a different seed.  
|-
+
; spatial coordinate offset
| time coordinate offset || this sets the offset on the noise function to draw from.  Essentially moves the result of a given time input to a different seed.  
+
: This sets the offset on the noise function to draw from.  Essentially moves the result of a given spatial input to a different seed.  
|-
+
; absolute value
| spatial coordinate offset || this sets the offset on the noise function to draw from.  Essentially moves the result of a given spatial input to a different seed.  
+
: Noise returns -1 to 1 which is mapped to the output range.  Using absolute value bool (0/1) , the output can have sudden shifts in direction as the number approaches zero and then bounces back into positives instead of going into negatives.   
|-
+
; invert absolute value
| absolute value || noise returns -1 to 1 which is mapped to the output range.  Using absolute value bool (0/1) , the output can have sudden shifts in direction as the number approaches zero and then bounces back into positives instead of going into negatives.   
+
: Essentially flips the curve created by using the absolute value flag.  So instead of getting sharp valleys, you get sharp peaks. The math is 1 minus the absolute value of the noise.  
|-
+
; start age minimum
| invert absolute value || essentially flips the curve created by using the absolute value flag.  So instead of getting sharp valleys, you get sharp peaks. The math is 1 minus the absolute value of the noise.  
+
: The lower boundary to map the noise to.  This sets the minimum age to add to a particle.   
|-
+
; start age maximum
| start age minimum || the lower boundary to map the noise to.  This sets the minimum age to add to a particle.   
+
: The upper boundary to map the noise to.  This sets the maximum age to add to a particle.   
|-
 
| start age maximum || the upper boundary to map the noise to.  This sets the maximum age to add to a particle.   
 
|}
 
  
 
== Position Modify Offset Random ==
 
== Position Modify Offset Random ==
 
Moves the initial position of a particle in world or local space relative to its emission point.  Can be used to emit particles along a line while still using parts of a sphere emitter or relative to a secondary control point.
 
Moves the initial position of a particle in world or local space relative to its emission point.  Can be used to emit particles along a line while still using parts of a sphere emitter or relative to a secondary control point.
  
{| class=standard-table
+
; offset min
! Parameter !! Description
+
: XYZ minimum offset.   
|-
+
; offset max
| offset min || XYZ minimum offset.   
+
: XYZ maximum offset.   
|-
+
; Offset in local space
| offset max || XYZ maximum offset.   
+
: This bool (0/1) sets where to use world or local (emitter) space to do the offset.
|-
+
; offset relative to radius
| offset in local space || this bool (0/1) sets where to use world or local (emitter) space to do the offset.
+
: This bool (0/1) sets whether to treat the offset values as an amount relative to the particle's radius.  For example, if the offset is set to 0 0 1, and two particles have a radii of 32 and 64, they'd be moved vertically 32 and 64 units respectively.
|-
+
; control_point_number
| offset relative to radius || this bool (0/1) sets whether to treat the offset values as an amount relative to the particle's radius.  For example, if the offset is set to 0 0 1, and two particles have a radii of 32 and 64, they'd be moved vertically 32 and 64 units respectively.
+
: The control point relative to which offset will occur.   
|-
 
| control_point_number || the control point relative to which offset will occur.   
 
|}
 
  
 
== Position Modify Warp Random ==
 
== Position Modify Warp Random ==
 
Warps the initial position of a particle in world or local space relative to its emission point.  Can be used to stretch initial emission shapes.  A sphere can be stretched into an ovoid, or smashed.  Useful in addition to sphere emissions distance bias and absolute value to create squashed domes, rings (the elongated ring seen in Portal), etc.  Warped particles initial speed is also warped by the corresponding amount.  So particles that are stretched will have a higher initial velocity, while those that are squashed will have lower.
 
Warps the initial position of a particle in world or local space relative to its emission point.  Can be used to stretch initial emission shapes.  A sphere can be stretched into an ovoid, or smashed.  Useful in addition to sphere emissions distance bias and absolute value to create squashed domes, rings (the elongated ring seen in Portal), etc.  Warped particles initial speed is also warped by the corresponding amount.  So particles that are stretched will have a higher initial velocity, while those that are squashed will have lower.
  
{| class=standard-table
+
; warp min
! Parameter !! Description
+
: XYZ minimum warp.   
|-
+
; warp max
| warp min || XYZ minimum warp.   
+
: XYZ maximum warp.   
|-
+
; local coordinate space  
| warp max || XYZ maximum warp.   
+
: This bool (0/1) sets where to use world or local (emitter) space to do the offset.
|-
+
; control_point_number
| local coordinate space || this bool (0/1) sets where to use world or local (emitter) space to do the offset.
+
: The control point relative to which warp will occur.   
|-
+
; warp transition time
| control_point_number || the control point relative to which warp will occur.   
+
: Treats the min/max as start and end sizes for a warp that takes place over the specified time.  So the emission placement of each new particle will be warped over time.
|-
+
; warp transition start time
| warp transition time || treats the min/max as start and end sizes for a warp that takes place over the specified time.  So the emission placement of each new particle will be warped over time.
+
: When the warp transition will start
|-
+
; reverse warp
| warp transition start time || when the warp transition will start
+
: In the case of a warp transition, it will make it run backwards (max to min)  
|-
 
| reverse warp || in the case of a warp transition, it will make it run backwards (max to min)  
 
|}
 
  
 
== Position Within Sphere Random ==
 
== Position Within Sphere Random ==
Inits the particles inside of a sphere with a certain speed.
+
Initializes the particles inside of a sphere with a certain speed.
  
{| class=standard-table
+
; distance_min
! Parameter !! Description
+
: Minimum distance to spawn from the center of the sphere.
|-
+
; distance_max
| distance_min || Minimum distance to spawn from the center of the sphere.
+
: Maximum distance to spawn from the center of the sphere.
|-
+
; distance_bias
| distance_max || Maximum distance to spawn from the center of the sphere.
+
: A bias to the distribution of particles in the system in X Y Z relative to each axis.  1 1 0 will create particles only in the X Y plane, while 1 1 10 will create roughly 10 times as many particles near the top and bottom of the sphere as on the X Y parts.  Useful for creating discs, rings, and polar effects.
|-
+
; distance_bias_absolute_value
| distance_bias || A bias to the distribution of particles in the system in X Y Z relative to each axis.  1 1 0 will create particles only in the X Y plane, while 1 1 10 will create roughly 10 times as many particles near the top and bottom of the sphere as on the X Y parts.  Useful for creating discs, rings, and polar effects.
+
: Setting any axis to one will eliminate particles from one hemisphere of the distribution.  Can be used to create hemispheres, quarter spheres, etc.  Use wil distance bias to alter the effect.  Use negative values in distance bias to flip the hemisphere from one side to the other.
|-
+
; bias_in_local_system
| distance_bias_absolute_value || Setting any axis to one will eliminate particles from one hemisphere of the distribution.  Can be used to create hemispheres, quarter spheres, etc.  Use wil distance bias to alter the effect.  Use negative values in distance bias to flip the hemisphere from one side to the other.
+
: Boolean (0/1) value which sets the biasing to use the local space of the emitter rather than world space.   
|-
+
; control_point_number
| bias_in_local_system || Boolean (0/1) value which sets the biasing to use the local space of the emitter rather than world space.
+
: Control point which to spawn relative to.
|-  
+
; speed_min
| control_point_number || Control point which to spawn relative to.
+
: Minimum initial speed of the particle emitted outward from the sphere.
|-
+
; speed_max
| speed_min || Minimum initial speed of the particle emitted outward from the sphere.
+
: Maximum initial speed of the particle emitted outward from the sphere.
|-
+
; speed_random_exponent
| speed_max || Maximum initial speed of the particle emitted outward from the sphere.
+
: The exponent which determines the biasing of particles towards one end or the other of the random range.
|-
+
; speed_in_local_coordinate_system_min
| speed_random_exponent || the exponent which determines the biasing of particles towards one end or the other of the random range.
+
: Local space minimum initial speed of the particle in x y z.
|-
+
; speed_in_local_coordinate_system_max
| speed_in_local_coordinate_system_min || Local space minimum initial speed of the particle in x y z.
+
: Local space maximum initial speed of the particle in x y z.
|-
 
| speed_in_local_coordinate_system_max || Local space maximum initial speed of the particle in x y z.
 
|}
 
  
 
== Radius Random ==
 
== Radius Random ==
 +
Initializes the particles with a random radius.
  
Inits the particles with a random radius.
+
; radius_min
 
+
: Minimum radius for the particle.
{| class=standard-table
+
; radius_max
! Parameter !! Description
+
: Maximum radius for the particle.
|-
 
| radius_min || Minimum radius for the particle.
 
|-
 
| radius_max || Maximum radius for the particle.
 
|}
 
  
 
== Remap Initial Scalar ==
 
== Remap Initial Scalar ==
 
Allows you to map any initial scalar to any other.  Really useful for mapping creation time of a timed system to something else, like alpha to have a system that over time produces particles of higher or lower alpha for example.
 
Allows you to map any initial scalar to any other.  Really useful for mapping creation time of a timed system to something else, like alpha to have a system that over time produces particles of higher or lower alpha for example.
  
{| class=standard-table
+
; input field
! Parameter !! Description
+
: The field to read from
|-
+
; input minimum
| input field || the field to read from
+
: The lower end to map from
|-
+
; input maximum
| input minimum || the lower end to map from
+
: The upper end to map from
|-
+
; output field
| input maximum || the upper end to map from
+
: The field to write to
|-
+
; output minimum
| output field || the field to write to
+
: The lower end to map to
|-
+
; output maximum
| output minimum || the lower end to map to
+
: The upper end to map to
|-
+
; output is scalar of initial random range
| output maximum || the upper end to map to
+
: Rather than overwriting the original value of the output field, the remapped value is multiplied against the initial output field value
|-
 
| output is scalar of initial random range || rather than overwriting the original value of the output field, the remapped value is multiplied against the initial output field value
 
|}
 
  
 
== Remap Noise to Scalar ==
 
== Remap Noise to Scalar ==
 
Allows any scalar parameter to be initialized to a select range via a noise function.  The noise function is mapped based on both time and space, each with their own coordinate scales and offsets.  This creates a range of results that are non-random but vary based on creation time and position.
 
Allows any scalar parameter to be initialized to a select range via a noise function.  The noise function is mapped based on both time and space, each with their own coordinate scales and offsets.  This creates a range of results that are non-random but vary based on creation time and position.
  
{| class=standard-table
+
; time noise coordinate scale
! Parameter !! Description
+
: This sets the scale of the time part of the noise function - based on particle spawn time.  Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar.
|-
+
; spatial noise coordinate scale
| time noise coordinate scale || this sets the scale of the time part of the noise function - based on particle spawn time.  Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar.
+
: This sets the scale of the spatial part of the noise function - based on particle spawn location.  Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar.  Time noise is added to spatial noise, so set one or the other to zero in order to receive no effect from that portion of the function.
|-
+
; output field
| spatial noise coordinate scale || this sets the scale of the spatial part of the noise function - based on particle spawn location.  Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar.  Time noise is added to spatial noise, so set one or the other to zero in order to receive no effect from that portion of the function.
+
: The scalar to set the initial value on.  Radius, Roll, Alpha, Life Duration, etc.   
|-
+
; time coordinate offset
| output field || the scalar to set the initial value on.  Radius, Roll, Alpha, Life Duration, etc.   
+
: This sets the offset on the noise function to draw from.  Two initial scalar noise functions set to different outputs (say alpha and radius) set to the same coordinate scales will behave the same.  Offsets allow for the same scale mapping, but at a different part of the noise.  So for example all small radius particles may have a high alpha rather than a low one if the offset is used.   
|-
+
; spatial coordinate offset
| time coordinate offset || this sets the offset on the noise function to draw from.  Two initial scalar noise functions set to different outputs (say alpha and radius) set to the same coordinate scales will behave the same.  Offsets allow for the same scale mapping, but at a different part of the noise.  So for example all small radius particles may have a high alpha rather than a low one if the offset is used.   
+
: This sets the offset on the noise function to draw from.  Two initial scalar noise functions set to different outputs (say alpha and radius) set to the same coordinate scales will behave the same.  Offsets allow for the same scale mapping, but at a different part of the noise.  So for example all small radius particles may have a high alpha rather than a low one if the offset is used.   
|-
+
; absolute value
| spatial coordinate offset || this sets the offset on the noise function to draw from.  Two initial scalar noise functions set to different outputs (say alpha and radius) set to the same coordinate scales will behave the same.  Offsets allow for the same scale mapping, but at a different part of the noise.  So for example all small radius particles may have a high alpha rather than a low one if the offset is used.   
+
: Noise returns -1 to 1 which is mapped to the output range.  Using absolute value bool (0/1) , the output can have sudden shifts in direction as the number approaches zero and then bounces back into positives instead of going into negatives.   
|-
+
; invert absolute value
| absolute value || noise returns -1 to 1 which is mapped to the output range.  Using absolute value bool (0/1) , the output can have sudden shifts in direction as the number approaches zero and then bounces back into positives instead of going into negatives.   
+
: Essentially flips the curve created by using the absolute value flag.  So instead of getting sharp valleys, you get sharp peaks.  The math is 1 minus the absolute value of the noise.  
|-
+
; output minimum
| invert absolute value || essentially flips the curve created by using the absolute value flag.  So instead of getting sharp valleys, you get sharp peaks.  The math is 1 minus the absolute value of the noise.  
+
: The lower boundary to map the noise to.  This sets the lower range of what the resulting output will be.  So for example, to create smoke with a minimum radius of 12, set this to 12.
|-
+
; output maximum
| output minimum || the lower boundary to map the noise to.  This sets the lower range of what the resulting output will be.  So for example, to create smoke with a minimum radius of 12, set this to 12.
+
: The upper boundary to map the noise to.  This sets the upper range of what the resulting output will be.  So for example, to create smoke with a maximum radius of 24, set this to 24.  In the noted example, smoke radius will range from 12-24 based on the noise function.
|-
 
| output maximum || the upper boundary to map the noise to.  This sets the upper range of what the resulting output will be.  So for example, to create smoke with a maximum radius of 24, set this to 24.  In the noted example, smoke radius will range from 12-24 based on the noise function.
 
|}
 
  
 
== Rotation Random ==
 
== Rotation Random ==
 
Starting from a base angle, randomly offsets the particle a certain number of degrees.
 
Starting from a base angle, randomly offsets the particle a certain number of degrees.
  
{| class=standard-table
+
; rotation_initial
! Parameter !! Description
+
: Initial rotation for the particle (in degrees).
|-
+
; rotation_offset_min
| rotation_intial || Initial rotation for the particle (in degrees).
+
: Minimum number of degrees to randomly offset the particle.
|-
+
; rotation_offset_max
| rotation_offset_min || Minimum number of degrees to randomly offset the particle.
+
: Maximum number of degrees to randomly offset the particle.
|-
 
| rotation_offset_max || Maximum number of degrees to randomly offset the particle.
 
|}
 
  
 
== Rotation Speed Random ==
 
== Rotation Speed Random ==
 
Used to specify a per-particle rotation speed. Use the operator Rotation Basic to update the particle's rotation based on its rotation speed.
 
Used to specify a per-particle rotation speed. Use the operator Rotation Basic to update the particle's rotation based on its rotation speed.
  
{| class=standard-table
+
; rotation_speed_constant
! Parameter !! Description
+
: A fixed speed in degrees/second
|-
+
; rotation_speed_random_min
| rotation_speed_constant || A fixed speed in degrees/second
+
: Minimum number of degrees/second to randomly spin the particle.
|-
+
; rotation_speed_random_max
| rotation_speed_random_min || Minimum number of degrees/second to randomly spin the particle.
+
: Maximum number of degrees/second to randomly spin the particle.
|-
+
; rotation_speed_random_exponent
| rotation_speed_random_max || Maximum number of degrees/second to randomly spin the particle.
+
: Biases the random speed either toward the specified min or max. 1 = equally likely to be min or max. >1 = more often selects values closer to max, <1 = more often selects values closer to min
|-
+
; randomly_flip_direction
| rotation_speed_random_exponent || Biases the random speed either toward the specified min or max. 1 = equally likely to be min or max. >1 = more often selects values closer to max, <1 = more often selects values closer to min
+
: If 1, causes the spin to randomly be multiplied by -1 (switching between clockwise and counter-clockwise spin)
|-
 
| randomly_flip_direction || If 1, causes the spin to randomly be multiplied by -1 (switching between clockwise and counter-clockwise spin)
 
|}
 
  
 
== Velocity Noise ==
 
== Velocity Noise ==
Line 267: Line 219:
 
[[Image:initial_velocity_noise.jpg|thumb|right|250px|These particles use no random velocities, their velocity is defined by their initial velocity noise.  Time with minor variations in position determine where they fire out to.  You can see that over time they vary, but are not random.]]
 
[[Image:initial_velocity_noise.jpg|thumb|right|250px|These particles use no random velocities, their velocity is defined by their initial velocity noise.  Time with minor variations in position determine where they fire out to.  You can see that over time they vary, but are not random.]]
  
{| class=standard-table
+
; time noise coordinate scale
! Parameter !! Description
+
: This sets the scale of the time part of the noise function - based on particle spawn time.  Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar.
|-
+
; spatial noise coordinate scale
| time noise coordinate scale || this sets the scale of the time part of the noise function - based on particle spawn time.  Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar.
+
: This sets the scale of the spatial part of the noise function - based on particle spawn location.  Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar.  Time noise is added to spatial noise, so set one or the other to zero in order to receive no effect from that portion of the function.
|-
+
; time coordinate offset
| spatial noise coordinate scale || this sets the scale of the spatial part of the noise function - based on particle spawn location.  Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar.  Time noise is added to spatial noise, so set one or the other to zero in order to receive no effect from that portion of the function.
+
: This sets the offset on the noise function to draw from.  Essentially moves the result of a given time input to a different seed.  
|-
+
; spatial coordinate offset
| time coordinate offset || this sets the offset on the noise function to draw from.  Essentially moves the result of a given time input to a different seed.  
+
: This sets the offset on the noise function to draw from.  Essentially moves the result of a given spatial input to a different seed.  
|-
+
; absolute value
| spatial coordinate offset || this sets the offset on the noise function to draw from.  Essentially moves the result of a given spatial input to a different seed.  
+
: Noise returns -1 to 1 which is mapped to the output range.  Using absolute value bool (0/1) , the output can have sudden shifts in direction as the number approaches zero and then bounces back into positives instead of going into negatives.   
|-
+
; invert absolute value
| absolute value || noise returns -1 to 1 which is mapped to the output range.  Using absolute value bool (0/1) , the output can have sudden shifts in direction as the number approaches zero and then bounces back into positives instead of going into negatives.   
+
: Essentially flips the curve created by using the absolute value flag.  So instead of getting sharp valleys, you get sharp peaks.  The math is 1 minus the absolute value of the noise.  
|-
+
; output minimum
| invert absolute value || essentially flips the curve created by using the absolute value flag.  So instead of getting sharp valleys, you get sharp peaks.  The math is 1 minus the absolute value of the noise.  
+
: The lower boundary to map the noise to.  This sets the minimum speed to give to a particle.  Of course for particles moving in all directions, XYZ should all be negative.  
|-
+
; output maximum
| output minimum || the lower boundary to map the noise to.  This sets the minimum speed to give to a particle.  Of course for particles moving in all directions, XYZ should all be negative.  
+
: The upper boundary to map the noise to.  This sets the maximum speed to give to a particle.   
|-
 
| output maximum || the upper boundary to map the noise to.  This sets the maximum speed to give to a particle.   
 
|}
 
  
 
== Velocity Repulse from World ==
 
== Velocity Repulse from World ==
 
Pushes the particles away from any nearby surfaces upon spawn.  Traces are shot out in the cardinal directions from the specified control point.  Particles receive a push in the most open direction if any nearby directions are blocked.  Good for giving the impression of pressure imparted effects in enclosed areas.
 
Pushes the particles away from any nearby surfaces upon spawn.  Traces are shot out in the cardinal directions from the specified control point.  Particles receive a push in the most open direction if any nearby directions are blocked.  Good for giving the impression of pressure imparted effects in enclosed areas.
  
{| class=standard-table
+
; minimum velocity
! Parameter !! Description
+
: The minimum velocity scale that will be imparted on each axis if there is nothing blocking nearby the control point
|-
+
; maximum velocity
| minimum velocity || the minimum velocity scale that will be imparted on each axis if there is nothing blocking nearby the control point
+
: The maximum velocity scale that will be imparted, pushing away from any blocked directions
|-
+
; collision group
| maximum velocity || the maximum velocity scale that will be imparted, pushing away from any blocked directions
+
: The collision group to test against.  DEBRIS or NONE recommended.
|-
+
; control_point_number
| collision group || the collision group to test against.  DEBRIS or NONE recommended.
+
: The point to do the tests from.
|-
+
; Per Particle World Collision Tests
| control_point_number || The point to do the tests from
+
: Will cause each particle to do its own test.  SLOW - USE WITH CAUTION.
|-
+
; Use radius for Per Particle Trace Length
| Per Particle World Collision Tests || Will cause each particle to do its own test.  SLOW - USE WITH CAUTION.
+
: Makes the trace length of per particle tests the particle's radius
|-
+
; Trace Length
| Use radius for Per Particle Trace Length || Makes the trace length of per particle tests the particle's radius
+
: The distance to trace each direction.
|-
+
; Inherit from Parent
| Trace Length || The distance to trace each direction.
+
: If set to true, the control point number field becomes the field to read data out of.  Rather than doing traces, the initializer reads them from the control point.  This is used for performance.  A parent particle can do the test once, and all children can inherit the data rather than duplicating the same test many times over.
|-
+
; control points to broadcast to children (n + 1)
| Inherit from Parent || If set to true, the control point number field becomes the field to read data out of.  Rather than doing traces, the initializer reads them from the control point.  This is used for performance.  A parent particle can do the test once, and all children can inherit the data rather than duplicating the same test many times over.
+
: If broadcasting to children, this is the control point to start with.  It requires 2 control points to store the data.  
|-
+
; Child Group ID to affect
| control points to broadcast to children (n + 1) || If broadcasting to children, this is the control point to start with.  It requires 2 control points to store the data.  
+
: When broadcasting the CP, only send to children in this group ID.
|-
 
| Child Group ID to affect || When broadcasting the CP, only send to children in this group ID.
 
|}
 

Revision as of 17:23, 30 August 2009

General Concepts

To add an initializer to your particle, set the Properties dropdown to "Initializer" and right-click in the window below. This will bring an "add..." popup.

Alpha Random

Initializes the particles with a random alpha.

alpha_min
Minimum alpha for the particle.
alpha_max
Maximum alpha for the particle.

Color Random

Sets the particle's color to a random color between two specified colors.

color1
First color to choose between.
color2
Second color to choose between.
tint
tint is a percentage (0-1) of how much of the local lighting should be applied to all particles.
tint control point
This is the location where lighting is sampled from. Lighting is not per particle with this initializer.
tint control point movement threshold
For speed, the initializer only re-updates its lighting check if it has moved farther than this threshold.
tint clamp min/max
This clamps the lighting sample to a certain range. It keeps the lighting withing an expected variance.

Inherit Velocity

Used for emitters attached to a moving entity. It will cause the emitter to add it's own velocity to each spawned particle.

velocity scale
The percentage of the velocity to inherit - can be higher than 1 for more than 100%.

Position Within Box Random

Initializes the particles inside of a box with a certain speed.

x_min
Minimum distance in the x-axis.
x_max
Maximum distance in the x-axis.
y_min
Minimum distance in the y-axis.
y_max
Maximum distance in the y-axis.
z_min
Minimum distance in the z-axis.
z_max
Maximum distance in the z-axis.

Lifetime from Sequence

Sets a particle's lifespan based on the animation length of the sequence based on a given FPS. Use with the 'use animation rate as FPS' flag in Render_Animated_Sprites render type to work hand in hand. If both have the same FPS settings, a particle will map it lifespan and animation together perfectly. Used when a single particle type consists of many sequences with varying sequence lengths (some have 10 frames, others 60, but all must act appropriately without slow framerate, etc.)

Frames Per Second
Sets the desired FPS for the animation. This is mapped to lifespan according to the number of frames in the sequence the particle receives via a sequence_random or other sequence defining initializer.

Lifetime Random

Randomly sets the lifetime of a particle.

Lifetime_min
Minimum lifetime for the particle.
Lifetime_max
Maximum lifetime for the particle.

Lifetime Pre-Age Noise

Treats a particle as if it has already spent part of its lifespan. All operators that act off of lifespan will act appropriately.

time noise coordinate scale
This sets the scale of the time part of the noise function - based on particle spawn time. Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar.
spatial noise coordinate scale
This sets the scale of the spatial part of the noise function - based on particle spawn location. Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar. Time noise is added to spatial noise, so set one or the other to zero in order to receive no effect from that portion of the function.
time coordinate offset
This sets the offset on the noise function to draw from. Essentially moves the result of a given time input to a different seed.
spatial coordinate offset
This sets the offset on the noise function to draw from. Essentially moves the result of a given spatial input to a different seed.
absolute value
Noise returns -1 to 1 which is mapped to the output range. Using absolute value bool (0/1) , the output can have sudden shifts in direction as the number approaches zero and then bounces back into positives instead of going into negatives.
invert absolute value
Essentially flips the curve created by using the absolute value flag. So instead of getting sharp valleys, you get sharp peaks. The math is 1 minus the absolute value of the noise.
start age minimum
The lower boundary to map the noise to. This sets the minimum age to add to a particle.
start age maximum
The upper boundary to map the noise to. This sets the maximum age to add to a particle.

Position Modify Offset Random

Moves the initial position of a particle in world or local space relative to its emission point. Can be used to emit particles along a line while still using parts of a sphere emitter or relative to a secondary control point.

offset min
XYZ minimum offset.
offset max
XYZ maximum offset.
Offset in local space
This bool (0/1) sets where to use world or local (emitter) space to do the offset.
offset relative to radius
This bool (0/1) sets whether to treat the offset values as an amount relative to the particle's radius. For example, if the offset is set to 0 0 1, and two particles have a radii of 32 and 64, they'd be moved vertically 32 and 64 units respectively.
control_point_number
The control point relative to which offset will occur.

Position Modify Warp Random

Warps the initial position of a particle in world or local space relative to its emission point. Can be used to stretch initial emission shapes. A sphere can be stretched into an ovoid, or smashed. Useful in addition to sphere emissions distance bias and absolute value to create squashed domes, rings (the elongated ring seen in Portal), etc. Warped particles initial speed is also warped by the corresponding amount. So particles that are stretched will have a higher initial velocity, while those that are squashed will have lower.

warp min
XYZ minimum warp.
warp max
XYZ maximum warp.
local coordinate space
This bool (0/1) sets where to use world or local (emitter) space to do the offset.
control_point_number
The control point relative to which warp will occur.
warp transition time
Treats the min/max as start and end sizes for a warp that takes place over the specified time. So the emission placement of each new particle will be warped over time.
warp transition start time
When the warp transition will start
reverse warp
In the case of a warp transition, it will make it run backwards (max to min)

Position Within Sphere Random

Initializes the particles inside of a sphere with a certain speed.

distance_min
Minimum distance to spawn from the center of the sphere.
distance_max
Maximum distance to spawn from the center of the sphere.
distance_bias
A bias to the distribution of particles in the system in X Y Z relative to each axis. 1 1 0 will create particles only in the X Y plane, while 1 1 10 will create roughly 10 times as many particles near the top and bottom of the sphere as on the X Y parts. Useful for creating discs, rings, and polar effects.
distance_bias_absolute_value
Setting any axis to one will eliminate particles from one hemisphere of the distribution. Can be used to create hemispheres, quarter spheres, etc. Use wil distance bias to alter the effect. Use negative values in distance bias to flip the hemisphere from one side to the other.
bias_in_local_system
Boolean (0/1) value which sets the biasing to use the local space of the emitter rather than world space.
control_point_number
Control point which to spawn relative to.
speed_min
Minimum initial speed of the particle emitted outward from the sphere.
speed_max
Maximum initial speed of the particle emitted outward from the sphere.
speed_random_exponent
The exponent which determines the biasing of particles towards one end or the other of the random range.
speed_in_local_coordinate_system_min
Local space minimum initial speed of the particle in x y z.
speed_in_local_coordinate_system_max
Local space maximum initial speed of the particle in x y z.

Radius Random

Initializes the particles with a random radius.

radius_min
Minimum radius for the particle.
radius_max
Maximum radius for the particle.

Remap Initial Scalar

Allows you to map any initial scalar to any other. Really useful for mapping creation time of a timed system to something else, like alpha to have a system that over time produces particles of higher or lower alpha for example.

input field
The field to read from
input minimum
The lower end to map from
input maximum
The upper end to map from
output field
The field to write to
output minimum
The lower end to map to
output maximum
The upper end to map to
output is scalar of initial random range
Rather than overwriting the original value of the output field, the remapped value is multiplied against the initial output field value

Remap Noise to Scalar

Allows any scalar parameter to be initialized to a select range via a noise function. The noise function is mapped based on both time and space, each with their own coordinate scales and offsets. This creates a range of results that are non-random but vary based on creation time and position.

time noise coordinate scale
This sets the scale of the time part of the noise function - based on particle spawn time. Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar.
spatial noise coordinate scale
This sets the scale of the spatial part of the noise function - based on particle spawn location. Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar. Time noise is added to spatial noise, so set one or the other to zero in order to receive no effect from that portion of the function.
output field
The scalar to set the initial value on. Radius, Roll, Alpha, Life Duration, etc.
time coordinate offset
This sets the offset on the noise function to draw from. Two initial scalar noise functions set to different outputs (say alpha and radius) set to the same coordinate scales will behave the same. Offsets allow for the same scale mapping, but at a different part of the noise. So for example all small radius particles may have a high alpha rather than a low one if the offset is used.
spatial coordinate offset
This sets the offset on the noise function to draw from. Two initial scalar noise functions set to different outputs (say alpha and radius) set to the same coordinate scales will behave the same. Offsets allow for the same scale mapping, but at a different part of the noise. So for example all small radius particles may have a high alpha rather than a low one if the offset is used.
absolute value
Noise returns -1 to 1 which is mapped to the output range. Using absolute value bool (0/1) , the output can have sudden shifts in direction as the number approaches zero and then bounces back into positives instead of going into negatives.
invert absolute value
Essentially flips the curve created by using the absolute value flag. So instead of getting sharp valleys, you get sharp peaks. The math is 1 minus the absolute value of the noise.
output minimum
The lower boundary to map the noise to. This sets the lower range of what the resulting output will be. So for example, to create smoke with a minimum radius of 12, set this to 12.
output maximum
The upper boundary to map the noise to. This sets the upper range of what the resulting output will be. So for example, to create smoke with a maximum radius of 24, set this to 24. In the noted example, smoke radius will range from 12-24 based on the noise function.

Rotation Random

Starting from a base angle, randomly offsets the particle a certain number of degrees.

rotation_initial
Initial rotation for the particle (in degrees).
rotation_offset_min
Minimum number of degrees to randomly offset the particle.
rotation_offset_max
Maximum number of degrees to randomly offset the particle.

Rotation Speed Random

Used to specify a per-particle rotation speed. Use the operator Rotation Basic to update the particle's rotation based on its rotation speed.

rotation_speed_constant
A fixed speed in degrees/second
rotation_speed_random_min
Minimum number of degrees/second to randomly spin the particle.
rotation_speed_random_max
Maximum number of degrees/second to randomly spin the particle.
rotation_speed_random_exponent
Biases the random speed either toward the specified min or max. 1 = equally likely to be min or max. >1 = more often selects values closer to max, <1 = more often selects values closer to min
randomly_flip_direction
If 1, causes the spin to randomly be multiplied by -1 (switching between clockwise and counter-clockwise spin)

Velocity Noise

Allows particle velocity to be initialized to a select range via a noise function. The noise function is mapped based on both time and space, each with their own coordinate scales and offsets. This creates a range of results that are non-random but vary based on creation time and position.

These particles use no random velocities, their velocity is defined by their initial velocity noise. Time with minor variations in position determine where they fire out to. You can see that over time they vary, but are not random.
time noise coordinate scale
This sets the scale of the time part of the noise function - based on particle spawn time. Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar.
spatial noise coordinate scale
This sets the scale of the spatial part of the noise function - based on particle spawn location. Larger numbers will appear increasingly random, while very small numbers will map to a similar area of the noise and look very similar. Time noise is added to spatial noise, so set one or the other to zero in order to receive no effect from that portion of the function.
time coordinate offset
This sets the offset on the noise function to draw from. Essentially moves the result of a given time input to a different seed.
spatial coordinate offset
This sets the offset on the noise function to draw from. Essentially moves the result of a given spatial input to a different seed.
absolute value
Noise returns -1 to 1 which is mapped to the output range. Using absolute value bool (0/1) , the output can have sudden shifts in direction as the number approaches zero and then bounces back into positives instead of going into negatives.
invert absolute value
Essentially flips the curve created by using the absolute value flag. So instead of getting sharp valleys, you get sharp peaks. The math is 1 minus the absolute value of the noise.
output minimum
The lower boundary to map the noise to. This sets the minimum speed to give to a particle. Of course for particles moving in all directions, XYZ should all be negative.
output maximum
The upper boundary to map the noise to. This sets the maximum speed to give to a particle.

Velocity Repulse from World

Pushes the particles away from any nearby surfaces upon spawn. Traces are shot out in the cardinal directions from the specified control point. Particles receive a push in the most open direction if any nearby directions are blocked. Good for giving the impression of pressure imparted effects in enclosed areas.

minimum velocity
The minimum velocity scale that will be imparted on each axis if there is nothing blocking nearby the control point
maximum velocity
The maximum velocity scale that will be imparted, pushing away from any blocked directions
collision group
The collision group to test against. DEBRIS or NONE recommended.
control_point_number
The point to do the tests from.
Per Particle World Collision Tests
Will cause each particle to do its own test. SLOW - USE WITH CAUTION.
Use radius for Per Particle Trace Length
Makes the trace length of per particle tests the particle's radius
Trace Length
The distance to trace each direction.
Inherit from Parent
If set to true, the control point number field becomes the field to read data out of. Rather than doing traces, the initializer reads them from the control point. This is used for performance. A parent particle can do the test once, and all children can inherit the data rather than duplicating the same test many times over.
control points to broadcast to children (n + 1)
If broadcasting to children, this is the control point to start with. It requires 2 control points to store the data.
Child Group ID to affect
When broadcasting the CP, only send to children in this group ID.