Making Synfig easier to use brainstorming


There are lots of ways to contribute to Synfig Project apart of coding… See my signature :wink:


Dockable toolbars… Much like what GIMP plans to offer in 2.8. I don’t want a bunch of windows open, each with window decorators eating up some of my small screen.

More consistency between Inkscape and Synfig. Both are vector programs but I still know a lot less about using Synfig than I do Inkscape.

I know both points have been brought up but they were what I thought of.


quote from JohnK’s blog

This is [color=red]Non Blocking as described in UI redesign of blender 2.5 as well, I think the blender UI redesign is a really good stuff and we can take something from it for our synfig studio redesign.

I am a big fan of UI/UX. recently I spent a lot of time to lean other animation packages such toonboom animate, flipbook, tvpaint, creatoon etc…, download trial versions, read their user manuals, watch their video tutorials and movies produced by those packages, etc… I get a lot of ideas in my mind now, I hope I can write them down and post here in the near future:)


ok, here goes: my latest list [I’ve almost finished a fairly intense synfig project, so I’ve resisted doing any updates until it’s finished (I went through upgrade hell using Blender, continuously trying updates to find one where all the features I needed worked. I’m not doing that again!). So maybe some of these things are already done in '63… in which case (a) sorry and (b) hooray!]

  • disable animation of any parameter temporarily (eg like disconnect, but can can be reconnected later without any pain)

  • preview window to show position of key frames on time line

  • way to disconnect a layer and all its children and parameters in one go

  • clear separation between unlink, unconnect, unanimate(remove waypoints) – “disconnect” is too general

  • a way to redefine an exported value without having to reconnect all its clients

  • a (quick) way to “convert” at the top of the expression tree, not just at the leaves

  • automatically select most recently exported value (ready for connect)

  • hot key for duplicate and encapsulate

  • combined rotate-translate-scale layer, with ducks in all the right places!

  • get rid of either pixel units or point units (why do we have both?) or else provide a cast convert type to switch between 'em

  • convert types float <-> int automatically, or provide a cast.

  • convert more basic mathematical functions, but “mod” (proper version, not quite the same as the C “%” operator) is pretty essential.

  • a way to define a more general “local” variable, available to connect in sub-layers. This would be similar to the Duplicate layer’s Index variable.

  • an easy way to make a “good” new random seed given the old seed and a Duplicate index. Just adding the two (or a multiple of) doesn’t work well, and anyway the arithmetic saturates rather than wraps so you have to be careful. How about a “newSeed” convert type?

  • add a new command line parameter to set the first frame number output (eg file.0042.png rather than always file.0000.png)

  • spatial duplicate layer (takes sub layer and duplicates it m times in x direction, n times in y direction at a given spacing, and optionally can reflect alternate copies)

(glad to have got all that off my chest!)


Nice requests Andrewkay. I agree on many of them.

Anyway I can’t fully understand this one:

Can you explain it a bit more?


thanks Genete. I’m not really sure, because I’ve forgotten why I suggested it. (I think what I wanted is the same thing as an export variable inside an exported canvas, so maybe it’s already available.) Such a variable is like an exported variable, but visible only to lower (ie deeper nested) layers, but not to parent layers.

[Anyway, one problem (in version '62) is that if you copy some layers into a different file any export variables are still linked to the original file (maybe this is a bug?) and it would be nice if this weren’t always the case. I seem always to be building and animating characters in a scene, then I realise that I need them again in another scene (though with different animation and perhaps different articulations), and end up having to copy them and remove some of the existing exports and structures. It would be nice to have a robust way to go about this. I suppose if importing a canvas from another file was a bit more intuitive I wouldn’t get so confused. I would like to build each character in a new file, and import it to every scene I need it in, but apply different local changes (including different animation). You can safely ignore this paragraph…]



Visually simplifying motion curve. Well, sounds good.


I have a vote: Auto importing image sequence. See, being an Ubuntu user is AWESOME since you’ve got LST creating scripts to work with, but Windows and Mac folks don’t have that privilege. We need the ability to automatically import image sequence instead of relying on LST files (although, keep the latter too since it’s useful).


Why? Can’t Win and Mac users create scripts? I don’t understand.
Anyway, Autoload image sequences would be good to have.


XD Nautilus scripts are awesome, but .BAT files on windows are usually a headache. And especially when you’re working with hundreds of frames it’s tedious to manually type things down.


:open_mouth: :open_mouth:
You don’t need any batch file to create a lst file.
In the folder where the png files are just type:

C:\Myfiles> ls *.png > sample.lst

and you will have a txt file with all the file names. Just add the FPS thing and you’re done! :mrgreen:


Or possibly you may find windows may understand this better -

C:\MyFiles> dir /b *.png > sample.lst



XDDD Yes! But wouldn’t it be easier to have auto image-sequence import?


Hi genete, do you still remember what is your meaning of “quality preview system can be improved?”


New Mypaint(git version) does a good job on this, maybe we can take it as reference. I will post a screenshot later on

edit, upload mypaint screenshot


current quality system specify the quality of the render based on a number value (10 is worse and 1 is better). Many layers takes this number and refine the render based on it. For example, the Rotate layer subsample the pixels of the rotated raster area based on that value. Other example is Motion Blur Layer that render subsamples of the subject on different times based on that number too.
The problem with this is that user cannot choose to set off some individual features. For example I would like to be able to disable any blur and feather effect of any layer without cost of sacrify the Rotate subsampling.
The idea is to improve the quality system in some way that there were possible to enable/disable individual layer’s types features and allow save/load (or have already created) profiles of those combinations. It might be good also to be able to override any of the global quality settings for each individual layer.

Not a easy task and maybe out of scope of a preliminary gui re-design.


Thanks, I get it now.

I am just trying to collection all this brainstorming, and put them on our wiki later on while I have time, so that we can easily track them.


Here’s an idea. How about we remove the interpolation option from the Toolbox and place it in the Timetrack instead?


A feature that might be useful: Right-Click on a parameter and “Remove/Clear all Waypoints”. Removing individual Waypoints is a waste of time…

Also, enabling panning (not scrubbing) through Timetrack with Middle Mouse button.

EDIT: Also, a Universal Modifier Layer, that combines the power of Translate, Rotate and Zoom to keep the layer stack uncluttered?


Do right click on the parameter and select “Disconnect”. It will disconnect from the Animated Value Node and will create a Constant Value Node with the value that the Animated had at the time you clicked “Disconnect”.

It is already implemented, doesn’t work for you?