Making Synfig easier to use brainstorming

I’ve felt trapped by my own words here: [Categorizing Parameters)
Obviously I’ve not taken care of that! :blush: :blush:

Anyway I have some things to mention:

  1. Parameters order are defined by the get_param_vocabulary function. So their position are hardcoded there.
  2. About show hide parameters I had always in mind to have to set of levels of parameters: begginers, expert. Its behavior can be: hardcoded or customized.
  3. One additional option is to hide/show (by user shortcut) animated and not animated parameters. I don’t know if it would be useful.
  4. Regarding to rows alignement the solution for that is to use hardcoded letter sizes (like Gimp does) for the whole application interface. That would avoid theme letter size variations and the misalingment of the rows between one panel and other. Alternatively the parameters panel shows one additional column with the waypoints but it hasn’t a timebar widget on it. Fussion time track panel to parameters panel looks like the best solution.


Seems a powerful filter system can achieve it. I am going to draw a mockup for this design later on.

Don’t worry, We all should have the same feeling that you are going to take more advanced/complex/powerful features implementations. :smiley:
I think this kind of issue should be started by some other developers who is not so skilled in coding for synfig, as me :mrgreen:

Hi, I’ve been Using synfig for a while, and it’s a great program, but I have a few Ideas on how it could be improved.

  I feel that while synfig has perhaps the best vector art morphing animation set up out there, its frame by frame applicability feels sub-par. I know it's possible to do it with constant way points, but it just lacks the free flow that other programs have and that most artists and animators enjoy. My suggestions is create a primitive brush tool one that's designed to paints simple vector arts that are not meant to be morphed, or at least not as freely as, blines. These would be mainly designed for simpler frame by frame purposes but would be easier to draw via mouse or tablet than the more complex bline system.
  For conveniences sake I think it be best that these paint lines would be placed in there own separate panel that contains its own special types of canvases, for the descriptions sake I'll call them drawing canvases. all the painted lines are fused into a selected drawing canvas, and each drawing canvas created also creates what could be called a drawing lock layer. The drawing lock layer would go into the regular layers panel and can be placed like any other layer. the drawings of each individual drawing canvas would render depending on where the drawing lock layer is located in the layers panel and would be effected by stretch, transform, rotate and blending effects like any other layer. Adding a zero amount boolean, designed similar to the time loop layer with a start and end time for the layers to exist and a Null Way point, which lowers the amount of any layer affected by it to zero till a new waypoint appears, would also be convenient. Since the most complex animations are typically a combination of frame by frame and tween's, this would appeal to more experienced animators out there, and the more free style drawing and simpler frame by frame would help make the transition easier for newer less experienced users. I think combining Synfigs amazing and powerful bline layer system with the more archaic, yet still somewhat valuable for creative purposes, brush systems of other vector and raster art programs would let synfig easily surpass almost everything out there. 

Also an unrelated idea, stretch and rotate parameters should exist inside the standard paste canvas param menu since they’re so commonly used.

I feel the need to re-elaborate cause I’m bad at explaining things. For one I’m not suggesting brush lines, since those are obviously a long way off for synfig. What I’m suggesting is a special layer where everything drawn on it is fused as one layer similar to Inkscape’s Union Tool, and that everything built on this layer could be erased or added onto without it being considered a new layer. That way i could have 1 or 2 layers for my eyeball instead of 13 and i could use animate editing mode to simply erase the contents of the layer and redraw as something new to make a more streamlined frame by frame process. It would also be of help if synfig improved its drawing tool to be more like inkscapes pencil tool. Thanks hope that I was clearer there.

You explained it very well in the first post. The idea is similar to this one (from feature request area):

The problem aren’t the features but the zero people working on implement them.
I’m working on add Cairo render to Synfig right now (in my few spare time) and as far as I know, nobody else is working with Synfig code in a continuous way.

Thanks for contribute to the brainstorm ideas anyway. I hope I can have more time to code and that someone else step in on Synfig coding.

