Page MenuHome

Incorrect timing of animated masks in the Video Sequence Editor
Open, Confirmed, MediumPublic


System Information
Operating system: Linux-4.18.0-25-generic-x86_64-with-debian-buster-sid 64 Bits
Graphics card: Mesa DRI Intel(R) UHD Graphics 620 (Kabylake GT2) Intel Open Source Technology Center 4.5 (Core Profile) Mesa 18.2.8

Blender Version
Broken: version: 2.81 (sub 2), branch: master, commit date: 2019-08-14 22:18, hash: rBcb7ead2e3b62
Worked: (optional)

Short description of error
The mask modifier in the VSE displays mask animations one frame too early when "Mask Time" is set to "Absolute".

Exact steps for others to reproduce the error

  1. Create a mask in the Movie Clip Editor with a shape key animation.
  2. Add a Color strip in the Video Sequence Editor.
  3. Add a Mask modifier to the strip and set the "Mask Input Type" to "Mask", select the mask created in 1. and set the "Mask Time" to "Absolute".
  4. Go through the animation frame by frame. In the VSE the mask will be animated one frame ahead of the actual shape keys. Other keyframes (like the mask layer opacity) will be timed correctly.

Event Timeline

Philipp Oeser (lichtwerk) claimed this task.
Philipp Oeser (lichtwerk) triaged this task as Confirmed, Medium priority.

Can confirm (in a way), this is weird.

we have:

  • Mask Settings (start / end)
    • introduced in rBbdf9e0234667
    • tbh, I dont really get the usecase for start/end here, seems to only be used as an offset?
  • Strip Time Settings (start / end)
  • scene current frame

code in seq_render_mask will effectively do BKE_mask_evaluate(mask_temp, mask->sfra + (cfra - fra_offset), true) where fra_offset is zero for absolute and seq->start for relative.

If we really want the scene's current frame (as advertised) if Mask Time is set to Absolute (effectively ignoring the Masks) we would need to change the fra_offset from zero to mask->sfra...

I overlooked the start/end settings of the masks before. Thanks for the fix. So for the current build, setting the masks start frame to 0 gets the mask and the VSE back in sync.