Page MenuHome

Per viewport transform gizmo settings for select tools, remove transform tool
Closed, ResolvedPublic

Description

  • Remove Transform tool, keep only individual Move, Rotate, Scale as tools.
  • When any of the Select tools are active, have icon toggles to show [Move] [Rotate] [Scale] gizmos.
  • These are stored per 3D viewport.
  • Other tools may expose these as well if the gizmos don't conflict, to be investigated.

Details

Type
To Do

Event Timeline

Brecht Van Lommel (brecht) triaged this task as Confirmed, High priority.
Brecht Van Lommel (brecht) renamed this task from Per viewport transform gizmo settings for select tool to Per viewport transform gizmo settings for select tools, remove transform tool.Apr 12 2019, 8:41 AM

While these topics aren't in conflict w/ the items listed in the task, I'd like to generalize the solution.

  • Camera FOV/DOF, Lamp-spot-size etc are a category of gizmo's (currently called "Active Object" in the overlay).

    Note: we could rename these to "Context Gizmo"... or pick some other name.
  • The transform gizmo can be considered in the same category.
  • We may have many more gizmos like this (camera shift, light radius/custom-distance/clip-range... etc).
  • These will have toggles (most off by default).

Even ignoring the transform tool we will eventually want something like this AFAICS.

The main difference w/ the proposal here is I'm not keen on linking these to the select tools, someone might have annotate enabled and still want to make a tweak using a gizmo.

