Bugfixes [#35263], [#35382] NLA Animated Influence is ignored if strips below
authorJoshua Leung <aligorith@gmail.com>
Mon, 10 Jun 2013 05:10:58 +0000 (05:10 +0000)
committerJoshua Leung <aligorith@gmail.com>
Mon, 10 Jun 2013 05:10:58 +0000 (05:10 +0000)
commit27d792fa9ca103a4f669ab6e26bbb7f2c89f064c
tree578a70fd3379ad3315033b8128d238dc3a540936
parent6f2e36f4ee8965182eff260af53f7ca3906d2a91
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
[#35263]).

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.
source/blender/blenkernel/intern/anim_sys.c