Hey it’s me again.
This is a problem that may just as well fall under the “Animation related help” or “Feature discussions” subforums, but I’ve decided to post it here.
I’m basically trying to do a little lip-syncing, so I want to delay an animation until I need it and match its speed to how long I speak for. I’ve quickly figured out that I want to do this with the “Speed” and “Time Offset” parameters. No problems so far.
My first animation is supposed to take place at frame 12 and last for 14 frames. The constituent animation is 120 frames long, so I’ve set “Speed” to 8.6 (120/14 = 8.6). The problem comes when I change the “Time Offset” parameter to what I think it should be: -12f. I want the animation to play 12 frames later than it starts within the group layer, so logically, I want to set it to -12, right?
Nope. Synfig’s Time Offset parameter is affected first by the Speed parameter. To get the result I’m looking for, I need to set it to -102.9f (12*120/14 = 102.9).
We can look at this mathematically. My intuition says that the new frames (t) in terms of the old frames (u), the Speed (S), and the Time Offset (O) should be:
t = u/S - O
Instead, it’s:
t = (u - O)/S
Now, with Synfig being so far in development, I imagine it’s too late to change this convention and upset the animations of all users who have implemented both Speed and Time Offset, but perhaps one solution would be to introduce a Boolean parameter corresponding to which operation takes precedence. Until that time (or if no one wishes to implement that option), is there a workaround for this minor problem? I’ve converted Time Offset to a scaled parameter and exported Speed and then connected it to the scalar, but that seems inelegant-- I’d rather just use my calculator.