I am trying to figure out how to scale particle radius (with a min and max radius) based on the velocity of my emitter. Can anyone either explain to me how to do this or point me to some sort of tutorial on the subject?
I want that my particles had for example 1.0 radius when my emitter is static, and 0.4 radius when the emitter is at his maximum velocity.
This is a lot easily done with SOuP if you have it but if you dont it can get a little more convoluted.
Essentially you want to grab the emitters world position using xform and stuff that into a custom particle attribute like oldPosition in a creation expression, then in runtime do the same thing but call it newPosition.
So to find the velocity vector of the emitter, subtract the newPosition from the oldPosition and use the mag function to get speed - this is basic vector math.
Once you have the speed you can use linstep to control the values and assign that to radiusPP. By using 1-linstep that will reverse your values so when the emitter has zero speed the radius will increase. Afterwards set oldPosition = newPosition so that when the code loops again a new vector is produced from the new positions of the emitter.
Now to stop the particle from changing radius over its lifespan, wrap all the code up in an if statement like if(age<0.1).
As mentioned above, this is easy in SOuP using a node that when attached to a transform will let you know its speed, so theres no need for all that old-newPosition code required and then you just query that speed in particle expressions as above.
Thank you very much, I will try this method
In the event that you need to have power over the molecule scale you can change the Manual Radius parameter in Flex Settings Helper to a non-zero esteem. For this situation the programmed molecule range process sketched out above is skipped and the esteem you indicate is utilized. Littler molecule sweep esteems will produce more particles in the scene as Lucid endeavors to fill your reenacted geometry with firmly pressed particles.