Page MenuHome

Fix T67516 VSE: Animation evaluated incorrectly when scene strip present

Authored by Sybren A. Stüvel (sybren) on Aug 1 2019, 2:11 PM.



The calls to BKE_animsys_evaluate_all_animation() and
BKE_mask_evaluate_all_masks() used the wrong timecode to evaluate the
animation system. This happened:

  • Sequencer in scene A was rendered at frame X.
  • Scene strip for scene B which should be evaluated at frame Y.
  • BKE_animsys_evaluate_all_animation() was called with frame Y, which also re-evaluated the animation data in scene A.
  • Other sequencer strips with animated values were then evaluated for frame Y and not frame X.

Since the depsgraph for rendering the scene strip is already OK and does
its job, it's no longer necessary to re-evaluate all the animation in
this way. Evaluating the pipeline depsgraph is enough.

Removed BKE_mask_evaluate_all_masks() because it's no longer used.

Diff Detail

rB Blender

Event Timeline

Brecht Van Lommel (brecht) requested changes to this revision.Aug 12 2019, 11:17 AM

Why is the call to DEG_evaluate_on_refresh needed?

As far as I can tell it should have already been updated by render_update_depsgraph before this function is called.

It's probably not harmful in itself, but if the first depsgraph update somehow does not include everything that may mean there are other bugs.

This revision now requires changes to proceed.Aug 12 2019, 11:17 AM

@Brecht Van Lommel (brecht) you're right. I removed the DEG_evaluate_on_refresh call, and everything still seems to be working correctly.

This revision is now accepted and ready to land.Aug 13 2019, 3:44 PM