Description:
The following example shows the default Final Step Update script with detailed comments.
Can Be Used With:
Used by PF_Source as default Final Step Update script.
Effect:
The default script modifies particle speed and direction, causing particles to follow a bulb-shaped path:
EXAMPLE
--Get the current particle system executing the script pf_node_current = particleFlow.scriptRunner() --In case the current particle system is a valid node... if (pf_node_current != undefined) then( --Get the total number of particles count = pf_node_current.NumParticles() --Loop from 1 to the number of particles for i in 1 to count do( --Set the particle index in the container to the current i value. --This makes the i-th particle in the container the current one: pf_node_current.particleIndex = i --Get the age of the particle, multiply by 5 and use as angle --to define the particle speed --Decreasing the constant 5 will slow down the rotation --Increasing the constant will speed up the rotation age = 5*pf_node_current.particleAge --Calculate a factor variable based on the particle age --This variable will define the radius of the bulb and will vary --thanks to the sine of the age over time. --Change the constant 20 to change the radius. factor = 20*(sin(2*age)+1) --Finally, calculate and set the particle position --using the factor as Radius and the particle index as Angle --in the function of the circle. The position of the node has to be --added to move the particles to the origin of the Source. --Info: In general, a circle can be drawn using an Angle --going from 0 to 2*Pi and the following functions for X and Y: --X = CenterX+Radius*Cos(Angle) --Y = CenterY+Radius*Sin(Angle) --In our case, CenterX and CenterY are 0, Radius is set to factor, --and Angle is based on the particle index multiplied by 77. --The Z position is based on the age. pf_node_current.particlePosition = [factor*cos(77*i), factor*sin(77*i), -age] + pf_node_current.pos )--end i loop )--end if