thinkingParticles 7.3

ExpressionME-L Node 

 

The ExpressionME-L Node is a powerful tool in thinkingParticles that allows users to create custom particle simulations and effects using a programming language borrowing some aspects of C. It offers a wide range of inputs, functions, and variables to manipulate particle data, interact with 3ds Max objects and materials, and perform complex calculations.
ExpressionME-L is used to create advanced particle simulations and effects that are difficult to achieve using standard nodes in thinkingParticles. It allows users to create custom particle behavior, such as flocking, swarming, or crowd simulation, and to create or modify custom particle forces, such as wind, turbulence, or gravity.
To utilize the full capabilities of the ExpressionME-L Node, some programming experience or willingness to learn the expression language is required. It is a powerful and flexible tool for creating custom particle simulations and effects in thinkingParticles, best suited for advanced users seeking unlimited, unbound particle effects and flexibility.

In comparison to standard thinkingParticles nodes, which are mainly single threaded when evaluating particle data, the ExpressionME-L Node offers greater flexibility and control over the processing of particle data. It allows users to choose the most efficient method for their specific simulation needs.

How to Think About ME-L Setups

ME-L setups require a new way of thinking.

First, decide which input you really want to use with multi-threading -- this will be your first Input into the ME-L operator.

Next, be aware that some input types will not ever be multi-threaded.These include: Particle, Scalar, and Vector.

When designing ME-L expressions, the basic process is:
1. Define your variables
2. Use functions to populate those variables with data
3. Then use other functions to apply or use that data If using data outputs on the ME-L operator, be aware that certain outputs will not be multi-threaded. These include: Particle, Scalar, and Vector.

 

 

Operator Inputs 

ON - (Bool) This input data stream determines whether the operator is considered 'on' or 'off'. You can connect other operators to this input channel such as a Bool Helper to activate/deactivate the whole operator.

Time
- (Time) This input data stream is used to define the local time for the operator when the user wants to override the default system time.

This operator is a special type of operator as it can have multiple, user defined, inputs and outputs. The possible inputs and outputs are discussed below

Operator Outputs 

This operator is a special type of operator as it can have multiple, user defined, inputs and outputs. The possible inputs and outputs are discussed below.

 

Rollout Menu 

Editor - click this button to bring up the ME-L editor window. To learn more about the functionality of this text editor, follow this link: ME-L Editor Explained

c - press this button to center the Editor window on the main screen.


Working with Inputs/Outputs

The ME-L node is a unique node that allows for programmatically creating inputs and outputs in thinkingParticles. By using simple commands, demonstrated in the code snippet below, you can generate inputs and outputs for this node. While the location of the I/O code segment is not critical, it is recommended to place it at the beginning of your script for best practice. In the event that code attempts to access input values before they are created, an error will occur during compilation. To avoid such errors, ensure that you first create the input/output ports before accessing them via variable or name.

Call Examples for Input/Output Generation:

// I/O Block start

input_desc('distancefield', port_vdb_distance); // our VDB field input (must be first for parallel) 

input_desc('type', port_scalar,port_p_min,0,port_p_max,12); // min/max 
input_desc('wall', port_scalar); 
input_desc('scale', port_scalar); // scale 
input_desc('fac1', port_scalar); 
input_desc('fac2', port_scalar); 
input_desc('fac3', port_scalar); 
input_desc('fac4', port_scalar); 
input_desc('margin_x', port_scalar); 
input_desc('margin_y', port_scalar); 
input_desc('margin_z', port_scalar); 
input_desc('mscale', port_scalar); 
input_desc('mbias', port_scalar); 
input_desc('rotation', port_scalar);

output_desc('distancefield',port_vdb_distance); // our VDB field output

// I/O block end

 

In/Output - the ExpressionME-L Node integration into thinkingParticles allows you to access and manipulate nearly every aspect of a thinkingParticles simulation, including particles, fields, and forces.
With its ability to leverage parallel processing, ExpressionME-L can efficiently manipulate large amounts of particles and adhere to thinkingParticles' philosophy of 100% procedural visual effects creation.

Find below a list of possible inputs and outputs for this node. To learn more about a specific type of output, click the relevant link.


Available Input Options:

Basic Inputs Field Inputs Other Inputs
Scalar FogField Group
Vector DistanceField Generator
Particle ScalarField TextureMap
  IntegerField Shaper
  PositionField Object List
  VelocityField Shapes
  VectorField Lights
  VDataField Function
  ColorField Memory
  AlphaMask Collision
    Force

 

Available Output options are:

Basic Outputs Field Outputs
Scalar FogField
Vector DistanceField
Particle ScalarField
  IntegerField
  PositionField
  VelocityField
  VectorField
  VDataField
  ColorField
  AlphaMask

 

 

 

 

 

©2023, cebas Visual Technology Inc.