[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57333] trunk/blender/source/blender/ blenkernel/intern/anim_sys.c: Bugfixes [#35263], [#35382] NLA Animated Influence is ignored if strips below

Joshua Leung aligorith at gmail.com
Mon Jun 10 07:10:58 CEST 2013

Revision: 57333
Author:   aligorith
Date:     2013-06-10 05:10:58 +0000 (Mon, 10 Jun 2013)
Log Message:
Bugfixes [#35263], [#35382] NLA Animated Influence is ignored if strips below
have zero total influence

Previously, when evaluating the NLA stack at a particular point in time, if a
channel hadn't been encountered before, influence values were simply ignored
when accumulating the values contributed by each strip to the overall stack.

This behaviour simplified the handling of the problem of what "baseline" to
blend relative to (i.e. influence basically scales the magnitude of a scalar
around 0, but we may not exactly want a property to get it's value set to 0 as
baseline). However, the problem was that this meant that you'd get popping
artifacts when the a lower strip finally reaches influence=0 but your upper
strips haven't fully reached maximum yet ([#35382]). Another problem was that
you'd end up with less ability to scale the influence of all strips (as in

So, as a stop-gap fix now, we will allow influence scaling to work on these
strips too. This still doesn't fix some of the other problems regarding
baselines/rest-poses and deterministic behaviour when some channels are only
keyed in one strip which isn't set to extend it's influence... Fixing those
issues is a bit more involved, and would require a bit of refactoring of how we
keep track of accumulation channels.

Modified Paths:

Modified: trunk/blender/source/blender/blenkernel/intern/anim_sys.c
--- trunk/blender/source/blender/blenkernel/intern/anim_sys.c	2013-06-10 04:39:05 UTC (rev 57332)
+++ trunk/blender/source/blender/blenkernel/intern/anim_sys.c	2013-06-10 05:10:58 UTC (rev 57333)
@@ -1695,12 +1695,6 @@
 	short blendmode = strip->blendmode;
 	float inf = strip->influence;
-	/* if channel is new, just store value regardless of blending factors, etc. */
-	if (newChan) {
-		nec->value = value;
-		return;
-	}
 	/* if this is being performed as part of transition evaluation, incorporate
 	 * an additional weighting factor for the influence

More information about the Bf-blender-cvs mailing list