Suggestions to address four particular issues I have repeatedly come up against during extensive work with this system over many years.
I am aware of another extensive Canny concerning improvements to the Particle System and support those too, so I have tried not to duplicate too much of that here.
ISSUE 1 : Increase in maximum particle size
Currently this is 4 metres, but if large scale world effects such as volcano exhaust or storm formations are needed, this creates unpleasant granulated effects with excessive particle count (see the ocean storm in the Dannielles region for just one example, or many of SL's volcanoes)
I would like to see a maximum size of perhaps 20 metres for PSYS_PART_START_SCALE and PSYS_PART_END_SCALE.
------------------------------------------
ISSUE 2 : A means of better controlling certain particle parameters between start and endpoint to adjust behaviour during their lifetime.
This would avoid situations when, for example, you need particles invisible at both ends of their existence and have to 'fudge' things with alpha and scale or dropping sprites into the ground
One idea is additional tracking points along the lifetime curve of certain parameters between START and END. At the very least a MID point so particle parameters can be zero at both beginning and end with a peak in the middle for the following :
PSYS_PART_MID_ALPHA
PSYS_PART_MID_SCALE
PSYS_PART_MID_SPEED
PSYS_PART_MID_GLOW
As an extension, perhaps also a means of setting a function curve flag to define the motion over the parameters lifetime so you can tailor the way the parameter behaves between START and END points with a maximum excursion at MID for appropriate functions such as parabolic curves
PSYS_SRC_PART_FUNC_LINEAR_MASK; (what we have now in effect )
PSYS_SRC_PART_FUNC_LOGARITHMIC_MASK; (what we have now but log curve )
PSYS_SRC_PART_FUNC_TRIANGLE_MASK; ( linear up/down or down/up )
PSYS_SRC_PART_FUNC_QUADRATIC_MASK; ( parabolic curve up/down or down/up)
PSYS_SRC_PART_FUNC_GAUSSIAN_MASK; ( bell curve up/down or down/up
PSYS_SRC_PART_FUNC_EXPONENTIAL_MASK; ( sharp increase, or decrease curve )
(not an exhaustive list)
------------------------------------------
ISSUE 3 : Modulate influence and position of particle bounce
Bounce is very situational in its usage, it can only really be influenced indirectly by velocity, acceleration and emission angles, and is limited by having a fixed bounce plane at the emitter altitude
Would like to see :
PSYS_PART_BOUNCE_OFFSET : a FLOAT value for offset in z-axis relative to the emitter defining the plane where particles will bounce
PSYS_PART_BOUNCE_FACTOR : which is a simple FLOAT value 0 to 1 to influence the degree of bounciness (restitution) as presently applied on impact
Or perhaps more interestingly, rather than a simple bounce factor the particle could have a full set of FLOAT value physical parameters like a prim, but I am not sure how the system treats them to allow this.
PSYS_PART_BOUNCE_GRAVITY
PSYS_PART_BOUNCE_FRICTION
PSYS_PART_BOUNCE_DENSITY
PSYS_PART_BOUNCE_RESTITUTION
------------------------------------------
ISSUE 4 : Modulate influence of SL wind
Wind on/off is rather unsatisfactory as it stands because in extreme cases it can unexpectedly create effects like smoke particles streaming crazily out in a horizontal line, dependent on SL wind. It would be desirable to have a limiting parameter to control the magnitude of influence of SL wind such as :
PSYS_PART_WIND_FACTOR where the parameter is a FLOAT value defining amount of influence of SL wind on a scale between 0 and 1