Ideas for some features

While working on Synfig Studio i noticed some minor things that would make Synfig run fine with daily task:

Merge Layers: maybe is not possible combine all layers as such, maybe merging layers of the same kind is enough, merging outlines would save layers for objects like tiled floors or brick walls, also merging region blines would be fine too, out of that i see not problem with other layers, also vectorial files are imported in form of many outline layers (perhaps, this will be the mayor reason for that)

Embed/cloned/projected Layer: i don’t remember if was a dream or if i saw it included in synfig (if that’s the case i’ll look for it), but i remember a layer (not with the name i gave it) that was an alternative to ‘duplicate layer’, this layer makes a ‘phantom’ copy of a true layer and project it as the actual layer, resizing, rotating or warping layer is available, still not editable as is only a projection of on original layer (original should be edited to have both modified)

Nail Ducks: Maybe bones are good for animation software like Blender, Anime Studio or Flash CS4, Synfig does not need them at all because i figured out that maybe Synfig already have the elements for something different, still useful, here’s my full idea:

The first time i came to the help forums, was because i mistake the ‘origin’ duck with a pivot (which still a good feature, it can make resize or rotate more intuitive) I tough that linking the ‘origin’ duck with another duck, would gave as result some kind of ‘snake’ like movement:
and after moving the green shape, as result:
Of course Synfig does not work this way (yet?) and indeed i got my shapes all ruined and weird distributed.

At first i felt stupid to do such error, but later i realized that if i did it, was because synfig has the capability to do it in such simple way (still i’m not a developer so i can’t really say it is). I see how bones works on Anime Studio or any of the programs i mentioned before, if the ‘bone’ system were implemented, let’s say… in the next release, and they worked the way we are used to, it would consist on a ‘group’ layer which would have two possible options, create and edit bones and duck envelop tool (you know, assign ducks to bones) but also Synfig would face the same problems that to other programs do and perhaps that is the last thing we need.

Then i look at Synfig, this program is already working in a different way, achieving successes which no other program has even cared to look for and maybe the answer is keeping it that way; i think that a ‘Nail’ Duck may be possible, consisting in a special duck not necessarily enabled by default for new shapes or layers, but indeed included below origin duck:

ye jeje, would be nice, below the ‘Nail’ duck option, the limit for both angles (yep, much like anime studio) also the ‘screwdriver’ option for tension of movement, while values near to zero means that child object will have almost free movement, increasing values mean that ‘Nail Duck’ will put more friction on child object and in consequence, the child object will have less freedom to move. Having the Nail Duck as an standard option would have many advantages, most of the layers (except effects perhaps) even encapsulated layers have an origin, and unlike Anime Studio, having the possibility to link objects inside those encapsulated layers (group layer in AS) well, that if you don’t lock child objects in those encapsulated layers. on screen the Nail Duck would look like this:

It is supposed that the ‘Nail Duck’ is linked or other way ‘attached’ to ‘child’'s ducks, origins and/or normal ones, this way more than one child may be attached to a single parent (i drew them in a way that you can see that origin and nail can be linked).
What i don’t quite knew how to plan is how would be possible to simulate ‘muscle’ rigging without binding like in Anime Studio, and i had some more details on this idea, but no sense to mention them if the basic idea is not possible to implement XD, anyway perhaps one last thing; i have to say on this is that if in the future,if a Pivot Duck is planed, it would be better to make it optional (like other options in the panels), that way will not interfere with Nail Duck.

While i tough on all this i also looked on how to start working on this by my own, and despite i know the basis of coding, i couldn’t find a clue on how to do it =(, i at least, want to develop some plugins for Synfig, i have in mind more features that i would like to develop so that way i wouldn’t have to wait for a list of too many requests XD

well, that’s pretty much what i have in mind now, greetings

Merge layer is a good idea for speed up rendering and for boolean operations. It is a myor change though. In synfig, the layer process is like this:
One layer has sevaral parameter that define a primitive.
Once the layer knows the values of the primitive it can render it to a render area (this render area is different in each situation, i.e studio, core but the engine is the same)
Before render it retrieves the “context” of the layer where it has to be blended.
Once it has the context (the layer result that is below) it performs a blender operation with its render results and the context rendered area)
Once blended it is returned as a “new context” to whom requested that layer to be rendered.

In this way the layer stack is rendered from down to top.
If you combine several primitives in a single layer you shouldn’t allow them different blend compositions because you end doing the same job. If you work with the primitives at vector status (no pixel information, no feather, no antialiasing, no blend mode) you can proably obtain a combined vector layer information that would render on the context similar to that I’ve explained.
In summary, that change is around in the mind of some people but anyone has started it seriously.