I'd rather enable gizmo's unless the tool uses a gizmo, then we can resolve that conflict by either making the tool gizmo always override the 'Active Object' gizmo, or tools could internally do this on a case-by-case basis (since there are some examples such as loop-select and ruler that don't conflict).

I think the important thing is that the transform gizmos have icons in the tool settings bar, not hidden in a popover. They are also closely related to the orientation settings so make some sense next to those.

The other types of gizmos are not something you would toggle as often, and I'm not sure individually controlling those is important to users, especially not for every 3D viewport.

For something like the Annotate tool the gizmos can also be in the way of drawing, I would be careful about enabling them in too many cases because manually toggling them on/off when switching tools is inefficient.

This is a good issue to address but this is the wrong ways to do it in my opinion.

We already have a gigantic button inside the viewport to enable move, rotate, scale and transform, in the toolbar. Adding extra buttons to do the same I think is both redundant and confusing, and will clutter up the UI unnecessarily.

Instead, all that’s needed to solve the issue of selecting while transform tool is enabled, is to slightly change the default behavior of the transform tool to make it so dragging performs box selections. That’s it. And adding a whole other gizmo toggling system is not needed

Awesome! I've been waiting for this since the introduction of the selection tools. 👍

Summerising discussion over lunch which @William Reynish (billreynish) & @Brecht Van Lommel (brecht).

  • Add popover to control gizmos (Light direction, Camera FOV, b-bone handles ... etc).
  • Remove transform tool (keep locate/rotate/scale tools).
  • Don't show the gizmos in the popup when the tool uses a gizmo.

    (we can co-exist some gizmos but thats an open topic for later).

The outcome is users who want to use per-viewport gizmos can enable them, new users can use the tools.

Here's how we think this will look:

So If I'm using an active tool that has a custom gizmo like the extrude tool for example, it will override the transform gizmos, right?
Then if I'm running something like the inset tool which doesn't have a custom gizmo, the transform gizmo will show up?
How's the priority of this?

@ThinkingPolygons (ThinkingPolygons) right, tool overrides the "active object" gizmo.

In the future we could make some co-exist but thats not so high priority.

Update, with categorisation;

This comment was removed by -- (zgorg).
This comment was removed by -- (zgorg).

I think the Move / Rotate / Scale buttons should be checkboxes like the mockup, so you can click and drag vertically to enable or disable multiple gizmos. Maybe also put them at the top since I think you'd switch these much more often than Navigation or Active Tools gizmos.

I think the Move / Rotate / Scale buttons should be checkboxes like the mockup, so you can click and drag vertically to enable or disable multiple gizmos. Maybe also put them at the top since I think you'd switch these much more often than Navigation or Active Tools gizmos.

Yeah I listed related problems in: https://developer.blender.org/T63580 as the current implementation is a little buggy.

Do we still need the Orientation override in the Move / Rotate / Scale tools? I vaguely remember this being added for animators at the Blender Studio, but if they use the gizmos instead there is no point.

Little issue: Widget tooltip shows briefly when tweaking using the Select tool + transform gizmo enabled. It seems like the default keymap needs adjustments.

Also, it's really needed to show tooltips on the transform gizmo widgets? Seems overkill to me...

The gizmo button in sculpt and paint modes is quite lonely in the center. Only reason to have it is the navigate gizmo I think, easiest would be to just the button. If it has to be visible, irrelevant buttons in the popover should be greyed out.

The gizmo button in sculpt and paint modes is quite lonely in the center. Only reason to have it is the navigate gizmo I think, easiest would be to just the button. If it has to be visible, irrelevant buttons in the popover should be greyed out.

I'm wondering why the transform gizmo can't be used in sculpt mode. This is actually a highly desired feature for sculpting, and crucial for posing.

Do we still need the Orientation override in the Move / Rotate / Scale tools? I vaguely remember this being added for animators at the Blender Studio, but if they use the gizmos instead there is no point.

The purpose of this was to allow this gizmo to have a different orientation to transform keyboard input.

So typing G, X, 10 always moves 10 on the current scenes axis - while the gizmo could be set to some other orientation.

@Campbell Barton (campbellbarton), ah right. Then I think it's redundant to have it show in the topbar for the Move / Rotate / Scale tools. Only in the gizmo popover seems enough?

I think the Move / Rotate / Scale buttons should be checkboxes like the mockup, so you can click and drag vertically to enable or disable multiple gizmos. Maybe also put them at the top since I think you'd switch these much more often than Navigation or Active Tools gizmos.

Committed this change however it has a down-side, previously you could change the gizmo from location to rotation (for eg) with a single click drag, (now it takes 3x clicks), would be interested to know if this annoys users.

@Campbell Barton (campbellbarton), ah right. Then I think it's redundant to have it show in the topbar for the Move / Rotate / Scale tools. Only in the gizmo popover seems enough?

Currently this is still used, it could be removed since the artists in the studio who wanted the option don't use tools.

It means the gizmo behaves differently when used as a tool, which I wanted to avoid.

Besides that, I don't have a strong opinion.

Just to be clear, it's the same settings as in the popover as far as I can tell. I'm talking about where to put it in the UI in my last comment, not about removing the feature anymore.

The reason for me is, this is a pretty obscure option and it's confusing to have two orientations right next to each other when we move the topbar into the 3D viewport.

Most users would just switch the scene orientation I guess and that's what it matches by default.

I think the Move / Rotate / Scale buttons should be checkboxes like the mockup, so you can click and drag vertically to enable or disable multiple gizmos. Maybe also put them at the top since I think you'd switch these much more often than Navigation or Active Tools gizmos.

Committed this change however it has a down-side, previously you could change the gizmo from location to rotation (for eg) with a single click drag, (now it takes 3x clicks), would be interested to know if this annoys users.

This was exactly my point all along. At some point users will want direct buttons to do this, at which point we have re-invented the toolbar once again.

Overall I think this change is bad. It is slow to change gizmos, and adds more visual clutter to the headers, and conflicts with the active tools in the toolbar.

The better approach would be to simply make the active tools more flexible so you can click and drag in empty space to box select while any of the tools are active. We can just add this as a tool property. I still believe that is the more elegant and simpler way to solve it, rather than this bolted-on approach that is slow and causes conflicts.

I see no issue at all with making the active tools more flexible and powerful, but adding this feature in this way is not the most elegant, fast or clever solution.

All users want is the ability to quickly change the gizmos but also click and drag to select, and we can deliver that functionality within the active tools rather than several competing systems that cause confusion, clutter and slowdown.

I think the Move / Rotate / Scale buttons should be checkboxes like the mockup, so you can click and drag vertically to enable or disable multiple gizmos. Maybe also put them at the top since I think you'd switch these much more often than Navigation or Active Tools gizmos.

Committed this change however it has a down-side, previously you could change the gizmo from location to rotation (for eg) with a single click drag, (now it takes 3x clicks), would be interested to know if this annoys users.

This was exactly my point all along. At some point users will want direct buttons to do this, at which point we have re-invented the toolbar once again.

This can be solved by reverting the change to checkboxes if we like.

Overall I think this change is bad. It is slow to change gizmos, and adds more visual clutter to the headers, and conflicts with the active tools in the toolbar.

Since we need a way to enable/disable gizmos anyway, this doesn't add extra clutter to the header.

Conflict or not is disputable - it doesn't conflict w/ tools that don't use a gizmo.

Animators want a way to keep this active and not be forced into having this coupled w/ tools.

The better approach would be to simply make the active tools more flexible so you can click and drag in empty space to box select while any of the tools are active. We can just add this as a tool property. I still believe that is the more elegant and simpler way to solve it, rather than this bolted-on approach that is slow and causes conflicts.

Am not convinced this is a good solution either - since you might want to click-select, lasso... etc... border select is just one way to select which has it's own tool options which then need to be exposed in transform tools.

It's not as simple as just allowing selection.

In contrast this adds to an existing category of gizmos that remain active (camera, lamp, empty .. etc) transform is just another kind context sensitive gizmo that isn't tied to tools.

I see no issue at all with making the active tools more flexible and powerful, but adding this feature in this way is not the most elegant, fast or clever solution.
All users want is the ability to quickly change the gizmos but also click and drag to select, and we can deliver that functionality within the active tools rather than several competing systems that cause confusion, clutter and slowdown.

I'd like to get user feedback on this before making further changes, will check with animators this week.

Great improvement!
I hope you guys don't change it. This is next level of interaction. 👍

I don't think there's going to be a clear distinction in the user's mind as to what is a "Gizmo" and what is an "Overlay". I suspect if you listed all the gizmos and overlays randomly in a list and asked people to identify which category each one belonged in that the results wouldn't be very accurate.

So we have these two categories, each with a toggle button, but the set of things that each one toggles seems very arbitrary. Again as an example I don't know when I would want to toggle the navigation gizmos off at the same time I'm toggling other things in the gizmo set off.

I think there's still a strong argument for putting every thing into one big menu but maybe call it "Options" or "Display Options" or "View Preferences" some such, which would be similar to other applications.

And I know it will sound more complex, but I kinda want to control visibility separably from whether the visibility follows the overall button. So something like two check-boxes, one for "Visible" and one for "Toggles" to the other state when you click the button in the bar. This would actually give you a lot of flexibility as you could have:

Things that you always see no matter what.
Things that you never want to see.
Things that you see unless you disable the options visibility button.
Things that you only see when you disable the visibility button.

With that I can setup my view the way I like, and I can have any set of visual aids that I can quickly turn on and off, or even two sets that I can toggle between.