Anim: Keyframing Rework #113278
Labels
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
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
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
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
Core
Module
Development Management
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
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 project
No Assignees
5 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#113278
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This is the working plan for the keying sets rework originally discussed here: https://devtalk.blender.org/t/keyframing-auto-keyframing-and-keying-sets/31125
Current Issues
Specific issues are listed here: https://developer.blender.org/docs/features/animation/module/weak_areas/
Too many optionsWhen pressing I without a keying set, a whole list of options pop up that is not really needed. Conceptually, animators want to key "the thing" and not have to choose every time
This has been addressed in 4.1
Pressing
I
now always gives you keyframes, while pressingK
will open the keying set popup menu.Custom keying sets
They are bound to specific IDs so they will key only those when
Insert Key
is executed. This results in the object being keyed, even though it is not selected and invisible.Channel locks are not respected
Keyframes can be added to a channel, even if it might be locked. A lock means that a channel can't be modified and that should include keys. This is especially important for linked rigs, where the lock is set by the rigger with an intention for that channel to not be touched.
Auto Keying fails unexpectedly
There are user preferences, that when enabled together produce unexpected results, failing to add keyframes during auto keying.
This has been partly addressed in 4.1
It is now less likely to get blender into a situation where it can't insert keys.
Planned Changes
Remove built in Keying Sets
The whole list of built in keying sets will be deleted. Instead we will add settings to the User Preferences, to define which channels should be keyed when
Insert Key
is executed. These options are:Visual Keying
With the list of keying sets gone, we still need a way to do visual keying. This will be a property on the
Insert Key
operator instead of part of the keying set. We could then bind it to a different hotkey or only expose it in the menu.Never key locked Channels
Always check if a channel is locked before inserting a key, throw a warning if insertion is not possible. That means custom properties should be lockable, or at least not allow animation.
Make custom keying sets relative to the current selection
Instead of specifying a list of ID blocks the keying set should operate on, specify a list of RNA paths only. These paths will be searched for on every object in the selection. If found, a key will be added.
Auto Keying
Simplify the auto keying options. Add an enum for the keying mode that can have two states
The latter would try to insert all the properties specified in the keying set.
"Only insert available" would be a separate option, that would stop keys from being inserted when there is not already a key on the property. This option will only affect auto keying. Regular keying will have its own options.
Resulting logic flow
These diagrams do NOT show code structure. They should just help to visualize what is going to happen when certain actions are performed.
Implementation Steps
Step 0 - Cleanup
Step 1 - manual keying
I
hotkey to the VSE: https://blender.community/c/rightclickselect/ZWrQStep 2 - auto keying
#115360: Anim: Change how Only Insert Needed works
#115525: Anim: Separate keying flags
#115522: Anim: Don't use keying sets when inserting keyframes during autokeying
Step 3
Step 4
Step 5
object.keyframe_insert() already exists, but needs to have all its flags passed in. Needs a convenient way to fall back to user preferences.
API needs to allow passing in the keyframe interpolation type of new keys.
Unit tests to add
Issues to fix
Additional Design tasks
This is a list of other design tasks that are tangential to this and might be solved during the process
Keying Sets Reworkto Anim: Keying Sets ReworkAnim: Keying Sets Reworkto Anim: Keyframing ReworkJust some first-glance feedback:
Strictly speaking, there is no such thing in Blender. It's the rotation mode (which includes Euler rotation order, but also Quaternion and Axis/Angle modes).
(note: this is pretty much covered by the graphs you drew, but not yet part of the text. I would recommend writing the text such that it contains all the necessary information, with the images there support it. Images should not provide new information.)
(removed my notes here, the graphs cover those indeed -- I need to write feedback on more than a first glance ;-) )
What I think should still be designed / decided: what happens when auto-keying is on, and a property is changed that's not part of any loc/rot/scale/custom properties choice?
Also mention the things listed at https://wiki.blender.org/wiki/Modules/Animation-Rigging/Weak_Areas#Auto-keying in the description, so that things get linked together better.
Don't agree with this being a user preference. Insert key is a tool and it's settings should be definable on the fly as any other tool. What you want to keyframe changes from object to object even.
It needs to be more accessible I agree. I've talked to the UI team about that briefly to have things that persist between files, but are within the GUI. No plans for it though.
IMO it would be worse to have the setting on the scene and then have to set it every single time you change your file.
Also, what about a pie menu with 4 options for loc, rot, scale and custom props.
you'd be able to quickly flick the mouse to insert what you want.
Not being able to choose which property to keyframe from the viewport is a huge waste of time. Sometimes I only want location or rotation, but not scale, and sometimes I want all three.
Personally, it's annoying enough to make me want to stick with an older version when it comes to animation. 😅
About this pie menu, we come back to the same problem, wanting to animate 2 properties out of 3 will double the number of entries. It also becomes a waste of time. Even though there were a lot of options in the "I" menu, it allowed you to quickly place keyframes on the properties you wanted.
Perhaps it would be a good idea to introduce a shortcut to access them again. Shift+I for example?
Thank you for your amazing work, I'm just a user that loves to animate 😊
I hear you and there is already a PR for it: #115798: Anim: Add hotkey for keying set operators
Thanks for making your voice heard! I appreciate it.
What if instead of a big dropdown on the K shortcut and under the keying menu, we could instead just have a similar menu to the preferences keying settings?
@xZaki that would be neat but there are edge cases, like the "Whole Character" keying sets in pose mode.
I agree with the idea though, the setting for which things are keyframed should be easier to access