diff options
author | Joshua Leung <aligorith@gmail.com> | 2013-06-10 09:10:58 +0400 |
---|---|---|
committer | Joshua Leung <aligorith@gmail.com> | 2013-06-10 09:10:58 +0400 |
commit | 27d792fa9ca103a4f669ab6e26bbb7f2c89f064c (patch) | |
tree | 578a70fd3379ad3315033b8128d238dc3a540936 /source | |
parent | 6f2e36f4ee8965182eff260af53f7ca3906d2a91 (diff) |
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.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/anim_sys.c | 6 |
1 files changed, 0 insertions, 6 deletions
diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c index 3e85c5503f1..a23b92dc10b 100644 --- a/source/blender/blenkernel/intern/anim_sys.c +++ b/source/blender/blenkernel/intern/anim_sys.c @@ -1695,12 +1695,6 @@ static void nlaevalchan_accumulate(NlaEvalChannel *nec, NlaEvalStrip *nes, short 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 */ |