Ah sorry, indeed I didn't get any notification.

Yes my solution does adress your issue as I understand it.

It will not change the size based on the *speed*, only keep the direction.

that's what the "safe_normalize(Velocity)" does, it removes the scale from the velocity vector and returns a unit-vector (length=1) which has the same direction as the velocity. (unless the velocity is zero, or extremely small, it doesn't normalize it and returns zero (that's why I used "safe_normalize" and not "normalize", which assumes the input isn't zero))

Therefore, if you set this as the stretch axis of the billboard, it will get aligned along that direction, but with a length of 1.

If you scale back that axis with whatever actual size you want (like, 0.1), you'll get a vector of length 0.1, and with the same direction as your particle is traveling.

if you set the axis scale to zero, it will multiply the stretch axis by zero, giving the billboarders an "axis" vector of value { 0, 0, 0 }, which is, by definition "no direction", so the billboarder will have to make an arbitrary choice in that case on how to billboard it, and you will have _no_ way with an axis scale of zero to tell it which direction to face.

Furthermore, if given a float2 size, the axial billboarders will ignore the 'y' component, and only use the 'x' (so yeah that's not what you'd expect).

That's why the example I gave includes the 'y' axis scale as a multiply after the normalize.

So:

- make sure you set the billboard renderer's "axisScale" to precisely 1

- In your evolve script, do:

StretchAxis = safe_normalize(Velocity) * myFloat2Size.y;

- in your billboard renderer, reference "StretchAxis" as the "AxisField"