Page MenuHome

Bugfix: NLA: Transition to Meta Strip Incorrect Evaluation
ClosedPublic

Authored by Wayde Moss (GuiltyGhost) on Jul 14 2020, 3:14 AM.

Details

Summary

When a transition is placed next to a meta strip, the meta will use the wrong strip time. It uses the strip time of the transition instead of its own.

Example File:

Diff Detail

Repository
rB Blender
Branch
bugfix_transition_to_meta (branched from master)
Build Status
Buildable 8999
Build 8999: arc lint + arc unit

Event Timeline

Wayde Moss (GuiltyGhost) requested review of this revision.Jul 14 2020, 3:14 AM
Wayde Moss (GuiltyGhost) created this revision.
Wayde Moss (GuiltyGhost) retitled this revision from bugfix: transition to meta strip would use strip time of transition instead of the start of the meta strip. to Bugfix: NLA: Transition to Meta Strip Incorrect Evaluation .Jul 14 2020, 3:20 AM
Wayde Moss (GuiltyGhost) edited the summary of this revision. (Show Details)
Wayde Moss (GuiltyGhost) retitled this revision from Bugfix: NLA: Transition to Meta Strip Incorrect Evaluation to Bugfix: NLA: Transition to Meta Strip Incorrect Evaluation.
Wayde Moss (GuiltyGhost) edited the summary of this revision. (Show Details)
  • rebase

Included example file in first post.

This revision is now accepted and ready to land.Sep 15 2020, 12:38 PM

When a transition is placed next to a meta strip, the meta will use the wrong strip time. It uses the strip time of the transition instead of its own.

This is the opposite of what's shown in the video. It looks like the transition is using the meta strip time. This is also consistent with the patch itself, as you're fixing the transition evaluation, and not the meta evaluation. I'll fix that in the commit message.

Thanks for accepting the fix.

About the issue, there are two ways to fix it. The other way is to change (anim_sys.c) nlastrip_evaluate_meta():

evaltime = (nes->strip_time * (strip->end - strip->start)) + strip->start;

to use nes->strip->strip_time instead.

For the transition vs metastrip confusion: Transitions will evaluate the prev and next strip through nlastrip_evaluate() and linearly blend the channels. The meta would use the transition's NlaEvalStrip strip time because tmp_nes is a copy of nes. Since the metastrip will evaluate with the wrong (and changing) transition time, then the transition will blend with the wrong (and changing) value for the next strip. I'm probably just being tedious. I appreciate the commit.