From 9f34f2b20d558817f800a239896cccf19a926204 Mon Sep 17 00:00:00 2001 From: Richard Antalik Date: Tue, 22 Dec 2020 05:38:56 +0100 Subject: VSE: Fix animation versioning for bezier F-curves `seq_convert_transform_animation()` converted only keyframed value, but when bezier interpolation is used, posotion of handles was unchanged. This caused significant difference in animation. I have checked only linear interpolation when testing versioning originally. --- source/blender/blenloader/intern/versioning_290.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source/blender/blenloader') diff --git a/source/blender/blenloader/intern/versioning_290.c b/source/blender/blenloader/intern/versioning_290.c index 0c64e835e8b..8a85278a931 100644 --- a/source/blender/blenloader/intern/versioning_290.c +++ b/source/blender/blenloader/intern/versioning_290.c @@ -113,7 +113,9 @@ static void seq_convert_transform_animation(const Scene *scene, BezTriple *bezt = fcu->bezt; for (int i = 0; i < fcu->totvert; i++, bezt++) { /* Same math as with old_image_center_*, but simplified. */ + bezt->vec[0][1] = image_size / 2 + bezt->vec[0][1] - scene->r.xsch / 2; bezt->vec[1][1] = image_size / 2 + bezt->vec[1][1] - scene->r.xsch / 2; + bezt->vec[2][1] = image_size / 2 + bezt->vec[2][1] - scene->r.xsch / 2; } } } @@ -250,7 +252,9 @@ static void seq_convert_transform_animation_2(const Scene *scene, BezTriple *bezt = fcu->bezt; for (int i = 0; i < fcu->totvert; i++, bezt++) { /* Same math as with old_image_center_*, but simplified. */ + bezt->vec[0][1] *= scale_to_fit_factor; bezt->vec[1][1] *= scale_to_fit_factor; + bezt->vec[2][1] *= scale_to_fit_factor; } } } -- cgit v1.2.3