Graph Editor: (Auto-)Focusing Channels #43933
Labels
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
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
13 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#43933
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Graph Editor: (Auto-)Focusing Channels
There were requests about having an option to automatically focus the graph editor view on channel selection. That basically means two things would happen when a channel is selected:
Now the question is how should that work and look UI-wise? Decision was already made to split the two actions into two different options/functions. Still unclear is how the user should activate them. E.g.: Using checkboxes (which gives a modal behaviour), using shortcuts, using buttons, ...
In D1128, a first implementation was done, using a single checkbox to enable both options:
(Previous discussions about this can be found in D1128)
Changed status to: 'Open'
Added subscribers: @cessen, @BassamKurdali, @fahr, @TodorImreorov
well so far we have two ex Maya, now blender animators (me and Fahr) trying to convince two Blender developer/animators (Cessen and bassamk) that if the feature is not implemented as a workflow mode, it will loose a lot of it's convenience and usability.
It seems like the argument is mostly on the "hide unselected channels" part of the feature and how that is being triggered.
Their stance on the subject is that:
Our stance is:
In the last discussion at least it seems that we came to the conclusion that:
All in all it is best to read all the comments at the initial implementation here: https://developer.blender.org/D1128
Keep in mind that this is an alternate way of working with curves in the graph editor. A separate mode, if you will. There are many other ways to work with curves in other graph editors I've seen. I've seen a mode where all the channels you select get stacked on top of each other in the editor so you can compare them side-by-side or vertaically stacked without any overlap. If such a feature wants to be implemented into the graph editor someday, what makes more sense? Another hotkey combination or another toggle switch to a different mode in the menu?
The view menu can easily be de-cluttered with a little consolidation. We can have various channel "modes" be in their own nested directory inside the view menu.
Being able to switch between these modes makes Blender's graph editor more flexible and better for dealing with common and uncommon challenges in working with and managing curves. There doesn't have to be a "one-size-fits-all" method of working with curves, since not all challenges are the same.
Having selectable modes that the user can choose from also allows for further expansion down the road, as we now have a nested directory that has room for more modes if someone feels it would be helpful.
The graph editor ALREADY DOES THIS by the way. It has many toggle options for different behaviors (like making unselected curves hide their keyframes) and they are very welcome options. Not once have I wished to not have these features because it makes the menu look cluttered.
why not have it both ways ? :)
As two modes that can be toggled on off and as a modifier key you can hold to get the functionality in an alternative way. The ideas dont seem to clash with each other.
Added subscriber: @koilz
Based on the ideas ive added some proposals, which could be implemented.
Its up to individual developers to add consent to implement the proposals, or give feedback if the proposals are not ready for implementation.
Proposal 1
Add 2 options to the graph editor View Menu.
1: Auto Focus Channels (Automatically focus to the selected channel fcurve(s) when selected).
2: Auto Hide Channels (Automatically hide unselected channel fcurves when channels are selected).
Add 2 mouse and keyboard features to the graph editor channels region.
1: If Auto Focus Channels enabled, LMB a channel name to automatically focus to the active or selected channel fcurve(s) when selected.
2: If Auto Hide Channels enabled, LMB a channel name to automatically hide unselected channel fcurves.
Proposal 2
Add 1 option to the graph editor View Menu.
1: Auto Hide Channels (Automatically hide unselected channel fcurves when channels are selected).
Add 2 mouse and keyboard features to the graph editor channels region.
1: Ctrl+LMB a channel name to automatically focus to the active or selected channel fcurve(s) when selected.
2: If Auto Hide Channels enabled, Ctrl+LMB a channel name to automatically hide unselected channel fcurves.
Proposal 3
Add 2 mouse and keyboard features to the graph editor channels region.
1: Ctrl+LMB a channel name to automatically focus to the active or selected channel fcurve(s) when selected.
2: Ctrl+LMB one of the channel eye icons to automatically hide unselected channel fcurves, this wouldnt change the state of the eye icon pressed, picture for clarity.
Proposal 1 sounds great to me. Fweeb at blenderartist had a great way of suggesting having it that way:
To me (and Fahr) it is important to have the option of these to be automatic. Meaning view options that change the graph editor's behavior - not having to hold a key at all.
But it would also be great to have the alternative way of triggering these features when these auto behaviors are not enabled- and that is of course as Cessen and Bassamk suggested and also Koliz in Proposal 1
For proposal 3, when not having the auto behaviors available, I see that it is somewhat inconvenient, not only because one needs to hold the CTRL key, but also the need to do it twice (once on the channels name and again on their view toggles)
Added subscriber: @bned
Hello,
I just read the whole discussion and imho this feature would add a nice workflow boost to a lot of people. It saves a lot of key presses, eliminates constant zooming to find what you need and at the end of the day - a lot of time.The way I see it this feature does not hinder any existing functionality and it is giving a useful alternative workflow with a minimum amount of changes.
For me the argument that any menu in blender is too cluttered is not a valid one, especially when it comes to useful functionality. The menus are there to hold such features and not to look pretty. Plus the features in menus should not be chosen on the principle first come first serve.
Adding multiple modifier keys imo is really bad habit in blender and it leads to things like - Ctrl+Alt+Shift+C to simply change the location of the origin - a relatively often used task. I have a feeling that if there were more modifier keys on the keyboard blender would have used them all and forced the user to press 12 keys at the same time.
I hope the patch that Severin already made would be iterated upon and get into trunk asap.
Good luck to everybody involved
D1128#20107
From this comment, bassamk wanted the options to be more visible, easier to switch.
D1128#20223
From this comment Severin proposed adding the options to the View Properties panel of the properties region.
Another way could be to add two icon options to the header region, something like this picture.
This is a very nice mockup. :)
I am OK with that. For as long as the functionality works automatically as an operation mode that can be kept switched on/off, it doesn't matter that much where those switches are - be it two visible button toggles or two new entries in the view menu.
I actually like the buttons more. Just hope that they don't meet opposition from blender devs who might claim that the graph editor bar is already cluttered.
Im just a blender user by the way, I would be happy with any of the proposals.
Some notes.
On the other task, some of the developers didnt like the feature to be on LMB for the channel name without an option to switch it off, or a modifier key, or by pressing some other widget.
I think where to add the options can apply to any proposal with options, probably be best to ask the developers.
..
Another proposal could be to add 1 option for both features to work on LMB, Auto Focus and Hide, so proposal 4.
Proposal 4
Add 1 option to the graph editor.
1: Auto Focus and Hide (LMB a channel name to automatically focus to the selected channel fcurve(s), and hide the unselectd channel furve(s)).
..
Proposal 1, 2, and 4, can do the two features at the same time.
Proposal 2 does require a modifier key, Ctrl+LMB or double click for example, this is because Auto Focus has no option.
I can see why people like this feature, it makes curve editing more direct, quicker to zoom to and edit the desired curve, without other curves being in the way.
Ive added two more proposal without options which can do both features at the same time.
Seems we cant really continue without feedback from cessen and bassamk.
@cessen @BassamKurdali
Could we have some feedback on the proposals and ideas please.
If there are any other ideas or proposals, they would be nice to read also.
If we can agree on a proposal, hopefully developers can implement one of them.
..
This is a list of the proposals.
Proposal 1
Add 2 options to the graph editor.
1: Auto Focus Channels, LMB or Shift+LMB the channel names to automatically focus to the selected channel fcurves when selected.
2: Auto Hide Channels, LMB or Shift+LMB the channel names to automatically hide unselected channel fcurves when selected.
Proposal 2
Add 1 mouse and keyboard features to the graph editor channels region.
1: Ctrl+LMB the channel names to automatically focus to the selected channel fcurves.
Add 1 option to the graph editor.
1: Auto Hide Channels, Ctrl+LMB the channel names to automatically hide unselected channel fcurves.
Proposal 3
Add 2 mouse and keyboard features to the graph editor channels region.
1: Ctrl+LMB the channel names to automatically focus to the selected channel fcurves.
2: Ctrl+LMB the channel eye icons to automatically hide unselected channel fcurves, this wouldnt change the state of the eye icon pressed.
Proposal 4
Add 1 option to the graph editor.
1: Auto Focus and Hide, LMB or Shift+LMB the channel names to automatically focus to the selected channel fcurves, and hide the unselectd channel furves, when the channels are selected.
Proposal 5
Add 1 mouse and keyboard feature to the graph editor channels region.
2: Auto Focus and Hide, Ctrl+LMB the channel names to automatically focus to the selected channel fcurves, and hide unselected channel fcurves.
Proposal 6
Add 2 mouse and keyboard feature to the graph editor channels region.
1: Auto Focus Channels, Ctrl+LMB the channel names to automatically focus to the selected channel fcurves.
2: Auto Focus and Hide, Ctrl+Shift+LMB the channel names to automatically focus to the selected channel fcurves, and hide unselected channel fcurves.
Sorry for taking so long to get back to this. I was in the middle of moving, so was quite busy...
My latest proposal from the other thread seems to be missing: identical behavior to the original patch, except you click on the visibility toggle (eye icon) instead of on the channel name. I think I was perhaps unclear in my description last time, and people thought I was re-proposing my first proposal.
The benefit of this approach is it keeps visibility-related functionality on the visibility toggle instead of tying it to selection, and it still gives the single-click (no modifier key) access that people coming from Maya seem to want.
Are there any objections to this proposal? I feel like this is a reasonable compromise: it doesn't muddle the distinction between visibility and selection (my primary objection to the original proposed behavior), but you still have the desired single-click workflow from Maya et al. (seemingly the primary expressed concern of the people who want this).
I am ok to have it - as Cessen suggested above - it seems more consistent that way too.
Would it be ok if we also split it into two (features) toggles (switched on/off in the view menu)?
That way it would be more flexible for users.
Should these be renamed to something else or this is ok?
Fahr> this seems like a good middle ground. What do you think?
Yeah, I think splitting it into two options is fine. As I said before, I think the graph editor is due for a spring cleaning, so we can re-examine things then, with better knowledge of what options people actually use, and how people are generally working.
But just to make sure we're on the same page: you're still using the terms "selected" and "unselected". The intent of my proposal is for it to not influence selection, just visibility. So it's rather "visible" and "not visible". It specifically only changing the behavior of what happens when you click on the eye icon.
Yes, without actually selecting the channels.
But the end result is the same as the initial patch , as you said - just instead of actually selecting the channel names, the user is selecting their visibility toggles.
So in doing so, with these two enabled, the curves of these channel visibility toggles are displayed and auto-focused automatically. All the curves of other channels get auto-hidden.
So it is indeed a visibility feature that has little to do with actual channel selection, but more with curves visibility.
In this case they need to be renamed to something that makes more sense:
We need a test build to test the functionality and evaluate if it works well. In the initial patch I had a few notes on things like the way channel containers should also affect their children.
Also we need to consider what to do when you want to skip selection in this solo visibility mode.
For example you would be able to click drag on channel A,B and C. But what happens when you want channel A and C. We need to have a modifier key that lets us do a shift-click multiple selection behavior on visibility toggles.
Im ok with this proposal but I do see a problem/limitation.
If you make the features based on visibility, i.e. Auto Focus to Visible FCurves, the user can only focus to the set of visible curves.
If more than one curve is visible, there is no way to auto focus to one of the visible curves.
Im not sure if I fully understand the proposal.
Ive added a proposal based on ideas above.
From what I gather cessen wanted the same functionality as the original patch, but using the channel visibility options (eye icons).
To make this possible, the way the channel visibility options are set/cleared is changed from toggle on/off to select/selectmore.
Proposal 7
Add 1 option to the graph editor.
1: Auto Focus to Visible FCurves, change the way the channel eye icons are set/cleared, from toggle on/off to select/shift+selectmore, when the channel eye icons are selected (LMB, Shift+LMB) the graph editor will focus to the visible fcurves.
@koliz:
Unless I'm misunderstanding what you're getting at, I think that's actually even more of a problem with the original patch's behavior. One of the benefits of dissociating the auto-solo/auto-focus behavior from selection is that it leaves us open to be able to select channels and hit a hotkey to focus them, without altering visibility. You can't do that when selection affects visibility, as in the patch.
This is basically what I intended with my latest proposal: when this mode is enabled, the visibility toggles get selection-like behavior, exactly as you describe. So yes, I think we're on the same page now! :-)
I understand, that makes more sense.
Its good to know the main logic of the proposal is correct, I guess it could be improved sometime.
Thanks for posting.
I think we've come to a agreement for a design. What's left now is to test it out in another patch+test build.
That is unless someone else sees an issue with it. I was at first concerned that having the view toggles instead of channels would add a limitation, but Cessen's last post convinced me it will be alright:
Cant wait to try out a build with the new design proposal! :)
Heres my views on the proposals.
Proposal 1
Seems ok, use options to change what happens when pressing LMB on the channel names.
Proposal 2
Problem: Options to enable features on Ctrl+LMB, seems odd.
Proposal 3
Problem: Features dont work at the same time.
Proposal 4
Problem: Cant focus to one visible curve without hiding others.
Proposal 5
Problem: Cant focus to one visible curve without hiding others.
Proposal 6
Seems ok, use Ctrl+LMB to focus to selected, use Ctrl+Shift+LMB to focus to selected and hide unselected, no options required.
Proposal 7
Seems ok, requires a way to focus to one visible curve without hiding others.
Cessen proposed to add a normal operator with a hotkey, F Key for example, to focus to selected curves.
I'm ok with Cessen's proposal it as long as the goals are achieved, doesn't have to use modifier keys or increase the number of clicks and it allows development on the feature to continue.
if it poses any serious complications to implement as two separate toggle features, I propose to have these two as a single feature - the way it was in the original patch. They seem to work well hand in hand and I would personally love to have them both on all the time.
Speaking of which, a user at BA suggested that the auto-focus toggle state is saved in the blend file, so as not to have to re-enable it every time we reopen the file.
We really want this feature to get in and hope that it's development will continue asap :)
I brought this up again at blender artist:
http://blenderartists.org/forum/showthread.php?376288-Unnecessary-workflow-slowdowns-and-how-they-could-be-improved/page2
After thinking about it some more, I think clicking on the eyeballs is better than nothing, but it is still less good than having the auto-hide curves action be triggered by just selecting channels.
Why?
You are making the animator do two steps in order to get both features.
Imagine doing this for 10 channels. 2 steps on 10 channels = 20 clicks.
In maya this is done in one step when these toggles are on and is a default behavior.
1 step for 10 channels = 10 clicks
what is more important - fast workflow or design consistency?
Perhaps have both actions be triggered by clicking on the eyeball icons?
@TodorImreorov
I think that's not how the agreed proposal works. The idea is that you can tie both visibility and auto-focus to the eye icon, so you click it once and you get both behaviors. And then you still have selection as an orthogonal thing you can do.
Unless you meant something else by "normalized"?
Ah I see, sorry I misunderstood it.
Having both be optionally triggered by the eyeball icons sounds like it would work just fine. :)
It would be great to have a good test of this design before it goes to trunk.
Do you guys think the toggles should be in the menu, or should they be in the form of buttons?
In case they are buttons, I think it would be more intuitive to find them above the channels list, rather than the bottom panel.

