The meeting will be on 2024-12-05T17:00:00Z. It is open for everybody interested to join the video call (link below).
People present are referred to by first name for brevity. Others are referred to by full name.
Present: AnimSebs (DillonGoo Studios), Christoph Lendenfeld, Dorothee Dittrich Drew Medina, Nathan Vegdahl, Sybren Stüvel
Links
- Video Call
- A&R Module Meetings calendar for inclusion in your own calendar app
- Previous & next meeting notes
- Issues & Pull Requests
- #module-animation chat channel
- Draft agenda for any upcoming meetings
Opening
- Please raise your hand when you don’t understand things for any reason. The purpose of these meetings is collaboration. It is absolutely fine to ask for explanations.
- There are no recordings of the meeting. This way everybody is free to say or show anything they want.
Since the Last Meeting / Announcements
- Quality Project started Blender-wide
- Sergey’s presentation (YouTube)
- Animation & Rigging planning has a list of “desirables”, will be picked up on a personal “I’d like to work on this” basis.
- Main focus is getting Slotted Actions working well.
Landed
Names are from the Git log. This list is limited to functional improvements & bugfixes.
Blender
- aa83738d444: Anim: change parameters of
slots.new()
RNA function (Nathan Vegdahl) - be921b8ddb0: Anim: start slot handles at a high number (Sybren A. Stüvel)
- 2536ddac0df: Fix #123875: FCurve noise modifier producing values out of range (Christoph Lendenfeld)
- 839f9ba9487: Fix #130053: ALT+H in weight paint not unhiding bones (Christoph Lendenfeld)
- 6d4cd2dc960: Fix #130061: Pose Sliding with no bones selected resets overlay flags (Christoph Lendenfeld)
- 81beebe4b82: Fix #131299: Grease Pencil: Moving keyframes doesn’t update viewport (Sybren A. Stüvel)
Technical Documentation
- 0ae950fa: 4.4: Anim - Update release notes (Christoph Lendenfeld)
User Manual
- 971281ac7: Anim: Add entry for bone collection symmetrizing (Christoph Lendenfeld)
- ccd869685: Anim: Update F-Curve noise modifier description (Christoph Lendenfeld)
Ongoing Work
- High Prio bugs:
- #131305: Regression playing animation after BVH import in 4.4x (fix available, but Nathan & Sybren are trying to make it not even necessary)
- Christoph:
- Christoph’s weekly report
- #130987: WIP: pose library updates prototype Build is now ready for testing. Working on Slot implementation next.
- A few bugfixes
- Nathan:
- Nathan’s weekly report
- Updated #131102: Remove Timeline Editor based on feedback and resulting discussion.
- Had a bunch of misc discussions with Sybren and others about slot auto-assignment and related topics.
- Working on improving the documentation of the slotted actions C++ API: #131318: WIP: Cleanup: improve documentation of Action C++ APIs
- Will follow that up with other misc cleanups found during that process.
- Also going to work on developer/technical documentation, now that things are pretty much chrystalised.
- Sybren:
- Sybren’s weekly report
- #131425: Anim: Always name the slot “Legacy Slot” when versioning legacy Actions, has to land paired with the next PR, as it makes some bugs in the slot auto-assignment logic more likely to occur (and the next PR + another upcoming one fixes those).
- #131426: WIP: Anim: handle library overrides when versioning legacy Actions
- Deployed Fifids the chatbot to
#animation-module
.- Announces meetings 8h, 1h, and 10m before the meeting.
- Responds to
!help
,!cal
,!meeting
!cal location
and!meeting location
also works & remembers your location (list of locations)- Developed in private time, help is appreciated.
- Sybren:
@room
to notify people? - Nathan: too noisy to do always (Christoph agrees), but maybe just at the 10m one?
- Animator meeting at Blender HQ, with Rik Schutte, Hjalti Hjálmarsson, and Pablo Fournier:
- Discussed Blender’s behaviour for auto-assignment of slots when switching Actions.
- Current behaviour is to pick the slot:
- with the same name as the last-assigned slot, or
- with the same name as the data-block.
- This behaviour fails to auto-select a slot when different Actions have different slot names. This is very common when opening an old file with one assigned Action and a bunch of used Actions.
- In that case, when upgrading them to slotted Actions, Blender will use the name of whatever is using the Action to name the slot. If there is no user, it names it just “Slot”.
- This means that different Actions will have different slot names, even when they are meant to animate the same object.
- The proposed solution: when upgrading legacy Actions, always name the slots “Legacy Slot” regardless of their users. Switching between such Actions will just work.
- Sybren will work on this.
Slot Assignment & Legacy Python code
Nathan and Sybren were discussing slot auto-assignment, i.e. which slot gets assigned automatically by Blender when you assign an Action. There is a conflict here between the Python API (should remain backward-compatible) and desired workflows for animators (slotted Actions are different than legacy Actions, and thus should sometimes behave differently).
The image are Sybren’s scribbles on his iPad, to illustrate the flow of Python code. White represents the behaviour of Blender 4.3. Different colours are potential additions / changes for Blender 4.4.
Action Assignment First
The scenario: create an Action, then assign it, then start adding F-Curves.
The Purple alternative seems the most promising one: when a slot is created by the legacy Action API (so for example action.fcurves.new()
), that slot can be assigned to every data-block that has this Action assigned.
- Christoph & Nathan: that could work, indeed.
- Nathan: Only do this when the legacy API for creating curves creates the first slot for the Action. By definition that means that none of its users have an Action Slot assigned yet.
F-Curve Creation First
The scenario: create an Action, add F-Curves, then assign the Action to an object, then to another object.
The Green alternative seems the most promising, as it allows us to retain backward compatibility of the Python API without breaking the slotted actions workflow. But this has a big BUT: it differentiates between Action assignment through Python and through the Action/ID selector. This should be technically possible, but has to be discussed with other Blender developers to see if this is considered to be too janky.
Nathan: adds another possible alternative: make the “Legacy Slot” even more special. Make selection of that slot not update the “last used slot name”. If Blender always auto-selects that slot, it will make it behave like legacy Actions without interfering with how slotted Actions work. It would also make the Action hard-limited to 1 slot only.
- Sybren: it would then still be impossible to assign to a 2nd object and not modify that object (i.e. this would overwrite
Object B
’s properties withObject A
’s animation) - Nathan: true, but the Action was effectively created as a legacy Action, and that is the same behaviour as with legacy Actions. Not sure if this is good. But it’s a possibility.
- Sybren: I would like 4.4 to have slotted Actions just work as slotted Actions, so ideally avoid having this dual behaviour.
- Nathan: regardless of what we choose, any handling of the name “Legacy Slot” will have to be dropped in 5.0 anyway. We have to think about what we can do in the 8 months between 4.4 and 5.0 releases.
- Nathan: We have to decide “where to put the jank”, because it’s going to be janky somewhere.
- Sybren: Shovel the jank more towards developers. People should be able to work for a long time with the 4.5 LTS release.
Next Meeting
The next meeting will be on Thursday 2024-12-12T17:00:00Z. Again it will be open for everybody who’s interested. The provisionary meeting agenda will be updated before the meeting.