Updates to Particle System (Increased Particle Size. Parameter Curves. Modulate Bounce and Wind)
tracked
Garden Mole
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
Log In
Spidey Linden
tracked
Issue tracked. We have no estimate when it may be implemented. Please see future updates here.
RestrainedRaptor Resident
I definitely want 2 and 3. There are plenty of situations where you want the bounce to be at a different height than the source.
Quistess Alpha
On large particles, perhaps the 'abuse' factor could be mitigated by requiring 'large' particles to only be viewable at a distance (some gradual alpha rather than a hard cutoff)? Or, there could be a type of particle that always has the same (small) size irrespective of distance.
Jabadahut50 Resident
Quistess Alpha id actually love this even just as an artistic tool. This could really be useful for all kinds of effects at long range without bieng too taxing to run.
Vincent Nacon
Might be better to break this up into more than one post.
I like them all and I do see some problems with Issue 1, 3 and 4.
Issue 1: Had thought about asking for this before but from what I recall at one of the Linden's open office hour meeting in the past, they capped at 4m to curb visual abuse from trolls. If we go bigger anyway, it can produce some unwanted effect when you move camera around, the particle would just sweep across everywhere to match your camera angle. It would need to move fast to avoid seeing this kind of issue, and there aren't many use cases for large particle sprite, even in modern gaming. Maybe as thunderbolt in the far distance. 🤷♂️
Issue 3: Friction almost play no effect in the bounce itself... but if we were to talk about sliding across this bounce plane, then that would make sense. However, density, gravity and factor is not needed. Particle system already have "gravity" via PSYS_SRC_ACCEL with value of -9.8 on Z axis. Bounce Factor and Bounce Restitution are basically the same thing. Density won't make sense because this bounce plane play no effect to the prim's physic, as it doesn't move at all. If you're talking about density of the particle sprite itself... it'd be better to think about drag factor instead. Whether it's moving across water or air or space, you can set the drag value for it. Offset would be useful but rotation would be good too. There are some cases where you can't rotate the prim as it's being used for something else and you don't want to create a child-prim for particle only.
Issue 4: This is the part where the drag value would come in place for the wind factor.
Garden Mole
Vincent Nacon
Thanks for the thoughts !
On (1) Yes I'd basically assumed the same historic reason for particle size, but a larger size is needed for certain cases in large scale effects, even 10m would make a big difference to making effective large scale effects that are not so granulated while avoiding excessive particle quantity
On (3) Yes 'Bounce Factor' is basically restitution, it's really the minimal option I want to see along with a bounce plane offset which would make the Bounce feature much more controllable.
The idea of the "physical" parameters is really a bit of a 'stretch' thought to question if its possible, I've mimicked ballistic boulders and similar objects before and some kind of control over the friction would have use as they can 'skid' unpleasantly, it's those kinds of things I'm thinking about really. Acceleration and angle is the main way I damp them down at the moment but it would be nice to be able to imbue those particles with properties such as a sense of 'weight', i.e. density. It's a thought for consideration, but perhaps all that's really needed is BOUNCE (restitution) and DRAG (friction) factors, along with a useful z-plane OFFSET.
(4) Yes the wind limiter is a bit like the 'drag' in avatar physics, that's a better term for it in fact !