[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27018] trunk/blender/source/blender/ blenkernel/intern/fcurve.c: in rare cases fcurves with no handle length can result in 0.0.

Campbell Barton ideasman42 at gmail.com
Thu Feb 18 20:43:14 CET 2010


Revision: 27018
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27018
Author:   campbellbarton
Date:     2010-02-18 20:43:13 +0100 (Thu, 18 Feb 2010)

Log Message:
-----------
in rare cases fcurves with no handle length can result in 0.0. check if the point matches the frame.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/fcurve.c

Modified: trunk/blender/source/blender/blenkernel/intern/fcurve.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/fcurve.c	2010-02-18 17:11:12 UTC (rev 27017)
+++ trunk/blender/source/blender/blenkernel/intern/fcurve.c	2010-02-18 19:43:13 UTC (rev 27018)
@@ -1714,9 +1714,13 @@
 	{
 		/* evaltime occurs somewhere in the middle of the curve */
 		for (a=0; prevbezt && bezt && (a < fcu->totvert-1); a++, prevbezt=bezt, bezt++) 
-		{  
+		{
+			/* use if the key is directly on the frame, rare cases this is needed else we get 0.0 instead. */
+			if(fabs(bezt->vec[1][0] - evaltime) < SMALL_NUMBER) {
+				cvalue= bezt->vec[1][1];
+			}
 			/* evaltime occurs within the interval defined by these two keyframes */
-			if ((prevbezt->vec[1][0] <= evaltime) && (bezt->vec[1][0] >= evaltime)) 
+			else if ((prevbezt->vec[1][0] <= evaltime) && (bezt->vec[1][0] >= evaltime))
 			{
 				/* value depends on interpolation mode */
 				if ((prevbezt->ipo == BEZT_IPO_CONST) || (fcu->flag & FCURVE_DISCRETE_VALUES))





More information about the Bf-blender-cvs mailing list