I would rather use blender with a 2d render engine and add motion blur with making a oval array of the trees and keyframing them to move circularly while also decreasing and increasing size at certain points. It is just way easier for me, drag and drop the png, and animate it. I am just giving my idea to this, not a solution. And with some editing magic, it’s basically done within five minutes.
I mean I export layers separately many time or group of layers, I have more control over the post production later. It just makes my work easier.
This can be done with 1 tree object that is duplicated many times…
The tree starts in the back, behind the horizon. Set the z index so that the tree is behind the ground layer. The treetop is just below the horizon. The tree gradually moves upward and size increases. After the bottom of the tree trunk is near the horizon, the z index changes (use constant) so that the tree is now in the foreground. Tree continues to grow in size/scale, and shifts to the bottom left of the canvas until it moves out of sight. Group all of that together, and set a time loop.
Duplicate the whole group object. In the new group’s time loop, use the 'local time’s property to offset the loop’s start time. This will make the 2nd tree object start before, or after the first tree object.
Repeat until you have enough trees.
To have a variety of trees, go back into the duplicated groups and change the colors and shapes slightly.
Yeh, it’s basically the same steps as synfig btw, except the loop. Anyways, I already said it’s my way of doing it, just requires to be looped later.