Exponential easing/interpolation might be incorrect
Open, ConfirmedPublic


blender 2.78a
Linux bubastis 4.0.5-gentoo #1 SMP Mon Nov 16 11:48:34 EST 2015 x86_64 Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz GenuineIntel GNU/Linux

I created an fcurve with two keyframes: (1,1) and (100,1024) When I zoom in on the curve it appears to jump from (1,1) to (2,2) before resuming an exponential track. I would have assumed it didn't reach a y of 2 until keyframe 10 or 11.

In any case, this discontinuity in the first frame after the keyframe seems incorrect.


Brecht Van Lommel (brecht) triaged this task as "Confirmed" priority.



I guess this is one for @Joshua Leung (aligorith).

This is very strange...

A while back, I spent some time investigating this issue. I went and double-checked whether the implementations of the easing equations were were using were correct - I went as far as copying the code out of one of the reference implementations, making the relevant adjustments, and trying again.

While there are some slight errors I picked up this way (affecting other cases), ultimately they didn't seem to be related to what we're seeing here. The code used to calculate these curves is practically the same as is used everywhere.

The main point of different I suppose is that we stick to the 0-1 range (on both the x and y axes), and then try to scale up the y-range to accomodate the amount of change between the keyframes. My current best guess is that this is a numeric precision error/discontinuity in the exp function that might not show up if we weren't trying to scale things up by using only the 0-1 range. If anyone has any better suggestions about what we could try here, patches are welcome :)