I've come up with a few interesting ideas regarding particle generators that I'd like to see implimented in SL. Now, before I start, I'll add the disclaimer here: I know that many of these ideas are not feasable as they are, either because they are overly complex, would put too much demand on the processor, or just because it would prove to be too much of a hassle to impliment. Nonetheless, I feel they're interesting ideas, and perhaps worthy of expounding on to see if anyone has input on how they might be evolved into something workable.
Okay. Enough disclaimer -- onto the ideas.
I'll confess I've only worked with the particle scripts for a short while, but it seems to me that to impliment a few of "special effects" I'm working on would be extremely cumbersome, if not impossible to do w/ teh current particle system, such as making dust motes that float across an otherwise invisible cone of light filtering into the room from a cloudy window (invisible because the cone would not reflect on anything, rather, it would descend into perhaps a long mine shaft off into infinity, or some such). This kind of reaosning has led me to wonder if a few things might not be possible with the right script.
Idea 1:
It's rather limiting that the particles can only be interpolated from one thing to one other thing -- for instance, a single alpha setting to only one other. Why not more? I'm sure that someone has thought of that before, but regardless, it would be very nice to be able to change the color and alpha and size and such of the particle more than once as it goes through it's path. Plus, it would mean people don't have to make as many particle emmiters to get the same effect. For instance, people that make "rainbows," (and I've seen millions of those) currently have to make multiple particle emitters -- one for each color -- in order to achieve the effect. With multilpe interpolation settings, that -- and many other things - would be easier.
The syntax I suggest for that would be as follows:
list SomeParticleParams=[<all the previous parameters>
PHYS_PART_COLOR, <vector color, 1st>, <float duration, 1st>, <vector color, 2nd>, <float duration, 2nd>, ... <vector color, nth>, <float, duration, nth>,
PHYS_PART_ALPHA, <float alpha, 1st>, <float duration, 1st>, <float alpha, 2nd>, <float duration, 2nd>, ... <float alpha, nth>, <float, duration, nth>,
<all the rest of the parameters>];
Or at least, something to that effect. Regardless, the syntax is simple.
Idea 2:
There need to be more spawning patterns. I have an idea that will create a huge number of spawning patterns in a way that's already implimented by the system. The first is a prim surface -- a prim with all the standard properties of a normal prim. It's just that the particles begin somewhere on the prim, and then go on about their merry way. This would be very nice for making some more phantom-esque objects and such, and for a number of other highly specific uses. Regardless, you could simply tack on a primitive properties list at the end of the particle generator and source lists, and have it use that as data. The second type of spawning pattern I'd like to see is having the particles spawn only within the volume of a prim with the same considerations as before. It might behove whoever impliments this to have a flag put at the end of the particle source list to say which kind of prim-based spawn pattern they wanted.
A suggested syntax would be like this:
RawParticleEffectsList = [<a bunch of particle effects>];
SpawningPrimPropertiesList = [<a bunch of primitive properties>];
SpawningPrimTypeList = [PHYS_SRC_PRIMTYPE PHYS_SRC_PRIM_SURFACE];
TotalParticleEffectsList = RawParticleEffectsList + SpawningPrimPropertiesList + SpawningPrimTypeList];
llParticleSystem(TotalParticleEffectsList);
That's the general idea. The enumeration of the SpawningPrimTypeList is completely arbitrary, obviously. As long as it's able to communicate to the engine what the prim properties indicate and such, it's all good.
Now, at first glance, it would seem that you truly would only need position, rotation, and geometry of the spawning prim in order to get the job done. But, I have one use for the texture applied to the prim... and this is where the idea gets *very* complicated to impliment. I recognize that what I am about to suggest is probably far to complext to impliment, but ... it would be neat if it was.
Anyhow, the idea is thus: you have a texture that has color data on it. You can then use that color data as a probability field to say where particles are more and less likely to spawn... for instance, one idea (and it's just one) would be to use the blue color channel of the texture as a measure of likelyness. Darker areas would be more likely than lighter areas. And, before you finished the texture, you would be able to apply a solid alpha channel to it that makes it *look* invisible to a viewer, but still retain color data in terms of what the engine is thinking about.Being a math-y kinda guy, I know that'd be nigh on impossible. Nonetheless, I felt it needed to be said to at least be suggested.
I apologize ahead of time to the helpstaff if that idea ever gets implimented. *grin*As a note. I purposefully did *NOT* use the prim data of the object containing the particle script for a number of reasons. The first is simply that you may not want to use it, and it would be restricting to impose such a condition. Second, as I will mention shortly, there are a few other ways one can use prim data in the particle scripting ideas. I suppose, however, that it would be useful to make the script *capable* of using the geomoetry of the prim it's set in. Regardless, that's a fine detail of the bigger picture.
Idea 3:
This idea is perhaps the least-well thought out of them all, and has the most options. It basically is with regards to governing the path of the particle once spawned. Essentially, I'd like to be able to do a number of things. One, I would like to be able to bind the particle into the confines of (a) prim(s) -- for example, have the particles spawn however, but not be able to travel outside of the box. The primitive paramters would be pumped into thet particle list just as the previous prim data was, though with flags and such to make sure things are kept track of properly. Also, having the ability to control what happens to the particle once it hits the boundary (does it bounce? Does it simply die? does it stick and live out the rest of it's seconds in that one fixed spot?) would be nice, especially if you could control them based on which way they were moving in comparison to the normal of the survace it touched (A possible scneario would be: a particle would spawn at the center of two boxes, one bigger than the other, go straight up, pass through the inner box's boundary just fine when it's going up, but reflect off the outer box, down against the inner box -- and be reflected back up, because the inner box was set to let things pass through on the way out but not go back in). All of the various prims would have to be organized w/ the script with appropriate enumerated variables.
Another complimentary idea would be the ability to effect force fields (like, an electric field) or some such on them. Now, I'll confess a bit of ignorance -- I don't know exactly what one can do with "wind" and having the particles move around in sympathy to it. But, I don't think it'd be able to pull off what I have in mind. Basically, just some way of controlling the path of the particle, either by a function or by putting it in a vector field. I have no idea how to do that, but I know that it'd be REMARKABLY complicated. So, I'm not too hopeful for this idea. I know that you can apply an acceleration to the thing, but ... oftentimes, that's just not good enough. I'd like some angular velocity and torques and other stuffs. Regardless, it's just an idea.
The last idea I'll inflict is a simple one: targets. It'd be nice to have particles that dont' travel for the *center* of a target, rather, having it travel to perhaps the target's surface or some such would be nice.
Okay. I'm really really tired at this point. Anyone reading this probably noticed a bit of slippage in terms of coherency near the end there -- that's because I'm beat. If anyone read my thesis of a post, well, feel free to comment. And hey, Lindens? Feel free to implment!

Be well folks.
-- "I have never understood the desire to not understand."
