diff options
author | Joshua Leung <aligorith@gmail.com> | 2014-06-19 17:28:45 +0400 |
---|---|---|
committer | Joshua Leung <aligorith@gmail.com> | 2014-06-19 17:34:35 +0400 |
commit | 179e7eaf394481c10b66b4db762e8189aa5a0a2a (patch) | |
tree | 843c2d2b1b563238f94affba2c5faf447dfc1530 /source/blender/editors/animation | |
parent | f161695150bf3bfb4303b093838a628eeb40f5da (diff) |
Bugfix for Elastic and Back easing types
** TO BE PORTED BACK TO 2.71 **
As pointed out by Thomas Beck (plasmasolutions), the current behaviour and/or
default values for their parameters didn't quite make sense:
1) Back Easing - The old default value of 0.0 results in some overshoot being applied,
while trying to tweak it up or down resulted in some odd jumps and discontinities.
I've ended up removing some code here which forcibly using a "back" value of 1.7
when users wanted 0.0 instead. There doesn't seem to be any good reason for this.
To ensure that there is still an effect initially, keyframes now get created
with back set to 1.7
2) Elastic Easing - The old default settings of <amplitude = 0, period = 0> resulted
in a curve without any elastic bounce, which wasn't very useful for motion graphics.
Now, default values of amplitude = 0.8 and period = 4.1 get set. These were hand picked
by Thomas to work well when the duration of the motion is 10 frames long (i.e. the
typical length of such effects when doing motion graphics).
Diffstat (limited to 'source/blender/editors/animation')
-rw-r--r-- | source/blender/editors/animation/keyframing.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index c3573a37455..878c9193b23 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -420,6 +420,17 @@ int insert_vert_fcurve(FCurve *fcu, float x, float y, short flag) beztr.ipo = BEZT_IPO_LIN; } + /* set default values for "easing" interpolation mode settings + * NOTE: Even if these modes aren't currently used, if users switch + * to these later, we want these to work in a sane way out of + * the box. + */ + beztr.back = 1.70158f; /* "back" easing - this value used to be used when overshoot=0, but that */ + /* introduced discontinuities in how the param worked */ + + beztr.amplitude = 0.8f; /* "elastic" easing - values here were hand-optimised for a default duration of */ + beztr.period = 4.1f; /* ~10 frames (typical mograph motion length) */ + /* add temp beztriple to keyframes */ a = insert_bezt_fcurve(fcu, &beztr, flag); |