Drivers of sub-ID properties do not get removed along with the sub-ID #110650

Open
opened 2023-07-31 12:46:04 +02:00 by Demeter Dzadik · 5 comments
Member

By "Sub-ID" I mean things like Modifiers, Constraints (bone & object), custom properties, shape keys, bones, VSE strips, etc. Not sure how to get a complete list of these types of things.

When one of these things, such as a modifier, is removed, drivers on its driven properties are not removed. This makes it easy to leave behind broken drivers that now target nothing. These can be cleared up in the Driver Editor UI fairly easily, but the fact that we must do so is annoying. Experienced users end up learning that you can't just remove a modifier or constraint without removing its drivers first - Just to save you a trip to the Driver Editor.

Forgetfulness in this habit results in console warnings, which in a production environment trickle down from assets to shot files, and contribute to the users' sense of "console warnings aren't important, I will ignore them".

I always thought this was a known issue but @Sergey told me it's fixable and that I should make a report. Here ya go!

This would be a really, really welcome improvement for the studio and probably the whole world.

By "Sub-ID" I mean things like Modifiers, Constraints (bone & object), custom properties, shape keys, bones, VSE strips, etc. Not sure how to get a complete list of these types of things. When one of these things, such as a modifier, is removed, drivers on its driven properties are not removed. This makes it easy to leave behind broken drivers that now target nothing. These can be cleared up in the Driver Editor UI fairly easily, but the fact that we must do so is annoying. Experienced users end up learning that you can't just remove a modifier or constraint without removing its drivers first - Just to save you a trip to the Driver Editor. Forgetfulness in this habit results in console warnings, which in a production environment trickle down from assets to shot files, and contribute to the users' sense of "console warnings aren't important, I will ignore them". I always thought this was a known issue but @Sergey told me it's fixable and that I should make a report. Here ya go! This would be a really, really welcome improvement for the studio and probably the whole world.
Demeter Dzadik added the
Type
Report
Priority
Normal
Status
Needs Triage
labels 2023-07-31 12:46:05 +02:00
Member

Just noting that usually reports like this one were closed in the past.

Not saying that things change (as-in what is considered a bug and what is not), but for reference (from e.g. #89679):

I can confirm, the persistence of animation data is by design. Might be considered a bit of a sloppy design with some downsides (corroborated by many "invalid driver" warnings on the console whenever you open a Blender Animation Studio anim file), but it also has upsides. Not losing animation data is one, and the ability to swap out "animated things" with other "things".

I think @dr.sybren would also need to comment here

@ChengduLittleA : not sure why this was put on the Modeling module table?

Just noting that usually reports like this one were closed in the past. Not saying that things change (as-in what is considered a bug and what is not), but for reference (from e.g. #89679): > I can confirm, the persistence of animation data is by design. Might be considered a bit of a sloppy design with some downsides (corroborated by many "invalid driver" warnings on the console whenever you open a Blender Animation Studio anim file), but it also has upsides. Not losing animation data is one, and the ability to swap out "animated things" with other "things". I think @dr.sybren would also need to comment here @ChengduLittleA : not sure why this was put on the `Modeling` module table?
Member

@lichtwerk ehhh not sure... Cause I don't think any of them fit. I probably think constraint is a kind of structural property of the movement system 😅 thanks for correcting

@lichtwerk ehhh not sure... Cause I don't think any of them fit. I probably think constraint is a kind of structural property of the movement system 😅 thanks for correcting

I am not sure why this behavior is considered to be "by design". Is this aspect of the design explained somewhere? We do such f-curve removal for motion tracking tracks and sequencer strips, for example.
If a design is such that removal of such data should preserve f-curves, then those cases are to be changed (although, it will mean quite serious usability regression, in my opinion).
If the design allows such f-curvs to be removed, then I do not see an issue of covering more cases which leave f-curve data behind.

To me it seems like a bug on user-level. It is a bit annoying to get solved on a code side (since such operations are not really centralized), and might not be top-of-the-priority list due to the on-going animation data re-resign, but a bug nevertheless.

I am not sure why this behavior is considered to be "by design". Is this aspect of the design explained somewhere? We do such f-curve removal for motion tracking tracks and sequencer strips, for example. If a design is such that removal of such data should preserve f-curves, then those cases are to be changed (although, it will mean quite serious usability regression, in my opinion). If the design allows such f-curvs to be removed, then I do not see an issue of covering more cases which leave f-curve data behind. To me it seems like a bug on user-level. It is a bit annoying to get solved on a code side (since such operations are not really centralized), and might not be top-of-the-priority list due to the on-going animation data re-resign, but a bug nevertheless.

I am not sure why this behavior is considered to be "by design".

I wish I had written down where I found the relevant code :/ and I can't find anything in the code that says "do not delete drivers here because X".

Bug or not, I do feel that this driver situation is a mess, and it would be good to clean that up.

> I am not sure why this behavior is considered to be "by design". I wish I had written down where I found the relevant code :/ and I can't find anything in the code that says "do not delete drivers here because X". Bug or not, I do feel that this driver situation is a mess, and it would be good to clean that up.

This was discussed in the last animation & rigging module meeting, and it was decided to indeed address this issue.

This was discussed in the [last animation & rigging module meeting](https://devtalk.blender.org/t/2023-10-17-animation-rigging/31647), and it was decided to indeed address this issue.
Sybren A. Stüvel added
Status
Confirmed
Type
Bug
and removed
Status
Needs Info from Developers
Type
Report
labels 2023-10-19 12:22:16 +02: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 project
No Assignees
5 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#110650
No description provided.