I saw this in the UI Redesign - Param Window (Timetrack, Curve included) discussion

I’ve got one suggestions, because this comment reminds me that if something annoys me about Synfig, is having a houmongous ammount of layers (it at least doubles-up) because the outline layers are separated from region layers, so I came up with two possibilities to unclutter the thing:
It can act like most of vectorial software, grouping both region and outline layers in one “figure” layer (or region-outline-solid color, doesn’t matter) with the possibility of activating and deactivating the outline, solid or color layer. But in the end, even being separated layers, the GUI would show them as one layers with three elements that can be toggled.
But wait, what if I want to add some gradient between the outline and color layer?, well, that would have two possible solutions:

  • Letting the user separate the “figure” in outline and region, so he can put anything he likes between them.
  • Using segments of one unit of z-index. Something like:
    • 1 unit belongs to the whole “figure” layer.
    • Anything between 0.9999… and 0.00…1 is some point between the outline and the region.

If there’s something I can’t live without in Blender, it’s tools like “Box Selection” (hitting “B” on keyboard) and hitting “X / DEL” for quickly deleting selected. There are many more such shortcuts I use, but right now these come to mind.

Would it be possible to implement these in Synfig, for working on the Timetrack keyframes?

I’d like to suggest a change in z-position layer parameter.

I see that the z-position of a group is the high level. Inside the group, the layers are ordered with its own z-position level, but that level doesn’t escape out the group.

That could be right… but it’s not natural when you have a jerarquical character with interaction between layers of different groups.

For example… let’s check out to this examples:

Example 1:

         + background
                  + first_plane
                            - flower
                            - table
                  + middle_plane
                            - bed
                            - character
                  + background
                            - wall
                            - door
 In that setting is cool that the groups (+) have max preference in z-position. Every group belong to a z-position range.

Example 2:
        + character
               + head
                      + eyes
                            - eye_L
                            - eye_R
                      + nose
                            - nose...
                      + lips
                            - lips...
               + body
                      + body
                            - body...
                      + arms
                            - arm_L
                            - arm_R

          + ...
      This is my way of set groups. I think it's efficient and logic.

      Here there is a annoying problem. Goups don't belong to a single z-position. Eye_L and Eye_R could interact with nose but Arm_L can't do the same with head, because the z-position of body has high preference. If you change it... all the inside layers rise up or down together.

     So, I think that could be more interesting that z-position were a independent parameter of groups... so only for layers.

  Edit... :slight_smile:

 In this way... Could be possible that vertex in spline had z-position repect other vertex of the same spline? I really don't know if it is possible or not at all... but could be a really interesting drawing-animating option.

Hi…other suggestion… :slight_smile:

This would be great. Could be possible expand the visibility of the canvas window?

Put an example:

There is a lot of wated space in the canvas. I don’t ask about a full camera, but a visibility expanded like a camera will be great.

That would be certainly need! We don’t even need a full camera, because you can achieve that by just having a “Translate” layer at the very top. But to be able to use it to its fullest extent, we COULD have visibility beyond the camera too.

Agree with that. :slight_smile: It would facilitate camerawork with “fake camera” layers like translate and zoom, plus you would have the ability to use the space as some sort of visual library shelf.


for me, smell like feature request…

but wait a little, an even better idea can come from the stroms…

  • color filter to identify clearly in/off camera ?,
  • user option to adpat offcamera backcolor…?



I put here some others ideas that bring to me the use of Synfig. This time is related with waypoints and timer section. I’ll copy the text that I put incorrectly in other message.

I think that is really interesting copy&paste more than one waypoint. It is really annoying select one waypoint-goes to the correct time-paste waypoint-goes to the next waypoint-copy-goes again to the next correct time…etc.

So, if you could copy more than one waypoint and paste with the same times between them animation would be faster.

