Page MenuHome

Fix Animation Channel Selection Sync
Confirmed, NormalPublicDESIGN

Description

There are several issues with the selection synchronisation mechanism between pose bones (and shader nodes) and animation channels (in the dope sheet etc.). This task aims to provide an improved implementation of this sync to address these reports:

@Hjalti Hjálmarsson (hjalti) mentioned that it's probably better to synchronise less, that is, have the selections more separate. I'll talk with him, @Pablo Fournier (pablico), and @Demeter Dzadik (Mets) in the Blender studio to come up with an initial proposal, which can then be fine-tuned here.

For me the trigger to start working on this was T62463: Skeleton rig with keyframes prevents selection of Shader Nodetree channels in Dope Sheet and Graph Editor; in that situation it's really impossible to select certain channels.

Related Objects

Event Timeline

So here is my take on it:

If i select a bone in the 3D view, the channels should appear in the animation editors (graph editor, dopesheet, etc), unselecting the bone in the 3D view will stop showing the corresponding channels in the animation editors (unless it is set to show everything no matter what the selection is)

Selecting the bone name in the animation editors should not alter the selection in the 3D Viewport, we should call this "highlighting" bone in the animation editors as its not selecting the bone itself just a meaning to do something to that channel in and only in the animation editors. meaning that both selections are synced unidirectionally from viewport to animation editors and not backwards..

Adding an option to sync back from animation editors to 3d view can be useful, it's just not what you want 90% of the time.

Example case
You see a bump in your animation and don't know where its coming from, you can select a few bones look at the curves, and see which one some strange from a far isolating that curve lets you know what that bone is, which you can follow back to the actual bone you want to handle.

If this is unclear, let me know if we can keep on refining this explanation.

Sybren A. Stüvel (sybren) lowered the priority of this task from High to Normal.May 4 2020, 3:57 PM

Tech note: It's the ANIM_sync_animchannels_to_data() that's responsible for doing (at least part of) the selection syncing. It's triggered from the window manager notification system.

Old value = 5
New value = 1
0x00000000057eb4d9 in animchan_sync_fcurve (UNUSED_ac=0x7fffffffd620, ale=0x60800018a228, 
    active_fcurve=0x7fffffffd5e0)
    at blender/source/blender/editors/animation/anim_deps.c:284
284               fcu->flag &= ~FCURVE_ACTIVE;
(gdb) bt
#0  0x00000000057eb4d9 in animchan_sync_fcurve (UNUSED_ac=0x7fffffffd620, ale=0x60800018a228, 
    active_fcurve=0x7fffffffd5e0)
    at blender/source/blender/editors/animation/anim_deps.c:284
#1  0x00000000057eba9c in ANIM_sync_animchannels_to_data (C=0x60d0000932e8)
    at blender/source/blender/editors/animation/anim_deps.c:348
#2  0x0000000006c355a3 in action_refresh (C=0x60d0000932e8, area=0x6100006b4548)
    at blender/source/blender/editors/space_action/space_action.c:790
#3  0x000000000505bb6e in ED_area_do_refresh (C=0x60d0000932e8, area=0x6100006b4548)
    at blender/source/blender/editors/screen/area.c:179
#4  0x0000000002bf4564 in wm_event_do_refresh_wm_and_depsgraph (C=0x60d0000932e8)
    at blender/source/blender/windowmanager/intern/wm_event_system.c:381
#5  0x0000000002bf664a in wm_event_do_notifiers (C=0x60d0000932e8)
    at blender/source/blender/windowmanager/intern/wm_event_system.c:566
#6  0x0000000002be1c73 in WM_main (C=0x60d0000932e8)
    at blender/source/blender/windowmanager/intern/wm.c:486
#7  0x00000000018b0e2b in main (argc=1, argv=0x7fffffffda28)
    at blender/source/creator/creator.c:519
Sybren A. Stüvel (sybren) renamed this task from Fix Animation Channel and Bone Selection Sync to Fix Animation Channel Selection Sync.Oct 16 2020, 10:14 AM
Sybren A. Stüvel (sybren) updated the task description. (Show Details)