Smooth Looping of a Noise Gradient

Hello all,

I’m using Synfig to produce a churning cloud-type image sequence to act as an animated texture on a portal in a 3d scene (something like a stargate). The exampe file noise.sifz (noise gradient with turbulence) installed with the product formed a good starting point.

However, I want the sequence to loop from last frame to first frame, so that it does not glitch when the media player is set to loop. Since it’s noise/random number-based, it obviously doesn’t do this by default.

I see that by CONVERTing a numeric parameter to RANDOM, I can set a loop time sub parameter that appears to produce something like this effect, but there is nothing similar on the noise gradient layer itself.

What would be the best way of achieving this effect with a noise gradient?



hello, and welcome to the forum,

Maybe you can found help in the rain animation tutorial : … _Animation
a Noise Gradient Layer and Animation Speed paramater is used for the both clouds and rain simultation

Another idea for smoke simulation in synfig is to start from particle simulation (smoke effect with synfig + kdenlive - french)


Thanks for the suggestions, d.j.a.y

I did look at these tutorials, but they do not seem to cover my point. If you play either animation in a loop (last frame to first frame) there is a glitch as they are different, so there are no tweens between them (athough in the fire case, it’s somewhat concealed by the speed of the flames). Animation Speed appears to be about how “fast” the cloud movement is.

I think the effect I’m after requires that the first and last frames of the animatin, as produced by the noise gradient are the same. As mentioned, there seems to be provision for this when you CONVERT a numeric parameter to RANDOM. In that case you get a sub-parameter called LOOP TIME, and the tooltip says that it causes the random value too repeat after the specified time.

So using this, I can make a smooth loop of a curve or a spiral gradient, eg when the centre or the radius is CONVERTed to RANDOM and LOOP TIME set to the length of the animation.

But, obviously, this looks nothing like the effect I want for my stargate thingy.

I guess ultimately, I’m looking for a LOOP TIME parameter on the Noise Gradient itself. In the absence of that, I’ve been looking for something that achieves the same effect.



To make something loop without a jump you need to make it symmetrical in time. To achieve this for gradients (by default non symmetrical in time when animated) you have to do this:

  1. Create an animated gradient
  2. Group it.
  3. Duplicate the group layer
  4. To one of the two groups modify the TimeOffset parameter to convert it to linear:
    Rate = -2s (this will play the gradient backwards)
    Offset = Half the length of the loop, I selected 4 seconds
  5. Then compose that gradient grouped (or the other) onto the other gradient with a blend method that shows the two gradients at the same time (I used multiply blend method)
  6. On top of them add a Time Loop layer with the default values and the Duration = the Offset of the linear conversion.

Checkout the result and tell me if this was what you need. It looks a little odd, since it is symmetrical.
repeated gradient.sifz (796 Bytes)

It is a little boring but loops :slight_smile:

Thanks for that, Genete.

I’ve applied you suggestions to my test piece and it does loop smoothly, as you said.

However, the looping produces a clear forward-halt-backward behaviour, see the 8s example. Think this is less obvious in your animation, as it runs faster. I’m after slow roiling/churning effect such as on the Nasa films of the surface of the sun, or other slowed-down plasma clouds.

Of course, these kind of films are rolling constantly forward in time, whereas I’m trying to simulate this with a loop!

Could you explain a bit about relationship between the various parameters, as when I tried to change them, I broke the smooth looping:

  1. Why is the rate -2s? That seems to me to “run time backwards” for one gradient at double speed, which would destroy the symmetry.

  2. There seems to be a forward-halt-backward sequence every two seconds. Can I double that? (It seemed to break the symmetry when I doubled the values).

  3. Other cycles in the target animation that I want to drop this into, cycle in about 7.1 seconds. (Very annoying, but a given at this point). Can I express the gradient parameters in sub second increments eg seconds and frames?

  4. So is this generating pairs of gradients corresponding to (0 & 4s), (1 & 3s), (2 and 2s) (3 & 1s) (4 & 0s). Not clear on this, because of the rate = -2 mentioned above.

I assume you can’t just close the loop from the last frame to the first frame because the gradient has “random walked” too far from the first frame and it’s likely to be too big a jump. Hence the method you suggest, which basically retraces each step. Is that right?

Here’s to continuing success with the Synfig project :slight_smile: