Animation & Rigging

@anim-rigging

Blender's Animation & Rigging module

Public team

Joined on Mar 27, 2023

  •  Like  Bookmark
  • Open Questions How do we deal with low level errors? See KeyframeStrip::keyframe_insert(). That function can fail for a few reasons: The FCurve exists, but not able to receive new keys (see BKE_fcurve_is_keyframable()). Inserting a key can fail, for example because the INSERTKEY_REPLACE flag is set and there is no existing key to replace (see insert_vert_fcurve()). As a generalisation of this question, there is: How do we deal with multiple return values?
     Like  Bookmark
  • [!Note] Skip down to the section entitled "The Plan" if you're already familiar with the issues around id_root and target_id_type. History / Context Animato Animato Actions had an id_root property that specified what ID type their animation data was for. The id_root worked as follows: An Action could only (directly) be assigned to IDs of a type compatible with the type in its id_root. For example, id_root == 'OBJECT' could only be (directly) assigned to objects, not materials, etc. Action selectors in the UI only showed Actions with an id_root compatible with the current ID type. In addition to specfic types like 'OBJECT', id_root could also be set to 'UNSPECIFIED'.
     Like  Bookmark
  • This is the ground truth document for #120406: Slotted Actions Planning. For more context, see: 2024: Animation 2025: Progress & Planning 2023: Layered Animation workshop 2022: Character Animation workshop Goals: ability to animate with the new multi-slot Action, and having different data-blocks animated by the same Action.
     Like  Bookmark
  • This is a draft for a design for copy-pasting keyframes in the Action editor. The main goal is to add the necessary changes for working with slotted Actions. [!Note] Bug report: : #129690: Anim: pasting keyframes in Action editor sends them to the wrong slot PR that adds the suggested approach to the tech docs: : #103: Anim: document slot-aware copy-paste of keyframes in Action editor
     Like  Bookmark
  • [!Caution] This post has already been published at https://code.blender.org/2025/01/layered-animation-workshop-2024/ Just before Blender Conference 2025, the Animation & Rigging module held a day-long workshop to discuss layered actions should work in Blender. In this post, we'll share the outcomes of that workshop. For more context on this topic, please visit Animation 2025: Progress & Planning. Joining in the workshop were Brad Clark, Christoph Lendenfeld, Dorothee Ditrich, Falk David, Lukas Tönne, Marion Stalke, Nate Rupsis, Nathan Vegdahl, Nika Kutsniashvili, Pierrick Picaut, Raymond Luc, Rik Schutte, and Sybren Stüvel. Workshop Focus
     Like  Bookmark
  • Animation Breakdowner in Object mode (Rik also mentioned that once) Disabling keys. That is meant to be a quick way to test if a frame is needed in the final stages of the animation process. A feature like "quick constraint" from source filmmaker (need to ask for clarification as I am not sure how that feature works) AnimAide anim offset natively in Blender Performance profiler for a rig. Apparently for Goo studios their main bottleneck is rig evaluation because their rigs are so complex. Attaching things to screen space (need to clarify why constraining to the camera doesn't work) Pose Mode proportional editing support Full Body IK solver. For example dragging the hand will eventually move the whole body if you drag far enough. Like a ragdoll in a way. World Space breakdowner
     Like  Bookmark
  • This document has moved to Blender's technical documentation.
     Like  Bookmark
  • Workshop Part 1: Brainstorm/identify use cases, applications, and corresponding workflows. Nathan made already a document with use cases, workflow and potential solutions. This can be added later to the notes. Sybren has an extra use case: Using a walkcycle and creating an offset on a separate layer. Rik mentioned that some of the proposed use cases by Nathan might be unrealistic, but that's for later. First we try to figure out the wide view of what is possible with Layered actions, rather than narrowing down the actual use cases.
     Like  Bookmark
  • Add an option to disable the backward-compatible Action API in RNA, so that add-on code can be tested to not silently "just work" because of that API. FCurve "error" line: if two Objects use the same slot, and one Object doesn't have the animated properties, no error is shown. https://freebirdxr.com/ GeoNodes manipulator should auto-key! F-Curves are named after socket names, not the input name you animated. Probably best to add an ability to set label, and if unset default to current RNA-resolving behaviour. Option: show only keyed bones Operator: select keys by type (#129376) Flamenco: add preference for BAT temp dir Action Asset support: (#129381)Blending of dragged-in multi-frame Actions Inserting keys into already-assigned Action
     Like  Bookmark
  • Active layer concept. For anything that gets keyed keys go into active layer. Active layer is per action. If multiple objects get keyed and they have different actions they recieve keys in active layers of respective actions. Do we define need active (last selected) to be what gets keyed, or special property on layers that tells Blender that this is what should get keys (Chris) Maybe it can be looked at later when people have worked with it, maybe depends on how people use layers, for what purpose (Falk) Scenario 1: Active layer, keys just go there Scenario 2: like auto-keying's available channels only. this layer is already animating this character, put characters keys always there (implicit) --- Sybren thinks this should be a mode anyway. Scenario 3: explicitly binding characters to layers even before keying, and Blender always puts keys there. --- This can be done later, or not at all if we dont want it. But not for initial version. --- Falk suggests keeping this is mind during development, to make working on it later easier.
     Like  Bookmark
  • Schedule 9:30 : Doors open at Blender HQ. Maybe also earlier, but Sybren will make sure he's there at 9:30. 10:00 : Start of the workshop. It'll be in the meeting room on the right when you enter. Introduce our workshop approach (based on lessons from the previous workshop). Attitude towards gut feelings Topic Stack / "Stack it!" / silent
     Like  Bookmark
  • Camera dolly zoom Setup : - Junk Shop scene Camera far away & zoomed to 90 mm on frame 10. Action editor (no Action assigned yet) visible in bottom. Properties Editor shows camera data, with Animation panel visible & expanded Enable Screencast Keys add-on Video
     Like  Bookmark
  • A list of issues discovered while testing slotted actions with addons, production files, etc. after taking them out of experimental: #128889: WIP: Anim: Remove 'Slotted Actions' experimental flag General Poking [x] Inserting keys (that create new fcurves) isn't auto-creating the channel groups like it should. (#128891)Fixed! Addon Testing ✅ Camera Shakify:The code that assigns the action to the action constraints no longer works, breaking the addon. This is a twofold issue:Just in general, assigning an action with one slot with an unspecified id_type doesn't auto-assign the slot like it should. Camera Shakify has a workaround for a (now fixed) bug in Blender, and that work-around sets the id_type of the slot before attempting to assign to the action constraint.
     Like  Bookmark
  • This is the work doc for our presentation at Blender Conference. Slides can be separated with ---, that should make things compatible with RevealJS later. A New Animation System Progress Report Christoph Lendenfeld / Nathan Vegdahl / Sybren Stüvel The Dream Focusing Down
     Like  Bookmark
  • WIP PR: https://projects.blender.org/blender/blender/pulls/125500/files PR 1 - small refactor [x] Need to expose EvaluationResult and evaluate_action() as public, for use in the NLA system. PR 2 - push down and adding strips [x] DNA_anim_types.h NlaStrip type needs act_slot_handle to accompany act.[x] Needs to be exposed to RNA. [x] Needs to be added to the Strip properties UI. [x] Add to slot users.
     Like  Bookmark
  • Add Action + Action Slot selectors to various Property Editor tabs. This follows the pattern established in f917b60036976a2fe2e7f990e171f20cb502a261. [x] Armature [ ] CacheFile needs discussion, currently interface is part of Modifier stack. [x] Curve[x] + Shapekey [x] Curves [x] Empty properties are on the Object.
     Like  Bookmark
  • Brainstorming ideas to work with the new layered animation datablock. There is no difficulty rating, but based on the technical considerations it might be possible to see which operators will be tricky. Merge actions Merge two or more actions into one, preserving all animation. Technical Aspects With the initial implementation of baklava where no layers and strips are supported, those should be merged. If the action contains more than 1 layer and 1 infinite strip, this cannot be done reliably. Instead layers should just be moved without modification. At that stage we will need to support merging strips and layers. Slots need to be checked for name clashes and handle clashes. Which action the data is moved into is determined by the user. Can be via drag and drop or the active object.
     Like  Bookmark
  • :::warning This is a draft, real thing is at #124399: RNA APIs for Action and AnimData ::: This is a sketch of what the RNA APIs are like, for assigning and managing actions and slots. Symbol Meaning ⭕
     Like  Bookmark
  • We've been struggling as a team to decide on a final name for what we have most recently been calling "Bindings". Previous names we've used are "Slots" and "Outputs". We have now returned to the original name "Slots". This document is a summary of the names we seriously considered and their discussed pros/cons, as well as why we ultimately landed back on "Slots". This document assumes that the reader already understands the new "Baklava" animation data model, and what part of it is being discussed here. Whiteboard From the Discussion bindings_naming_discussion ❌ Bindings Pros: : - It's vague and non-specific with respect to the what the thing actually is. This is good in terms of potentially having a "blank slate" term, which we can imbue with our own meaning.
     Like  Bookmark