Timeline drawing with multiple simulation bakes #112232

Open
opened 2023-09-11 15:22:50 +02:00 by Jacques Lucke · 4 comments
Member

Currently, all simulation zones in an object are cached/baked together. However, that will change with #112179. It allows baking of individual simulations and simulations might also have independent frames ranges that they are active on.

This is a challenge for the timeline, because now it has to show information from potentially a large number of simulations which can have different cache states.

Current timeline drawing:
image

I can think of three main ways to address this:

  • Don't draw cache status in the timeline at all (this is what e.g. fluids seem to be doing). This would be simple, but we'd loose valuable information that's not really available anywhere else.
  • Draw a status bar in the timeline for every simulation. This shows the most information, but can get very confusing when there are many simulations (which will likely become more common over time). Also it's difficult to map between the timeline editor and the corresponding simulation nodes.
    image
  • Draw information about all simulations in a single line, reducing information from all simulations.
    • If all simulations have the same frame range and cache state, the drawing could be the same we have now.
    • If two simulations are different in some aspect, the line needs to be drawn differently depending on the combination of simulation states. The issue here is that there may be many different combinations, so we probably have to reduce it down to the most useful set of states.
    • We could have a checkbox per simulation, that allows drawing a separate line in the timeline just for that simulation.
    • We could draw a separate line in the timeline for the "active simulation(s)", i.e. the one selected in the node editor or outliner.

Related task: #108196.

Currently, all simulation zones in an object are cached/baked together. However, that will change with #112179. It allows baking of individual simulations and simulations might also have independent frames ranges that they are active on. This is a challenge for the timeline, because now it has to show information from potentially a large number of simulations which can have different cache states. Current timeline drawing: ![image](/attachments/02a36813-073d-4846-aced-2b67bb6497c7) I can think of three main ways to address this: * Don't draw cache status in the timeline at all (this is what e.g. fluids seem to be doing). This would be simple, but we'd loose valuable information that's not really available anywhere else. * Draw a status bar in the timeline for every simulation. This shows the most information, but can get very confusing when there are many simulations (which will likely become more common over time). Also it's difficult to map between the timeline editor and the corresponding simulation nodes. ![image](/attachments/f6a1a739-7e85-4e4f-a231-fcd604e29f15) * Draw information about all simulations in a single line, reducing information from all simulations. * If all simulations have the same frame range and cache state, the drawing could be the same we have now. * If two simulations are different in some aspect, the line needs to be drawn differently depending on the combination of simulation states. The issue here is that there may be many different combinations, so we probably have to reduce it down to the most useful set of states. * We could have a checkbox per simulation, that allows drawing a separate line in the timeline just for that simulation. * We could draw a separate line in the timeline for the "active simulation(s)", i.e. the one selected in the node editor or outliner. Related task: #108196.
Jacques Lucke added the
Type
Design
label 2023-09-11 15:22:50 +02:00
Jacques Lucke added this to the Module: Nodes & Physics project 2023-09-11 15:22:51 +02:00
Member

What about something like this? I'm trying to think of a way that doesn't get out of hand with lots of objects and lots of simulations, but gives specific information when it's necessary.

  • When there is a visible active simulation (active in the outliner or node editor), only draw a line for the active simulation .
  • Otherwise, draw a combined single line for all simulations in the selected objects
What about something like this? I'm trying to think of a way that doesn't get out of hand with lots of objects and lots of simulations, but gives specific information when it's necessary. - When there is a visible active simulation (active in the outliner or node editor), _only_ draw a line for the active simulation . - Otherwise, draw a combined single line for all simulations in the selected objects
Contributor

Second method could work if every line after first one is drawn with different saturation and value, so that difference is visible. That would give most information

Second method could work if every line after first one is drawn with different saturation and value, so that difference is visible. That would give most information
Author
Member

An initial version of this is part of #112723.

An initial version of this is part of #112723.

Maybe a gui a bit like a performance profiler ? something like telemetry comes to mind...

So this could be an extended version of the timeline, or even a seperate editor.

Not just to see the caching, but this could allow to visualize nested independent timelines itself of simulation nodes once those can have their own subticks.

At some point geonodes simulations and the realtime mode might need some profiling visualization anyway for nodegroup devs.

Maybe a gui a bit like a performance profiler ? something like telemetry comes to mind... So this could be an extended version of the timeline, or even a seperate editor. Not just to see the caching, but this could allow to visualize nested independent timelines itself of simulation nodes once those can have their own subticks. At some point geonodes simulations and the realtime mode might need some profiling visualization anyway for nodegroup devs.
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Code Documentation
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
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 & 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
Viewport & EEVEE
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Asset Browser Project
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
Asset System
Module
Core
Module
Development Management
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Module
Viewport & EEVEE
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Severity
High
Severity
Low
Severity
Normal
Severity
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 Assignees
4 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#112232
No description provided.