diff options
author | Christoph Lendenfeld <chris.lend@gmx.at> | 2021-12-25 22:58:47 +0300 |
---|---|---|
committer | Christoph Lendenfeld <chris.lend@gmx.at> | 2021-12-25 22:58:47 +0300 |
commit | f7ddb1ed8a2a646e3d04d5e2e46929673084149c (patch) | |
tree | d84ae6df91d7935a61c3737605820382dd8d9929 /source/blender/editors/animation/keyframes_general.c | |
parent | fbd01624e3feb10add9d04672a3db0f52817423a (diff) |
Breakdown Implementation
This patch adds the breakdown (or tween) functionality to the graph editor.
The factor defines the linear interpolation from left key to right key.
Reviewed by: Sybren A. Stüvel
Differential Revision: https://developer.blender.org/D9375
Ref: D9375
Diffstat (limited to 'source/blender/editors/animation/keyframes_general.c')
-rw-r--r-- | source/blender/editors/animation/keyframes_general.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/source/blender/editors/animation/keyframes_general.c b/source/blender/editors/animation/keyframes_general.c index 3c2e66d9367..8aac1e9b779 100644 --- a/source/blender/editors/animation/keyframes_general.c +++ b/source/blender/editors/animation/keyframes_general.c @@ -400,6 +400,18 @@ void blend_to_neighbor_fcurve_segment(FCurve *fcu, FCurveSegment *segment, const /* ---------------- */ +void breakdown_fcurve_segment(FCurve *fcu, FCurveSegment *segment, const float factor) +{ + BezTriple left_bezt = fcurve_segment_start_get(fcu, segment->start_index); + BezTriple right_bezt = fcurve_segment_end_get(fcu, segment->start_index + segment->length); + + for (int i = segment->start_index; i < segment->start_index + segment->length; i++) { + fcu->bezt[i].vec[1][1] = interpf(right_bezt.vec[1][1], left_bezt.vec[1][1], factor); + } +} + +/* ---------------- */ + /* Check if the keyframe interpolation type is supported */ static bool prepare_for_decimate(FCurve *fcu, int i) { |