Move Origin Duck relative to object?

Hi folks,

I’ve been attempting to use Synfig to do some inbetweening for some video game sprites, and while I’m coming to grips with most of it the documentation is a little sparse (understandably!). One of the biggest questions I have is, can I move an origin duck relative to objects/layers?

This problem came up because I’m working from an existing spritesheet (exported from Inkscape) where the frames are placed side-by-side:

I imported it fine into Synfig and encapsulated each frame and exported them just fine, but due to the nature of the original sheet, each of them still has an origin duck based on its original position on the big sheet, like this final frame below:

I know I can reposition the elements of each frame by encapsulating each layer within the sub-canvas and then using that origin duck to move them, but this feels messy (since the origin duck winds up hanging off the side of the page for most of them) and more importantly, it seems to mess with the result when I export the animation, with the image rendering halfway off the image area. Also, since the nature of the different size/real size/image area properties is quite confusing, it seems like it would be way easier to scale and position everything correctly if the frames were centred properly on their own origin ducks, to begin with.

Is this something I can do? Or are my only options to either stick with the messy double-encapsulation, or to reconfigure the whole spritesheet in Inkscape to be layers positioned on top of one another?

Thanks in advance for any help - I really appreciate you taking the time to read!

No, that hasn’t been implemented yet. And it has been many times asked. There is the inverse option when the layers are not animated. You can move all the ducks from the layers to center them relative to the current origin.

You can do two kinds of walk animation:

  1. Walk in place
  2. Walk along canvas

Depending on what you want to do, you need to setup different things.

If I understood correctly, your sprites are stills imported from Inkscape, so all they are independent objects that you want to use as footage, right?

So if depending on your walk style you would like to have the sprites correctly placed on the canvas to use them as reference for your animation.

For both walk styles you have to first link all the Origin ducks of the sprites. Second you should draw a ground line for reference for the feets. It must be outside any influence of the sprites canvases.
Then depending on the walk style you have to reposition each sprite relative to the first sprite moving the layer’s ducks relative to the origin duck (already linked).
If the walk is along the canvas, you have to reposition each sprite taking in consideration, each time, the foot that is in contact with the ground, making it coincide from one sprite to other (when applicable, because sometimes both foots are in the air.
If the walk is in place, you have to focus to the x position of the hip of the character. The hip should only go up and down in a “normal” walk cycle. So then you have to define the hip position on each sprite (maybe with a small red circle) and make its x position coincide for each sprite when you translate it. Also the y position of the sprite is determined by the ground position.
In case that the walk cycle were not normal (the body balances forward and backward meanwhile walking) then the walk in place is a little more complicated. In that case I would use as reference the half horizontal distance of the feet separation (that normally coincides with the x position of the hip)

If it helped, please help others by doing a tutorial for this task. This way you’ll enter in the glory of project contribution :wink:

-G