[Bf-blender-cvs] [9ac0884] master: Fix T46701: Sampled FCurve looks jagged when FModifiers (doing nothing) are present

Joshua Leung noreply at git.blender.org
Sat Nov 14 06:17:59 CET 2015


Commit: 9ac08840ae7e9bd802329e9443da87d4e0dbe5a0
Author: Joshua Leung
Date:   Sat Nov 14 18:08:36 2015 +1300
Branches: master
https://developer.blender.org/rB9ac08840ae7e9bd802329e9443da87d4e0dbe5a0

Fix T46701: Sampled FCurve looks jagged when FModifiers (doing nothing) are present

This was caused by interpolation between samples being performed incorrectly
(i.e. wrong order of arguments) when sampling more than once per frame.

===================================================================

M	source/blender/blenkernel/intern/fcurve.c

===================================================================

diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c
index 02b95c8..abf8472 100644
--- a/source/blender/blenkernel/intern/fcurve.c
+++ b/source/blender/blenkernel/intern/fcurve.c
@@ -2436,11 +2436,11 @@ static float fcurve_eval_samples(FCurve *fcu, FPoint *fpts, float evaltime)
 		float t = fabsf(evaltime - floorf(evaltime));
 		
 		/* find the one on the right frame (assume that these are spaced on 1-frame intervals) */
-		fpt = prevfpt + (int)(evaltime - prevfpt->vec[0]);
+		fpt = prevfpt + ((int)evaltime - (int)prevfpt->vec[0]);
 		
 		/* if not exactly on the frame, perform linear interpolation with the next one */
-		if (t != 0.0f) 
-			cvalue = interpf(fpt->vec[1], (fpt + 1)->vec[1], t);
+		if ((t != 0.0f) && (t < 1.0f))
+			cvalue = interpf(fpt->vec[1], (fpt + 1)->vec[1], 1.0f - t);
 		else
 			cvalue = fpt->vec[1];
 	}




More information about the Bf-blender-cvs mailing list