Better Baking in the Graph Editor #111050

Closed
opened 2023-08-11 16:01:36 +02:00 by Christoph Lendenfeld · 9 comments

Summary

The existing "Bake Curve" operator has been confusing people for a long time because it leaves your curves in an un-editable state.
Additionally the feature set is very limited only allowing to add a key every frame etc.
In order to alleviate the confusion, rename the existing operator and update the manual to indicate its purpose. Then add a better operator that has more options for baking keys.

Manual

  • Update manual to indicate that the "Bake Curve" operator is meant to safe disk space

Refactor

Features

Future Work

  • Bake operator for switching rotation mode
  • Bake operator for switching spaces
## Summary The existing "Bake Curve" operator has been confusing people for a long time because it leaves your curves in an un-editable state. Additionally the feature set is very limited only allowing to add a key every frame etc. In order to alleviate the confusion, rename the existing operator and update the manual to indicate its purpose. Then add a better operator that has more options for baking keys. ## Manual - [x] Update manual to indicate that the "Bake Curve" operator is meant to safe disk space ## Refactor - [x] [#111049: Animation: Rename "Bake Curve" to "Keys to Samples"](https://projects.blender.org/blender/blender/pulls/111049) - [x] [#112148: Animation: Rename Graph_OT_sample](https://projects.blender.org/blender/blender/pulls/112148) - [x] [#112151: Animation: Rename ACTION_OT_sample](https://projects.blender.org/blender/blender/pulls/112151) ## Features - [x] [#111263: Animation: Bake Channel operator](https://projects.blender.org/blender/blender/pulls/111263) * Add sample step property. e.g. to add a key every n-th frame * Bake F-Curve modifiers to keys * Remove or keep existing frames ## Future Work - Bake operator for switching rotation mode - Bake operator for switching spaces
Christoph Lendenfeld added this to the 4.0 milestone 2023-08-11 16:01:36 +02:00
Christoph Lendenfeld added the
Type
To Do
label 2023-08-11 16:01:36 +02:00
Brad Clark was assigned by Christoph Lendenfeld 2023-08-11 16:01:36 +02:00
Christoph Lendenfeld added this to the Animation & Rigging project 2023-08-11 16:01:38 +02:00
Member

It would be nice if it could work on preview range or set time range, scene range and either remove everything outside that range or keep it

It would be nice if it could work on preview range or set time range, scene range and either remove everything outside that range or keep it
Christoph Lendenfeld added the
Module
Animation & Rigging
label 2023-09-08 14:20:28 +02:00

It would be nice if it could work on preview range or set time range, scene range and either remove everything outside that range or keep it

Since this design task is about disambiguating "baking" and "sampling", please clarify what you mean with "if it could work".

> It would be nice if it could work on preview range or set time range, scene range and either remove everything outside that range or keep it Since this design task is about disambiguating "baking" and "sampling", please clarify what you mean with "if it could work".
Member

Right...I meant to come back to this.
it could work means.

If I have the time preview on and set to frame 20-30 out of 1-100, the bake resulting in new keys would bake the preview range

Or I could bake the channel and set it to a frame range to bake 20-30 without having the preview enabled.

Or I could bake the current scene range start/end for selected curves/channels.

and choose with a toggle what happens to anything outside the range of keys - leaving keys on the curve outside of the range untouched or remove them so that the only keys I am left with are in the range of time I choose.

Right...I meant to come back to this. it could work means. If I have the time preview on and set to frame 20-30 out of 1-100, the bake resulting in new keys would bake the preview range Or I could bake the channel and set it to a frame range to bake 20-30 without having the preview enabled. Or I could bake the current scene range start/end for selected curves/channels. and choose with a toggle what happens to anything outside the range of keys - leaving keys on the curve outside of the range untouched or remove them so that the only keys I am left with are in the range of time I choose.
Author
Member

@BClark what's the use case for having such a functionality within the bake operator?
I want to avoid overcomplicating the operator if possible. For me this feels like a separate operator "Trim Channels" or similar

@BClark what's the use case for having such a functionality within the bake operator? I want to avoid overcomplicating the operator if possible. For me this feels like a separate operator "Trim Channels" or similar
Member

.. right, I wasn't sure/didn't know if it is easier to have time range as part of it or just keep this clean and manage the time in a separate operator. I just wanted to mention it since that was the use case for my hacky python script to do the same thing for an animator .. to bake a range.

How best to add that extra functionality is better left to others, I just wanted to mention it.

.. right, I wasn't sure/didn't know if it is easier to have time range as part of it or just keep this clean and manage the time in a separate operator. I just wanted to mention it since that was the use case for my hacky python script to do the same thing for an animator .. to bake a range. How best to add that extra functionality is better left to others, I just wanted to mention it.
Author
Member

.. right, I wasn't sure/didn't know if it is easier to have time range as part of it or just keep this clean and manage the time in a separate operator. I just wanted to mention it since that was the use case for my hacky python script to do the same thing for an animator .. to bake a range.

How best to add that extra functionality is better left to others, I just wanted to mention it.

Sorry I think my comment was lacking context. I was only talking about the feature to remove all keyframes outside the baking range.
Baking in a given range is absolutely a feature that is needed

> .. right, I wasn't sure/didn't know if it is easier to have time range as part of it or just keep this clean and manage the time in a separate operator. I just wanted to mention it since that was the use case for my hacky python script to do the same thing for an animator .. to bake a range. > > How best to add that extra functionality is better left to others, I just wanted to mention it. Sorry I think my comment was lacking context. I was only talking about the feature to remove all keyframes outside the baking range. Baking in a given range is absolutely a feature that is needed
Member

oh okay :O) either way... the remove outside of range is just more about being able to be left with only what was baked without having to then go reverse selection, delete etc.. but I will leave the how and where to you :) if it doesn't fit the scope of time range code for this pr.

oh okay :O) either way... the remove outside of range is just more about being able to be left with only what was baked without having to then go reverse selection, delete etc.. but I will leave the how and where to you :) if it doesn't fit the scope of time range code for this pr.
Author
Member

@BClark I was overcomplicating things in my head
made you a new build on #111263 that has 4 options for removing keys

  • None
  • In Range
  • Outside Range
  • All
@BClark I was overcomplicating things in my head made you a new build on #111263 that has 4 options for removing keys * None * In Range * Outside Range * All
Christoph Lendenfeld modified the milestone from 4.0 to 4.1 2023-11-14 15:08:37 +01:00
Author
Member

This has been fully implemented now :)

This has been fully implemented now :)
Blender Bot added the
Status
Archived
label 2023-12-14 11:37:44 +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 Assignees
3 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#111050
No description provided.