I have my mind bowling due to to something that I’ve released recently.
I’ve been asked to implement one feature that would make happy to many users:
“Be able to recenter the origin of the shape layer to where the user wants without move the shape itself”
This has been discussed with the two persons that requested me that and we get stuck on the problem that using the mouse and the Transform tool, we would need one additional key modifier to take account to do that and add more keyboard modifiers to the Transform tool is not a good idea I think.
In any case, the problem of “re-center the origin” that’s how I call the feature needs to solve the problem of the case that the origin and the shape vertexes were animated value nodes. I have one solution for that. In case it is found an animated value node, then do not add one more waypoint, but modify all the values of the waypoints by one offset given by the translation of the origin form the original position to the final position. The offset for the vertexes would be the same value but negative. This way the origin re-center is achieved.
Spinning on that idea of offset the waypoint’s values then it came to my mind if that could be a mode itself and not a consequence of an action. Then it was born the “Relative Animation” concept.
It is not a new thing (it is available for example in Anime Studio) but here we can push that a little more away.
Let me explain: in Synfig, the parameters can be:
constant or animated
Animated value are just a set of waypoints for a parameter that are evaluable at a certain time.
But a waypoint is composed by:
a) a time
b) a value node that holds the value of the parameter a that time
c) two in/out interpolation type values
So each waypoint has one value inside “and that value can be animates as well” because it is a value node!!!
Usually (always until now) those values inside the waypoint are constant but I want to make them animated if the user wants so there are different cases:
Parameter is constant and you are in non animation mode and in relative animation. If you modify the parameter it would act as usual. Modify a Constant in non animation mode is immune to relative or not relative animation
Parameter is constant and you’re in animation mode. If you’re in relative animation, it won’t produce a waypoint, because relative animation doesn’t produce waypoints in parameters. So it would act like if you’re in non animation mode.
Parameter is animated. Here comes the magic. If you’re not in animation mode and try to modify the animated parameter the program complains, telling you that he cannot modify the animated other than in animation mode, but if you’re in relative animation, it would offset the waypoints instead. What would happen if you modify an animated parameter in animation mode with relative animation enabled? it would animate the offset of the waypoints and won’t add a new waypoint on the animated.
The behavior can be established to not need one additional mode and to not be possible to animate the waypoint offset (because it would need one new user interface to edit those offsets). Also, the relative animation can be act only in non animation mode, so it is simpler for the user for the moment. This will imply that waypoint’s value nodes will be always constant, but can be offset by the user when he wants.
Additionally, maybe, I have to research it, we can check if there are waypoints selected and apply the offset to those waypoints only. Currently I don’t know if the waypoints selection can be accessed easily.
In any case it won’t solve the re-center of the origin completely because it would need two movements from the user like now: select the vertexes and move around the origin, then move the origin to where the vertexes where. But would solve the problem when the vertexes are animated
To solve the problem of the need of a new key modifier to do the origin re-center, I have had another idea.
If the user moves the origin in relative animation mode, then when the user releases the mouse, a pop up menu would offer two options:
Normal relative animation (origin is offset)
Extra relative animation (the objects that are relative to the origin are offset the same value but in contrary direction)
If the user clicks outside the pop up menu the first option is used
It would happen only for layer parameters with a name of origin
This idea can be independent of the relative animation I think because it would be implemented before and independent of the relative animation mode.
So the feature description is:
“when user moves with the mouse a origin layer parameter it is offered a pop up menu to make it a relative offset of the shape to the origin movement”
Alright, I’ve put it on a post, now questions and additional ideas.