Simple vector morphing from frames & without waypoints


#1

Since i’m reworking Synfig time & animation subsystem, i’m getting rid of current hard-coded & hard-to-edit interpolation via waypoints and replacing it with lightweight valuenodes. Interpolation of simple values (plain numbers, angles, times) will be done via curves (github.com/synfig/synfig/issues/295 - mostly works already, except for fancy ui and error-checking). However, that can’t be applied directly to shapes, so now i’m researching how to do it and one way is to use existing weighted average node. It is not practical to do so at the moment (as there is no ui to automate valuenode connecting) and it generally doesn’t solve a problem of morphing shapes with different vertex amount, but i think it might be interesting to see that morphing from two individually editable shapes is possible even now.

First .sif (marked as “linear”) should be compatible with 1.2.0, but it lacks curve interpolation (it’s replaced by linear value node, but you can animate weight_a exported value node by hand instead). Second one requires timecurve value node, which is still in development and can be built from here: github.com/caryoscelus/synfig/tree/curve_node

Click on .gif to see animation.
morphin.gif

I’ve also recorded screencast demo of playing with it in Synfig (forum doesn’t accept it as attachment, sadly). github.com/caryoscelus/synfig-d … -fast.webm

You can also get files here: github.com/caryoscelus/synfig-d … 30-morphin
test-40-weighted-morphing-fix.sif (48.9 KB)
test-40-weighted-morphing-linear-fix.sif (39.7 KB)


#2

Hi!
Shape tweening between two different layers. Very interesting. Do key frames also get affected in the rework?
Greetz!


#3

Technically it’s not between two layers, but between two curves (the rest of layer parameters are not connected or interpolated in this example).

As for “key frames” (in synfig jargon), first of all i’m still not sure if they are universally useful concept or just a quick hack instead of a better solution. So i’m not touching them for now and will see whether other features (e.g. actions) will make them obsolete or not. But in any case, they are currently pretty isolated concept, so restoring them won’t be too hard if they stop working and yet are required.

Hmm, i should probably start a couple of brainstorm threads oriented on specific features. I’m getting close to the point where individual bits are working, but should be organized into a solid architecture.