There must be a better way to do this... (animating rain)

I am trying to animate a simple scene in which two people huddle under an umbrella - here you can see it with most of the rain already in place:

As you can see, most of the rain can simply run in a loop, as it doesn’t interact with the figures in the centre of the image. For this purpose, I have created loops of sections three raindrops wide, and offset their start times to fill the screen with seemingly random but constant rainfall.

The tricky part is the centre of the image, where the raindrops impact different parts of the umbrella or the figures depending on how they are moving. Here, I thought that I would be able to simply animate the vertical position of a looped column of rain: so if the impact is on the umbrella at 540px rather than on the ground at 0px, then I would simply add a Translate layer to the group containing a column of raindrops and animate it from 0 to 540px.
I wasn’t able to animate this however, I don’t know why… perhaps because something to do with the time loop layer? Anyway, it doesn’t matter because there is still the problem that in animating the column like that it would mess up the speed and intervals of the falling raindrops.

So what I have done for the centre part so far is to MANUALLY animate each of the raindrops and their splash. Obviously I can use ‘duplicate waypoints’ and Ctrl+Click to multi-select and move waypoints, but this is still an agonisingly slow process, with way too many clicks and repetitive actions.

Can anybody suggest a workflow improvement to help me complete the rest of the animation within a reasonable timeframe?


  • rhythm of the raindrops remains the same as in the looped sections on L & R sides of the screen (raindrop approx every 20-25 frames per column)
  • speed of each raindrop is approximately the same as all others
  • raindrops within the same column can impact at different heights, depending upon the movement of the figures & umbrella obstructing them.

The starting position of the splashes will probably still need to be manually adjusted to fit the curve of the umbrella and figures’ bodies, but I’m okay with that.

I often find myself doing this in Synfig - just struggling on with a repetitive manual method, while knowing that there must be a more efficient way to achieve the same thing.

The .sif file is too big to attach here, but can be downloaded here.

The animation looks cool, but, yeah, source file is scary…
The proper way to do this as I see it:

  1. Create a raindrop and a splash animation.
  2. Put it in a group and export its canvas (right click on canvas parameter -> Export value).
  3. Create a needed amount of simple vertical outlines. It’s a path that raindrop will follow.
  4. Create a needed amount of empty Group layers (Menu -> New layer -> Other -> Group) and connect their canvas parameters to the one you exported before.
  5. Now you have, let’s say, 10 raindrops. Connect origin of each raindrop to a different outline.
  6. Adjust length/origin of outlines.
  7. Animate origin of all raindrops, it will follow the outline its currently connected to.
    Linking to spline:

Sorry, I didn’t have time to test it, maybe I will try to make a simple sif example later…

I like too the actual result and design, but “sorry” i do not have really and idea of how you could done it easier…

Maybe the time has come for some Collision conversion in synfig ?

I used to make rain with the particle layer but that does not seem to work anymore with the latest development version of Synfig I am running.
I know it probably does not help your current project but the following example was made with only 9 frames and 1 drawing that was made in Gimp and is a noise map that actually represents the rain. It does not focus on individual drops but it gives the illusion of pooring rain by flipping the one drawing in all directions and by trucking another copy from top to bottom at the same time. You can mask anything that you don’t want to get affected by the rain. I guess you can get the same effect with spatters and inverse mask them where you want them to show up.

Sorry, I forgot to come back and reply!
Svarov, thanks for your advice - I tested your approach on a separate animation and it seemed to work, so that will be my technique next time I need to do something like this. it was a bit complicated with the project I already had, and I had to do a lot of manual tweaking anyway, so in the end I found it simpler (if a little annoying) to just do things manually.