Particle System Entity Fixes


Hey everyone,

Beta release 70 will contain some fixes to Particle System Entities. There are no real new features, but many of the properties of particle systems were so broken that the fixes could result in visual changes. The changes are as follows:

  • the alphaSpread, radiusSpread, and colorSpread properties now work. This means that if you had them set as anything other than 0, your particle systems were rendering incorrectly, but will now appear as intended.
  • the speedSpread property now works on point emitters
  • the start/finish properties now work. Under certain circumstances, the colorStart, colorFinish, alphaStart, alphaFinish, radiusStart, and radiusFinish properties wouldn’t work properly or would appear different to other users. The intended behavior was that if these properties weren’t set, they would be equal to the corresponding middle value (color, alpha, particleRadius).

Basically, all properties should be used correctly now. We apologize if this affects your content in any way. Let us know if you have any questions!

Beta Release 70

Have they fixed the import/export errors, one big problem was exporting particles via json file completely broke it, this resulted is the inability to properly transfer or set to marketplace any particles.
Especially the “will follow” parameter did not export.

(glad to see the particles finally getting some love)


Import/export should be fixed! I believe the start/finish properties wouldn’t transfer correctly, as well as the emitterShouldTrail property. Let me know if you find any remaining issues!


Thanks for this work. I can uncomment some of my controls :slight_smile:
If you ever have a wishlist for new features. adding a rotation and rotation velocity setting would be cool.
also a flip setting and flip velocity


Yep, rotation is on my todo list. What’s flip?


Flip would be making the texture thiner in one axis untill its a line and then inverting it so its backwards as it gets thicker again,. Gives the illusion that a 2d texture is rotating in Z axis (3d).

Another feature would be to make the textures setting an array with multiple textures that can either be cycled in order or radnomly.


Would be nice to be able to support dark particles. For example, we can’t do dark smoke.


Sure! I’ll take note of these.


This is a little more difficult. Our particles use additive blending (which is why black is invisible). Doing proper blending requires sorting all the particles to render them in the right order, which is expensive. But we’re aware that this is desirable, and we’ll work on it.


Another thing while your working on rotation. Currently the particles rotate with your head, so like my lightning particle effect looks good in desktop mode. But in VR mode, when you turn your head sideways, the particles follow. so the lighning is going sideways as well.


I am a noob and am researching the particle capabilities of HiFi and wondered if it was possible to create an avatar that is made only from particles that follow an invisible body?


When you’re done with the particle fixes you might also take a look at the spotlight code
and add cookies w/ rotation support so we can have different shaped spotlights,


Spotlight s with image projectors for both still images and video


Also a strobe mode for both particles and spotlights.
With Frequency, duty cycle. or ranom modes.


Spotlight improvements are also on our todo list :slight_smile:


I think you could approximate this pretty well by creating an invisible avatar and parenting particle entities to a few joints on yourself. You can play around with the radius and the emit directions and enable “Emitter should trail.” Other folks on here might have better suggestions!


I think there is still a bug with the Color transition.
If I do a transition:
StartColor: Yellow (255,255,0)
Color: Orange (255,128,0)
Color Spread: Orange (255,128,0)
FInishColor: Red (255.0.0)

I get some green particles !


I don’t know what algo is used to make the color transition, but something is wrong.

If I had to code such a transition, I would have converted the color in HSL (Hue - Saturation - Lightness) to do the transition on the Hue circle using the shortest distance between the 2 colors.
Is that what you did ?

(Note that I can’t fix a broken product currently sold on the marketplace because of that bug.)


The color spread behaves like the other spreads, in that the value will range from value - spread to value + spread. In the case of color, this is applied in each color channel. In other words, in your case, the spread of 255 in the red channel is only acting negatively.

I agree that this isn’t very intuitive. We discussed possible alternatives, but for this first pass, we just tried to make the existing properties functional again. We can continue to iterate on how the properties are used so that they’re easier to use!

As for the transition algo, we interpolate between start, middle, and end, along a bezier curve. The spread is added/subtracted as a constant offset.


If you go by RGB chanel, this is not only not intuitive, it’s probably unable to do the correct transition.

The color transition needs to be the shortest, otherwise, how do you want we can have a minimum of control of an effect. Depending the color it will go one direction or the other, and probably not the one you wanted in 50% of the time.

If people want to do a long transition… well, we have 3 transitions to achieve it (I think it will be good).

To do that you need to do the transition by HSL channel
but with the Hue taken as circular (choosing the shortest of the 2 path)


I can see why Alezia’s example would be green. Red start color + average spread would be 128 and Green start color + average spread would be 192.

But, it is not intuitive… your spread really means spread -128 + start color truncated to 8 bits.

Another thing is, once you add start and finish colors, does the color value mean anything at all?

or… is it late and time for me to sleep.

(edited to add:)

I think it is usable as it is. maybe just a change in documentation or menu description.