Setting Initial Color over emitter duration does not work

I am trying to set the initial alpha of my particles over the duration of my emitter. This seems to be set to use absolute time (0 for 0 sec, 1 for 1 sec, 3 for 3 sec…) but if I try to set it at a time above 1 second, the output does not change. Any in values above 1 are never reached.

This seems like a bug…

Hello Surs, it works slighly different.
if your duration is 3 seconds, 0 is 0, but 1 will be 3 seconds.

I understand that this is how it is supposed to work and how it has worked in the past… but that does not work either.

Been using it all day, can you show me both the material setup and the color over life setup?

I do not want to set the color over life of the particle, I want to set the initial color of each particle spawned to change over the duration of the emitter.
Essentially, I want the particles spawned at the end of the emitter duration (3.3 sec) to start less opaque than those spawned at the beginning of the emitter duration.

I have never tried this, but it sounds like a cool idea…I am assuming you are setting the alpha control to a constantCurve and this is not working for you?

Not sure if initColor is defined when the emitter is created, and applied to all particles subsequently spawned from that emitter, or if it is a value that can update over emitter duration.

This does indeed sound like a bug. I’ll take a quick look at this on Monday.

Yeah I’ve done this in previous editions of both UE3 and 4 for years, so I know it is supposed to work.

Any movement on this?

I too am interested in this problem, ran into the same behavior. Using 4.8.3

I have just tested it and the behavior is the same in 4.9.0
Test case:

  • Create a particle system whose duration is 3 seconds.
  • Assign it an easy to see material that you can change the color of.
  • Remove the color over life node and use an “initial color” node.
  • Set the start color to a distribution vector constant curve.
  • Add three points to the curve
  • At in value 0.0, set the color to green
  • At in value 0.9, set the color to green
  • At in value 1.0, set the color to red
  • Observe that the particles are green for 0.9 seconds, then new particles are red for the next two seconds until the emitter completes its emission.
  • Set the second point’s in value to 1.9
  • Set the third point’s in value to 2.0
  • Observe that the particles are green for the entire 3 seconds of the emitter.

Expected Result: Either that the in values were mapped to the duration of the emitter (not, as it appears, time in seconds), or that the in values would allow for inputs beyond 1.0 for time.

I have the same issue, My emitter is a sphere who get bigger over time (Emitter Duration 25 sec) it was working perfectly on 4.7.
But since the 4.8 the sphere start to grow, and after 1 sec it stop its progression… I was waiting for the 4.9, hoping it will resolve the bug, but the problem still occurs.

A little description :

Point 1 : In Val = 0 / Out Val = 1

Point 2 : In Val = 25 / Out Val = 4000

I tried to create a new emitter, i was thinking the conversion 4.7 → 4.8 maybe corrupt the emitter, but no.

So if someone has a solution, or if you can confirm it’s a bug ! Thanks :slight_smile: (Sorry for my English)

I’d expect then that he might have the same problem as I reference above: his sphere will grow to 4000 units in 1 second, rather than 25 seconds.

In your case Point 2’s In Value must be 1.

, I can confirm that the behavior works properly in 4.7.6 and breaks in 4.8+
This is definitely a bug.

Note: in response to 's comment below, I installed 4.7.6. I find that in 4.7.6. this behavior works as expected. I can set in values greater than 1 second and the particles change color.

Ok thanks for the confirmation !! Now i know it’s not only me !

Exactly like Lanethan said, the Sphere grow to 4000 in 1 second if “In Value” is 1 !
An example to be more precise :

If In Value is 0,5 : it will grow to 4000 in 0,5 sec.

If In Value is 1 : it will grow to 4000 in 1 sec

If In Value is 2 : it will grow to 2000 in 1 sec and stop its progression

If In Value is 20 : It will grow to 200 in 1 sec and stop its progression

This issue seems to be present in all of the “Initial” type modules. Behavior isn’t being calculated past 1 second. I would very much like this to be fixed. One work around I have found is to duplicated the emitter and delay it for 1 second and to pick up where the last emitter left off (kill the first emitter after it’s first second). This isn’t the cleanest of solutions for any effect that lasts for a significant amount of time. Plus, if you don’t check “Kill on complete”, your draw calls can start to add up.