Actually it would make more sense for other buttons to be there too. Here I made a mockup a while ago:
With the new buttons I guess it might look like this:

wiki entry here
http://wiki.blender.org/index.php/Dev:Ref/Proposals/UI/Better_gui_for_animators#Graph_editor-_Better_Layout.21
I guess this should be for another design task- for the UI team. Right now all we want is the actual functionality :)
Looks neat, I think the second varient where channel buttons are above the channels is more obvious; splitting channel specific settings there is much better than everything in the header.
Added subscriber: @AndersonOmori
Any progress on this? I hope it's not abandoned :)
It is not abandoned. It's still one of many things on my todo list ;)
I'd still like to work on this at some point again, but I totally lost track about the discussion. Could somebody recap the discussion results? Just so I don't have to fight myself through the wall of text here and in D1128 :)
The two main original features were:
1: Show only selected and hide unselected channels when selecting a channel name.
2: Auto focus to the curve when selecting the channel name (or names) for the curve(s).
The design discussion was, how the user should enable and use these features.
For me as a user, proposals 1 and 6 seemed to be the best proposals.
Proposal 1
Add 2 options to the graph editor, to change what LMB does when selecting channel names.
1: Auto Focus Channels, LMB or Shift+LMB the channel names to automatically focus to the selected channel fcurves when selected.
2: Auto Hide Channels, LMB or Shift+LMB the channel names to automatically hide unselected channel fcurves when selected.
Proposal 6
Add 2 mouse and keyboard features to the graph editor channels region.
1: Auto Focus Channels, Ctrl+LMB the channel names to automatically focus to the selected channel fcurves.
2: Auto Focus and Hide, Ctrl+Shift+LMB the channel names to automatically focus to the selected channel fcurves, and hide unselected channel fcurves.
Proposal 7
I think @cessen wanted to keep selecting channel names, and auto focus separate, so it didnt cause conflicts when selecting channel names.
@cessen proposed using the channel visibilty icon for the Auto Focus and Show Only Selected features.
https://developer.blender.org/T43933#296344
Other Ideas
Another idea was, if options/properties were going to be used, for them to be added as icons to the graph editor header regions, so theyre easier/quicker to find and enable.
Another idea was to move the View/Channel Properties to the Channels Region.
https://developer.blender.org/T43933#322827
Added subscriber: @Blendify
This comment was removed by @TodorImreorov
I dont think its simply a user interface change proposal feature. It is a workflow automation feature that other software already has had for years - leading blender in the animation department.
Added subscriber: @nathan-45
@cessen
Do you approve this design:
It seems to solve everyone's concerns.
I thought that it's the best middle ground. I think partly why this is stuck in limbo for a year is the lack of communication here on the design.
This feels very much like bike shedding at this point. User interface discussions has kept this actual animation graph editor FEATURE from being implemented. Meanwhile a lot of other software has had it for years - software you can look for as example of interface presentation.
Removed subscriber: @nathan-45
Added subscriber: @nathan-45
Wrong Nathan I think....
Removed subscriber: @nathan-45
ah sorry, I just copied the name from an earlier comment by @koliz
Added subscriber: @nathan-45
Added subscriber: @dr.sybren
There is no concrete plan/schedule here, so I'm moving this task to the 'Postponed' workboard in favour of the more recent proposal in #68962 (Graph Editor: Link Visible and Selected states).
Having the auto-zoom feature looks pretty nice as well, but IMO we should separate that from the feature proposed in #68962 (Graph Editor: Link Visible and Selected states).
I won't have the time to look into this anytime soon. I'll leave it up to the animation team what to do with the task/proposal.
Added subscriber: @Adam.S
Man, I'm really having a hard time dealing with Blender's Graph editor, it's missing so many quality of life features like this one.
It's shame there is not enough developers to take care of it. it's the bread and butter for the Animators.
probably, it was fulfilled by #104523
There's quite a lot of discussion history here, and I don't want to close this task just because it's old -- there's plenty of gold to be found here.
Could someone go over the discussions, compare things to how Blender currently behaves, and make an overview of proposed changes? That way we have a more concrete picture of what could still be done.
@dr.sybren Yeah, I'll do that. (Especially since I was apparently part of the original discussion! So long ago...) I'll get to it some time next week.
Here's my summary:
1: An option to tie f-curve visibility to channel selection, so that only the f-curves of selected channels are visible.
2: An option to auto-frame the f-curves of channels upon selection.
With 9 years of hindsight, and reading this all afresh, I think I was putting too many eggs in the consistency basket. "A foolish consistency..." and all that. Moreover, in retrospect I think the visibility icon proposal is a little silly, since that's just as worth keeping consistent in its behavior as selection.
Importantly, two options have been added to Blender since this discussion took place that in combination achieve feature 1:
So in short, I think(?) feature 1 is already addressed now. Moreover, it's addressed in a more flexible way than either my proposal or what was originally requested. For example, users can also choose to just make unselected f-curve lines extremely faded instead of completely hidden, which preserves context while keeping the selected f-curves clear and prominent.
As for feature 2, I think it makes sense to implement on-selection auto-framing. It's probably best to split that into two options: vertical auto-frame and horizontal auto-frame. That way animators can enable whatever combination of the two is most useful to their personal workflow. For example, I would find vertical auto-framing useful, but I intentionally zoom into the time range (horizontal) of the part of an animation I'm currently working on, and having that destroyed every time I selected a different channel would be a nightmare for me.