VSE unkeyed transforms in preview persist in cache #98432

Open
opened 2022-05-27 10:30:21 +02:00 by Philipp Oeser · 6 comments
Member

System Information
Operating system: Linux-5.13.0-0.rc6.45.fc35.x86_64-x86_64-with-glibc2.34.9000 64 Bits
Graphics card: NVIDIA GeForce GTX 970M/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 495.44

Blender Version
Broken: version: 3.3.0 Alpha, branch: master, commit date: 2022-05-22 18:26, hash: d095fcd6b4
Worked: never

Short description of error
VSE unkeyed transforms in preview persist in cache.
If transforms occur on a property that has an fcurve already (but no keyframe is actually created on that frame), this transform will remain in the cache for that frame.
This does not get invalidated on timeline scrubbing / frame change.

(this report was split from #98015 (VSE strip transforms do not animate correctly and persist after clearing the animation) since multiple issues came up in that report)

Exact steps for others to reproduce the error
VSE_keyframing.blend

  • open .blend
  • create a keyframes for rotation on frame 1
  • go to frame 10
  • rotate in the Preview again and confirm the rotation (but dont create a keyframe)
  • scrub the timeline
  • since this change on frame 10 was not keyed, it should vanish, but it doesnt, it remains in the cache
  • note: when the strip in the Sequencer view gets moved, the issue goes away (assume the whole cache gets invalidated then)
**System Information** Operating system: Linux-5.13.0-0.rc6.45.fc35.x86_64-x86_64-with-glibc2.34.9000 64 Bits Graphics card: NVIDIA GeForce GTX 970M/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 495.44 **Blender Version** Broken: version: 3.3.0 Alpha, branch: master, commit date: 2022-05-22 18:26, hash: `d095fcd6b4` Worked: never **Short description of error** VSE unkeyed transforms in preview persist in cache. If transforms occur on a property that has an fcurve already (but no keyframe is actually created on that frame), this transform will remain in the cache for that frame. This does not get invalidated on timeline scrubbing / frame change. (this report was split from #98015 (VSE strip transforms do not animate correctly and persist after clearing the animation) since multiple issues came up in that report) **Exact steps for others to reproduce the error** [VSE_keyframing.blend](https://archive.blender.org/developer/F13113208/VSE_keyframing.blend) - open .blend - create a keyframes for rotation on frame 1 - go to frame 10 - rotate in the `Preview` again and confirm the rotation (but dont create a keyframe) - scrub the timeline - since this change on frame 10 was not keyed, it should vanish, but it doesnt, it remains in the cache - note: when the strip in the `Sequencer` view gets moved, the issue goes away (assume the whole cache gets invalidated then)
Author
Member

Added subscriber: @lichtwerk

Added subscriber: @lichtwerk
Author
Member

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'
Author
Member

Added subscribers: @iss, @OmarEmaraDev

Added subscribers: @iss, @OmarEmaraDev
Author
Member
CC @iss CC @OmarEmaraDev
Author
Member

Just pasting the previous relevant quotes from #98015:

In #98015#1366040, @iss wrote:

In #98015#1365188, @lichtwerk wrote:
I think it makes sense to split this report up in multiple reports (will do that).

In #98015#1364993, @iss wrote:
Ah right that's correct. Not sure what would be good solution. Sounds to me that in case when property is animated, cache entry should be created only when keyframe is inserted, but even that is not quite enough - it would have to check if all properties that were changed were keyed. Looks quite complicated to handle this.

Havent looked at cache internals (where the entries are made, when/how exactly this get invalidated), could check if you give me a hint, but looks like this is essential funtionality that is just behaving wrong (by design?)

Most modal operators would invalidate cache right after strip data is modified(here recalcData_sequencer) along with sending notifiers to redraw/re-render. Images are cached during rendering(seq_cache_put). So technically this is behaving wrong by design. Sequencer would have to know that property is not keyframed yet and not cache any image in such case, which is quite a bit outside of its scope IMO.

There is mechanism in cache for discarding images that are stored recently, but this is due to memory limits and fact that all images within same frame must be stored (size of all images is known only after they are stored and possibly over the limit). So technically this could be solved, but not sure how to signal this situation to sequencer. Even depsgraph does not care about data you have manually tweaked and not keyed when you change frame - it just discards everything and calculates animation from ground up.

Just pasting the previous relevant quotes from #98015: > In #98015#1366040, @iss wrote: >> In #98015#1365188, @lichtwerk wrote: >> I think it makes sense to split this report up in multiple reports (will do that). >> >> >>> In #98015#1364993, @iss wrote: >>> Ah right that's correct. Not sure what would be good solution. Sounds to me that in case when property is animated, cache entry should be created only when keyframe is inserted, but even that is not quite enough - it would have to check if all properties that were changed were keyed. Looks quite complicated to handle this. >> Havent looked at cache internals (where the entries are made, when/how exactly this get invalidated), could check if you give me a hint, but looks like this is essential funtionality that is just behaving wrong (by design?) > > Most modal operators would invalidate cache right after strip data is modified(here `recalcData_sequencer`) along with sending notifiers to redraw/re-render. Images are cached during rendering(`seq_cache_put`). So technically this is behaving wrong by design. Sequencer would have to know that property is not keyframed yet and not cache any image in such case, which is quite a bit outside of its scope IMO. > > There is mechanism in cache for discarding images that are stored recently, but this is due to memory limits and fact that all images within same frame must be stored (size of all images is known only after they are stored and possibly over the limit). So technically this could be solved, but not sure how to signal this situation to sequencer. Even depsgraph does not care about data you have manually tweaked and not keyed when you change frame - it just discards everything and calculates animation from ground up.

Since solution for this is not trivial, will classify as known issue.

Since solution for this is not trivial, will classify as known issue.
Philipp Oeser removed the
Interest
Animation & Rigging
label 2023-02-09 14:34:49 +01:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#98432
No description provided.