I’ve done the basic animation of my little project and now I am at the work-with-sound step. So I want to render the whole animation to mp4 and see how the sound fits. But the rendering itself is very slow, it took more than 4 hours to render the project in a low quality.
The project consists of:
Big All-in-One sif file. Around 400 KB.
Raster images with resolution 640x480 (some of them are bigger).
About 100 layers.
27 keyframes and about 4000 frames to render (showed when using CLI).
Many effects that use distortion layers with some parameters converted to ‘Random’ type.
Animation is 4m 16s long where the camera slowly travelling through the space from one object to another.
The rendering parameters are:
Bit Rate: 100
End time: 4m 12s
So the question one is: how can I optimize the sif file to make it render faster? Maybe there is a way to disable rendering some layers while they’re outside of the camera?
And question two: Is there a way to enable Synfig to use all processor cores? I tried using ‘-T 16’ switch with synfig.exe, but still only one core is used. Maybe it works better in Linux?
I hope there’s some simple tricks without a total reconstruction of my project…
In the render dialog page you can see that 1 in anti aliasing is the lowest AA quality …so you can up this value (for better quality) and also keep Quality as normal (3) to see how many time One or Two frame will take to render… and the quality you will get. (Tooltip could help here !)
Also you can try to render directly from synfig (not synfigstudio) by the CLI (command line interface)
Nop … the disable rendering option (from the 0.64.1), is not keyframable …
Nop … i don’t think so … but should be one day i hope !
PLEASE! do not increase Anti Aliasing beyond 1 unless you really need it!. It hugely increases the render time and doesn’t produce in most of the cases better anti aliasing.
Quality 3 and 1 are mostly the same in all cases, so if 3 is enough, then leave as 3.
Thanks d.j.a.y and Genete, but I know about reversed quality setting and about AA parameter, it was sort of a typo I guess. 4 hours of rendering with quality 9 and with quality 1 it would take around a day
Hmm, that seems to be exactly what I was looking for! Thanks Yoyobuae, I’ll try it and report back.
So, I was experimenting with synfig render to make it faster, but the results are not so great. I did many workarounds, and this actually frustrates me.
Anyway, if somebody did a heavy animation (big resolution, many distortions, blurs, etc.) the render will be slow (on high quality). The main problem is that synfig can only use one core of your processor.
To make it faster you can do:
As Yoyobuae said, you can hide (set amount value to zero) currently unseen layers.
For example: If you have a big scene and zoom some object in, the other ones, which is off the camera now, will still be rendered if amount value is not equal to zero.
Split your BIG animation into a set of small sif files. I don’t like this method because it makes a mess in a project, but by doing this you’ll be able to save your RAM memory.
For example: I have many png images of 1400x1050 resolution and without splitting, it eats all RAM memory.
If you have a skill in scripting (sh, batch, Perl, etc.) you can write a multicore render yourself. The logic is pretty simple. Let’s assume you have:
a. 4 cores
b. Animation of 16 seconds long
Just divide 16 by 4 and then start 4 synfig processes with --start-time and --end-time parameters. After it ends, you’ll have 4 parts of your animation that you have to merge in one file (that should be easy).
I realized multicore render in a batch script (it is the most monstrous script I’ve ever written!). If someone is interested, I can upload it somewhere. And I attached a log file from this script, so you can see how the logic works.
Oh, almost forgot the most important part… Happy New Year everybody! I hope some sheep… err person will improve synfig render in this year of the sheep! Synf.txt (9.38 KB)