Fix #118837: Time offset modifier not working as expected #118842

Merged
Falk David merged 1 commits from filedescriptor/blender:fix-118837 into main 2024-02-28 11:30:52 +01:00

1 Commits

Author SHA1 Message Date
Falk David 0cc2c7d4a3 Fix #118837: Time offset modifier not working as expected
buildbot/vexp-code-patch-lint Build done. Details
buildbot/vexp-code-patch-linux-x86_64 Build done. Details
buildbot/vexp-code-patch-darwin-arm64 Build done. Details
buildbot/vexp-code-patch-darwin-x86_64 Build done. Details
buildbot/vexp-code-patch-windows-amd64 Build done. Details
buildbot/vexp-code-patch-coordinator Build done. Details
The time offset modifier was working differently than in GPv2.
This is because in the new implementation, the time offset modifier
actually modifies the keyframe mappings. And thus the order
of the modifiers and where the time offset modifier is placed in the
stack matters.

The problem is that this can lead to unexpected results like
seeing unmodified drawings.
Technically, the issue here is that other modifiers only modify
the current frame as supposed to all drawings in the time line.
This is done as an optimization, but doesn't work when drawings
can be shifted around on the time line using the time offset modifier.

The fix changes the way the modifiers are executed.
Because the time offset modifier can only modify when the drawings
are show, and not the drawing data themselves,
we execute all the time offset modifiers first (in the order they appear in the stack)
and then execute all the other modifiers after.

This means that the user can no longer run into the issue of "moving" drawings away from the current frame where they can't be seen.
It also makes time offset modifier behave the same as they did in GPv2.
2024-02-28 10:42:11 +01:00