Particle Expression Modifier
The particle expression modifier allows you to apply expressions to particles. An expression is a set of instructions that are represented as a mathematical formula. In the case of this particle expression modifier, certain mathematical controls can be applied to particles to control various aspects of the particles motions or positions, or can assign a control when a certain condition is met. The expression itself controls the way in which the particles are affected, the Apply and Range options control the degree of its affect, and the transform options control the actual modification that is applied to the target.
Adding a Particle Expression Modifier
You can add a particle expression modifier item in the Setup interface under the Particles subtab, or by using the Add Item button of the Items List. Click the button to open the menu, and under Particles > Modifiers, click Particle Expression Modifier.
Once added to the scene, you need to drag the item itself from the Items list and drop it in the Schematic viewport. The expression modifier is connected between the point source element and the point target items, such as a Replicator. The connection should look like this image.
The expression modifies the particle values from the source, which can be any number of particle items, either static or dynamic. In this case, it is a simple particle Generator. Those values are replaced with the expression evaluations and then passed on to the target. The values returned by the expression are multiplied by the values set in the other channels of the modifier. For example, for a sine wave on the Y axis that moves through the range of the particles with time, the expression is sin(T+PID). Where using PID (particle ID) is an offset to the current time applied to the Y position. Then you just need to set the Position Y transform option to a positive value, such as 1 m, and all the other Position, Rotation and Scale channels to 0.0. When the Timeline is played, the sine wave transforms the positions of the particles 1 m modulating up and down with the default Range Min/Max values of 100%/100%, respectively.
When the particle expression modifier is selected, the following attributes appear in the Properties panel.
Option 
Description 

Name 
Displays the current item name. To change it, click on the field and type in the new name. 
Expression 

Point Source 
Defines the source of the particles that are affected by the expression modifier. 
Source Mode 
Specifies the way the particle modifier affects the source. Vertices uses the point positions, Polygons uses the polygon centers, and Detached Vertices uses the point positions of vertices that are not part of polygons. 
Apply 
Determines the overall degree that the expression affects the target. At 0% the target is not affected at all, at 100% the target is fully affected. This allows you to transition to the modified state. 
Formula 
This is where the actual expression formula is entered. 
Range Min/Max 
Determines the amount of transform applied to the target over the entire range of the particles acting as a multiplier on the value. For example, if the Scale is set to 200% on all three axes, and the Range Min/Max is 100%/100% respectively, then the first particle would be scaled 200%, attenuating the value toward the last particle scaled at 200%. The range is determined in the order of the Particle ID. 
Seed 
The initial number used when generating the random procedural values. Different Seed values produce different random variations and can be useful in changing the result. 
PositionX/Y/Z 
Defines the position values added to the target for each axes. 
RotationX/Y/Z 
Defines the rotation values added to the target for each axes. 
Scale X/Y/Z 
Defines the scale values added to the target for each axes. 
Color 
Allows you to use mini gradient editors to assign and control different attributes for the resulting particles. These attributes are then passed along to the final effect, working with both volumes and sprites. The gradient values are generated sequentially, dividing the gradient itself into the number of generated particles it is assigned to, each receiving the value for that position along the gradient. For example, a red to blue gradient assigned to a linear array of particles produces one red particle at the start. The particle colors then fade toward the blue color in even increments along the length of the array. There are three different settings that can be applied to their associated surface attributes. Any of these functions are enabled by selecting any option other than Off (the default value that disabled the function). The selected Mode determines the blending of the gradient with the base setting of the target element. 
Color Mode 
Determines how the resulting gradient applies, defining the blending mode of the colors as they apply to the base particle coloring. The Color gradient editor that opens allows you to define the actual gradient values that are applied. 
Luminance Mode 
Determines how the resulting gradient applies, defining the blending mode of the luminosity value as it applies to the base particle luminosity. The Luminosity gradient editor that opens allows you to define the actual gradient values that are applied. 
Dissolve Mode 
Determines how the resulting gradient applies, defining the blending mode of the colors as they apply to the base particle transparency. The Dissolve gradient editor that opens allows you to define the actual gradient values that are determine the transparent amount.
A Normal color mode gradient applied to a particle generator's radial array 
Particle Variables
The following table lists perparticle variables supported by the parser.
Note: For AGE, PATH, and MASS you need to enable these features in the Particle Simulation item, otherwise they return zero.
User channels can be referenced by name in the expression.
Variable 
Meaning 

PX, PY, PZ 
Position for X, Y & Z 
PPX, PPY, PPZ 
Previous Position for X, Y & Z 
RX, RY, RZ 
Rotation for X, Y & Z 
SX, SY, SZ 
Scale for X, Y & Z 
VX, VY, VZ 
Velocity for X, Y & Z 
FX, FY, FZ 
Force for X, Y & Z 
CR, CG, CB 
Color for R, G & B 
LUM 
Luminance 
PID 
Particle ID 
PCNT 
Particle Count 
AGE 
Particle Age 
MASS 
Particle Mass 
SIZE 
Particle Size 
PATH 
The distance the particle has traveled 
DISS 
Dissolve 
RATE 
Rate 
ITEM 
Item 
T 
Time 
Builtin Function
The following table gives an overview of the functions supported by the default implementation. It lists the function names, the number of arguments and a brief description.
Name 
Meaning 

sin 
sine function 
cos 
cosine function 
tan 
tangens function 
asin 
arcus sine function 
acos 
arcus cosine function 
atan 
arcus tangens function 
sinh 
hyperbolic sine function 
cosh 
hyperbolic cosine 
tanh 
hyperbolic tangens function 
asinh 
hyperbolic arcus sine function 
acosh 
hyperbolic arcus tangens function 
atanh 
hyperbolic arcur tangens function 
log2 
logarithm to the base 2 
log10 
logarithm to the base 10 
log 
logarithm to the base 10 
ln 
logarithm to base e (2.71828...) 
exp 
e raised to the power of x 
sqrt 
square root of a value 
sign 
sign function 1 if x<0; 1 if x>0 
rint 
round to nearest integer 
abs 
absolute value 
min 
min of all arguments 
max 
max of all arguments 
sum 
sum of all arguments 
avg 
mean value of all arguments 
mod(a,b) 
returns the remainder of a divided by b 
clamp(a, min, max) 
given a value a, if a is less then min, min is returned. If greater then max, max is returned. If in between min and max, a is returned. 
Builtin Binary Operators
The following table lists the default binary operators supported by the parser.
Operator 
Meaning 
Priority 

= 
assignment * 
1 
&& 
logical and 
1 
 
logical or 
2 
<= 
less or equal 
4 
>= 
greater or equal 
4 
!= 
not equal 
4 
== 
equal 
4 
> 
greater than 
4 
< 
less than 
4 
+ 
addition 
5 
 
subtraction 
5 
* 
multiplication 
6 
/ 
division 
6 
^ 
raise x to the power of y 
7 
Other Operators
muParser has built in support for the if/then/else operator. It uses lazy evaluation in order to make sure only the necessary branch of the expression is evaluated.
Operator 
Meaning 
Remarks 

?: 
if then else operator 
C/C++ style syntax 