# Project Baklava Planning :::warning This is **a draft of future changes** to the planning. ⇒ [The actual plan][plan] [plan]: https://projects.blender.org/blender/blender/issues/120406 ::: ## Phase 1: Multi data-block animation Goals: ability to animate with the new `Animation` data-block, and having different data-blocks animated by the same `Animation`. Non-goals: layers, strips on layers, animation-level constraints, bone pickers. ### ~~1.1: Existing code for the data model → `main`~~ ~~#118677: Baklava Phase 1.1~~ ### 1.2: Data Model access via existing UI #119875: add Animation data-block to anim filtering code Goal: minimal working state for animators to animate *anything*. - [x] Hooking up to the existing animation filtering code - [x] Research existing code - [x] Add Animation datablock support - [x] Dope Sheet - [x] Graph Editor - [ ] Key Insertion: - [ ] From 3D Viewport ([#119669](https://projects.blender.org/blender/blender/pulls/119669)) - [ ] From context menu on properties - [ ] From Graph Editor - [ ] From Dope Sheet Editor - [ ] Key insertion (also via Python): XYZ-to-RGB **End-of-phase goal:** Animators can animate with a file that has been set up for animation by the devs. ### 1.3: Creating & Assigning `Animation` data-blocks - [ ] Animation data-block assigning UI - [ ] Non-object/bone data-blocks (like materials) - [ ] 'Animation' mode (copy of 'Action' mode) of Dope Sheet - [ ] Animation data-block creation UI/UX (esp. when creating through inserting the first key) **End-of-phase goal:** Animators can animate a file from scratch. ### 1.4: Organisation of animation channels - [ ] FCurve Groups - [ ] Manual grouping of FCurves - [ ] Automatic creation of "manual" groups - [ ] Automatic (implicit) grouping of FCurves? - [ ] Automatic sorting of FCurves - [ ] First location, then rotation, then scale, then the rest - [ ] Keeping array elements sequential & in array order - [ ] Manual reordering of Bindings within an Animation **End-of-phase goal:** Animators don't get lost in their long lists of channels. ### 1.5: Feature Par with Actions ... but not the NLA (so no `Animation` strips in the NLA). - [ ] Autokeying - [ ] Selection syncing (objects/bones/otherthings vs. their animation channels). - [ ] Cycle-aware keying? **End-of-phase goal:** Animators can work with the new Animation data-block as comfortably as with (linear/non-NLA) Actions. They can replace Actions with Animation data-blocks. ### 1.x: Unplanned but related **High prio** to add to the above (or a subphase by itself): - [ ] Tools for (N Actions → 1 Animation) and (1 Animation → N Actions). - [ ] Library Override support. Even when nothing should be overridable, there should be time to think about this and make clear decisions (+ document those). Other things: - [ ] Per-FCurve-group modifiers. But maybe those become 'modifier strips', and scoping of those is done on a per-layer level. - [ ] Animation Filtering code replacement. Becomes a little more important when looking at FCurve groups. Those will likely be reimplemented from scratch to get rid of weird `ListBase` dependent stuff. - [ ] Fine-grained dependency graph nodes. Currently the animation data-block can only be tagged for update as a whole, causing a full re-evaluation of all animated data-blocks. This should be more granular.