Other thing: possibility of change the color of the waypoints. When you are animating an object of a group, it is interesting see the waypoints from the group… but all the waypoints of all objects in that group are the same form! It’s very annoying must to select the object or “imagine” what waypoint is of a object from the time.

If you could change the color of the waypoints could be easy to asignate a color to an object and would be easy to see from the group view. A popup with information of what object modify that waypoint could be interesting, too… but the color would be more fast to see.

For last. I think that must be thinking in separate (or living together) the waypoints from the timer-view. Of course, that is fine, but I think that an object must have his own waypoints. This could be used to enter in the neccesary library of objects.

It’s a bit annoying that you can’t reuse animated objects between files. If an object have his own waypoint the export-import would be simple.

The waypoints of an object must be grouped. So, you could make: walking, staying, closingeyes, animation1… etc. That tags would have its own set of waypoint that you could drag and drop in the timer view at the time that you’ll want.

I think that differentiate the waypoints are really necessary.

I just had a weird idea:

Synfig has some incredibly impressive effects and distortions in its repertoire. Would it be far-fetched to use some of the existing distortions to create new kinds of “simpler” effects, like say…

…3D Cubes? Please, work with me here.

What I mean is that being able to create a 2D-looking 3D space or object. We can start off by experimenting with a 3D cube. Basically, the Cube is simply an “object” much like a Star or Circle, but with parameters to adjust its hieght, width or length, or even the entire size. And it can rotate much like a star, except in “almost” every direction (the directions it doesn’t do can easily be fixed with Transform layers).

I got this idea when I was wondering if it’s possible to use some of Synfig animations as “textures” of a side of a rotating cube – not in Blender, but Synfig itself. We have perspective morphing and Z-Depth, and it can be utilized to create such a “folder-filter”. In fact, this could be used to make simple BUILDINGS too!

And no, you don’t need to model the cube like you do in Blender. This cube is just an illusion that works really well (unless you really WANT actual 3D algorithms in Synfig, then that’s fine with me too). Think Mode-7, a clever technique used in consoles that could never support 3D (such as SNES).

Bezier splines (which Synfig uses) are affine invariant. This means that applying a transformation to the spline can be achieved by transforming just the control points, which makes it a dirt cheap operation. Guess why transforms are so pervasive and fast on SVG (ie. inkscape)? One problem: perspective transform is not an affine transform (it is projective).

To synfig it doesn’t matter, because it always transforms the pixels rather than the shapes. The downside of that method is the huge performance hit (as can be seen on Synfig).

Rational B-splines are projective invariant, which would make it cheap to apply even perspective transformations.

But why stop there? :wink: It is also possible to apply curved transformations to spline objects, and do so somewhat cheaply. So one could not only map vector graphics to a 3D cube but also to a 3D sphere or any freeform 3D spline surface for that matter.

That was the idea behind my Free-form deformation effect. There are still some problems with that technique though (ie. higher order bezier splines). I’m still investigating how to deal with that.

One thing that’s currently lacking: Multi-waypoint deleting thing. (So that we can remove all waypoints and be able to edit in non-animate mode again)

I know that “Disconnect” option works in most parameters, but doesn’t do well enough in Vertices paramaters. Try making a bline with region and outline, go ahead animate them, then Disconnect the vertices. Yeah, sometimes waypoints don’t disappear, but here, try moving the tangents and vertices in the canvas now.

…See what I mean?

Also, we might also need to figure out a way to edit in non-animating mode even though the animate-mode vectors have changed. Basically, I mean something like Blender where Object-Mode and Edit-mode stuff can… erm… probably never mind.

look like this entry … : … issues/392 ?

…wait, that’s the entry I posted! XD

How about time selection like audio editors have. Simple mockup:

Note: I also extended the parameter selection into the timetrack window. This would also be a nice feature to have.

Then the waypoints in the selected time range and selected parameter(s) can be removed via right-click > Remove waypoints.

Time selection could also be used for other things, like copying a section of animation from one time position to another (or even from one parameter to another, assuming parameter types are compatible).