It is a already existing feature. Just use the paste canvas layer and modify the canvas parameter to point to an external file. Alternatively you can go to Caret Menu->File->Import to import a sifz file wich will be fully incorporated in the current document.

It can be interesting but siincerely I don’t undertand it fully. Basically: which parameters (and the math formulation) determine the end position of a blinepoint?
Final position of point (x’,y’) = f((x,y), Start angle, End angle, Screwdriver, …?)

When you figure out that or a initial aproaching of that I think I can start to understand your idea. :wink:

I see, some times i forgot that we aren’t talking of raster layers, but vector layers, but i’ll check how that works for example on Inkscape, just for curiosity.

XD great! i wasn’t dreaming, i’ll check that right now

oh, sorry, perhaps i was so exited that i didn’t include those details, i call it that way (screwdriver) because it gives (or at least i can imagine) an idea of what that value does, as you adjust a screw squeezing it to keep two objects together, you can input high values (up to 1 that might be the standard) in that parameter to obtain a tight movement between the two objects and would look something like this:

also, if you use a number under 1.00… you would obtain less tension between those two planks:

respecting the angles, nothing would make me more happy than answer you in math formulation XD, but i’m more into graphics than in functions of that kind (seems an easy operation tough) anyway i’ll try to explain the basic idea the best i can, in Anime Studio, the angles of bones are determined by the direction in that the bone is pointing

in Synfig the start point (0 deg) for any of the ‘nail’ ducks would be on local ‘X’ axis of the object, so even rotating the object the start point still on ‘X’ axis despite the layer/obect is being rotated or warped

so the child object moves accordingly with it’s parent’s position/rotation…

Now that i think about… is like having a ‘rotation’ layer integrated in the parameters of every layer (effects not at all) and make that ‘rotation parameter’ able to be dynamically linked with other ducks/origins from other layers.

now that i think deeply on this… how hard is make that every Duck (vertex?) can have dynamics? i mean, it is possible to ‘link’ two ducks dynamically as in my very first example in the main topic? and adding kinetics to interaction between them? maybe i’m asking too much, i’m going to look at the devel package and start investigating all, like drawing, i didn’t born knowing what to do, but at the end i’m making my best =)

btw, sorry for bother you with all this ridiculousness, jeje but i’m sure that Synfig can take advantage of it’s own system for a ‘bone’ implementation, rater than have one like other softwares (because, if they have so, why would we need Synfig to have the same kind of bones that Anime Studio has?, an own original system would expand more the capabilities of Synfig)

I know Anime Studio very well. In fact it was the one who bit my interest in animation.

Have you seen the Cut-out tutorial. There you can move image shapes (and also is valid for any kind of vector shapes) like a puppet. I think that regardless the dynamics it is almost that you wan to have and have described.
Dynamics for individual values is very interesting and perhaps can be performed in synfig using a special valulenode convert type. I’ve done interesting things with combination of valuenodes convert types like the particles templates. It has some sort of friction but applied to a parabolic shot (air like friction). But <uh!> lot of complexity there! even I cannot rebuild the template in a new way because I get lost on the amount of convert types I did. . I prefer to harcode the dynamics in the source code than try to perform it using multiple convert types like in the particles templates.

No, no. Don’t bothering. In fact I’m a bit overwhelmed with the synfig code. Every time I enter deep on it I feel that I’m closer to understand more things. It is a pita that the bones branch was discontinued because having bones like Anime Studio is not so bad. If it works we can make something similar (the idea is/was to make it better).
I have other idea in mind to manage complex designs in a quick way (but not in the same way as bones does. It is in a primarily seed in my mind and want to mature it a bit more before to explain or start to do something. I can just say that it is like some sort of flexible envelop or a flexible skeleton using the current bezier lines itself. (I don’t want to give clues to the competitors yet) :wink:

Thanks for the post. Just writing the answer I’ve collected a pair of new and exciting ideas. :smiley:


that’s something that had happened to me always, while writing new ideas came and makes me think on things in new ways. Also the cut-out technique is very familiar to me, in all my flash animations (that was the first program of animation i meet and since then has become my favorite, downside is that there’s no version for linux and wine can only run version 8) your project seems the kind of things i’m talking about =D, it’ll be something really cool to see, i’ll be working on my animations then, there’s a lot of things to look on Synfig, specially that clone layer. thanks and greetings =)