The new unified toolbar and gizmo system in Blender 2.8 will make Blender more powerful, and allow us to reach new audiences.
However, to make this tool system successful, we must follow through and do a good job of actually implementing each tool, to make sure it works as expected, in a consistent and sensible way.
Here's a todo list which explains for each tool, what needs to be changed to make them work well.
Order of importance:
{icon circle color=red} **Very Important** - // needs to be addressed in order for the system to be in a workable state //
{icon circle color=yellow} **Somewhat Important ** - // We really should add these features before we ship //
{icon circle color=green} **Less Important** - //things that would be nice to add, which would make tools feel better, or give them more capabilities//
`?` **Incomplete** - //Tasks needing more details before implementing.//
= General tools
== Transform
* [ ] {icon circle color=green} Add tool settings option to chose what happens when you drag inside the viewport. The enum can be either Move, Rotate, Scale or Nothing.
== Move
* [ ] {icon circle color=green} Currently, distances are not well communicated while dragging, only the axis. We can make it much clearer how far you've moved your item, like so:
{F4411867}
** //Q: should this only be displayed when dragging on an axis? ~ ideasman42.//
** //A: Yes, only when dragging on one axis ~ billreynish//
** //Comment: This seems weak, What if you constrain to a plane for eg and want's to see the distance. It makes it look as if the feature is missing. I think we should not be exposing details *sometimes* in cases when it's hard to know if the information will be useful, the information is already there in the header, we could make that more prominent or label it more clearly. I think if the header status is not something users can rely on to show helpful information, we should try improve that instead of sometimes duplicating the information around. ~ ideasman42//
*** Suggestions:
**** Only show the distance when using the manipulator, but always show it, not depending on constraint axis.
**** Improve header display, eg: replace `(1.234)` with `(distance: 1.234)` (possibly other tweaks to make the information stand out more, the way it's just a small number at the end of everything else is quite easy to ignore).
** //Answer: for moving on one axis, we already display a line representing the axis. All that is needed here is to make the part of the line that represents the delta movement to become different from the rest of the line. We can keep the number value in the header, but the axis line makes it impossible to see how far you moved along the line. Makes sense? ~ Billreynish //
** //Showing a line or not is a separate issue to optionally showing distance text in some situations and not others. In general I think we could have a separate design task for transform system, unless changes are obvious improvements or regressions from 2.7x, we can skip them for the initial 2.8x release (note, visual indication of delta-line I'd consider obvious improvement), other changes I'd rather have own design task for and do them as part of more general transform system usability improvements ~ ideasman42//
* [ ] {icon circle color=yellow} The Redo panel for moving items should be simplified. The Constraint Axis controls should be hidden, and the Move X, Y, Z controls should always work. The current UI here is annoying to use and takes up lots of space.
{F4414727}
* [X] {icon circle color=yellow} The tool has 3 names: 'Grab' (in the toolbar), 'Move' (inside the Redo panel), and 'Translate' (Redo panel title). It should have one name. 'Move' is the most universally understood word, that everyone will understand. The other two are ambiguous and unclear.
== Rotate
* [ ] {icon circle color=green} Use more communicative pie design, so users can better judge how far they rotated, while dragging handles {F4411843}
* [ ] {icon circle color=green} Add visual tick marks while holding Ctrl, so that users get visual feedback on snapping:
{F4411856}
* [ ] {icon circle color=yellow} The Redo panel for rotating items should be simplified. The Constraint Axis controls should be hidden, and the Rotate X, Y, Z controls should always work.
== Scale
* [ ] {icon circle color=yellow} The Redo panel for scaling items should be simplified. The Constraint Axis controls should be hidden, and the Scale X, Y, Z controls should always work. The current UI here is annoying to use and takes up lots of space.
== Scale Cage
* [X] {icon circle color=red} The Gizmo cage doesn't appear most of the time at all when using this tool. Should always show the cage when something is selected. This seems like a bug. It seems to always work when two objects are selected. rBf34a2af4b37cc9f90ab5739f97796d3e6a273def
== 3D Cursor
* [ ] {icon circle color=green} Add button in the Tool Settings to reset the Cursor position to 0,0,0
* [ ] {icon circle color=green} Add XYZ controls for 3D Cursor next to it
** //Q: Both of these are incompatible with 3D view-port spesific local view cursor, how to solve? ~ ideasman42//
** //A: This would only affect the 'real' scene 3D Cursor, not the local view 3D Cursor. I think that's acceptable ~ billreynish//
{F4410847}
== Circle Select
* [X] {icon circle color=red} Add Radius control to the tool settings, to set the radius of the select brush
* [ ] {icon circle color=red} There should be a brush circle size preview cursor always visible, just like a paint tool. Currently the radius is only visible while painting your selection.
* [ ] {icon circle color=red} Add options to create new selections, add to selections or subtract from selections
* [ ] {icon circle color=yellow} Rename to 'Paint Selection'. 'Circle Select' is simply not correctly descriptive of what the tool does.
{F4410925}
== Add Create Object tools
* [ ] {icon circle color=green} From Object Mode, users should be able to drag out meshes in the scene, with a two-step process. Once to set the base size and second, to set the height.
* [ ] {icon circle color=green} **Plane:** The user can drag out to create the plane. From here, the user can drag the blue ring to increase the scale. The red and green handles can be used to scale the primitive in X and Y.
* [ ] {icon circle color=green} **Cube: **The user can drag out the cube to create it. From here, the user can scale it along X and Y.
* [ ] {icon circle color=green} **UV Sphere & ICO Sphere:** The user can drag out to create the sphere. From here, the user can drag the blue ring to increase the scale. The red and green handles can be used to scale the primitive in X and Y.
* [ ] {icon circle color=green} **Cylinder:** The user can drag out to create the cylinder. From here, the user can drag the blue ring to increase the base size. The blue handle can be used to set the height. The red and green handles can be used to scale the primitive in X and Y.
* [ ] {icon circle color=green} **Cone:** The user can drag out to create the cone. From here, the user can drag the blue ring to increase the base size. The blue handle can be used to set the height. The red and green handles can be used to scale the primitive in X and Y.
* [ ] {icon circle color=green}** Torus: **The user can drag out to create the torus. From here, the user can drag the blue ring to increase the major radius size. The white handle can be used to set the minor radius size.
{F4411830}
== Annotation
* [ ] {icon circle color=red} Add back option to select the active Annotation in the tool settings
{F4410941}
** //Q: Previously this was changing the material of what you had already drawn. Where as this should set the annotation that is drawn onto next, not change the current annotation, right? ~ ideasman42//
** //A: Correct, this popup should show a list of the annotation layers, affecting the next strokes. This was, afaik already how it worked before it was removed. That commit just needs to be reversed so it comes back. ~ billreynish//
= Mesh Edit Mode tools
== Extrude
* [ ] {icon circle color=red} Add option to only show the Normal direction of the Extrude Gizmo, enabled by default.
* In the tool settings, the user is presented with this enum: [Normal : Orientation]. When set to Normal, only show Normal direction. When set to Orientation, the user sees three axes, aligned to whichever Orientation is set in the viewport header.
* [X] {icon circle color=red} Currently, the Extrude Gizmo is HUGE, and often goes off screen. As you can see here, the Extrude Gizmo is almost twice the size of the regular gizmos. We should make it the same size:
{F4411016}
* [X] {icon circle color=red} The Extrude Gizmo handles don't actually work at all. Should be fixed. Fixed rB49fa58e330
* [ ] {icon circle color=green} We could combine Extrude Region, Extrude Individual, Extrude Along Normals into same tool, and simply add a tool setting to switch between the various extrusion methods
* [ ] {icon circle color=green} We could add a setting to generate divisions along the extrusion
{F4411011}
== Loop Cut
* [ ] {icon circle color=green} Here it would be a nice improvement to make it so you can create cuts anywhere along a loop, not just in the center. This would be a tool setting.
{F4411076}
== Spin/Lathe
* [X] {icon circle color=red} Should allow dragging to change amount
* [ ] {icon circle color=yellow} We should add the new gizmo design
* [X] The gizmo should respect the Scene orientation
* [ ] {icon circle color=yellow} Just like the transform gizmos, dragging anywhere performs a spin along the view (just like now), but dragging on the manipulator performs a spin on that axis
* [ ] {icon circle color=yellow} Just like the transform gizmos, the manipulator should be visible immediately, not only *after* the initial spin operation.
Updated Gizmo design, here:
1: Before executing the Spin tool, the user is presented with a widget like so:
(This already works)
{F4755005}
After the initial spin step, the user is then able to adjust the result using the gizmo, like so:
{F4755093}
- The Angle can be adjusted with the large disk.
- The axis can be adjusted with the rotation handles.
- The center can be adjusted using the arrows
- To start a new spin operation, the user can use the + button, consistent with the Extrude tool, or select a different element.
//Note: What makes the Spin tool & widget powerful and useful, is the ability to interactively adjust the result. This already works for the angle, but the ability to adjust the center point and axis is also crucial. Making the gizmo a redo-gizmo is what will make this work. Mostly, you would not want to keep using Spin on the same selection, so it can reset itself when you make a new selection or hit the + if you really want to.//
== Randomize
* [X] {icon circle color=red} The tool should allow users to drag inside the viewport to increase the amount, similar to how Bevel or Inset already work. rB9e5259b0434550a40c08042524fca6b4bb1a07ee
== Smooth
* [X] {icon circle color=red} The tool should allow users to drag inside the viewport to increase the amount, similar to how Bevel or Inset already work. rB9e5259b0434550a40c08042524fca6b4bb1a07ee
== Shear
* [X] {icon circle color=green} We should add Shear to the toolbar
* [X] {icon circle color=green} Click and drag to increase amount
* [ ] {icon circle color=red} Shear should have a manipulator to shear in any direction, the orientation on which is controlled by the Orientation setting, just like the Transform manipulators. Dragging any of the handles shears in that direction:
{F4729439}
* [ ] {icon circle color=yellow} Just like the transform gizmos, the manipulator should be visible immediately, not only *after* the initial shear operation.
* [ ] {icon circle color=green} Add Tool Setting to switch between horizontal and vertical shearing
{F4438432}
== To Sphere
* [X] {icon circle color=green} We should add To Sphere to the toolbar
* [X] {icon circle color=green} Click and drag to increase amount
* [ ] {icon circle color=green} The tool should ideally have a way to change the center point via a manipulator.
** //Q: Why not use the 3D cursor? ~ ideasman42//
** //A: Ideally it would be consistent with the Transform tools, and respect the Origin option in the viewport header, one of which is 3D Cursor ~ billrey)//
** //Q: This is how it works already, how would this be different? ~ ideasman42)//
** //A: but you can't interactively alter the center point. There could be a location Gizmo that would let you move the center point around and you could see the result update as you do ~ billreynish//
** //Comment: I'd like to look into ways (outside of this task) to add controls which aren't limited to the point where users are asking for ways to snap it to a location for eg (basically what you might do already with the 3D cursor), it has the potential to duplicate functionality, which I'd like to avoid if possible ~ ideasman42//
** //A: I don't understand. What I'm suggesting here is exactly like the Spin Gizmo works: The initial center point appears where the 3D Cursor is, but after execution, you can still move the center around independently of the 3D Cursor. ~ billreynish//
== Bisect
* [ ] {icon circle color=yellow} We should add an updated Gizmo here {F4728833}
//Comment: should this gizmo's plane be an outline (design looks opaque), also, it's quite different to the previous design, see: T54661 ~ ideasman42//
//Answer: This design is more similar to what we have now, but makes it easier to rotate and move the bisect plane along specific axes. The blue plane here should be transparent, not opaque. ~ billreynish //
* [X] {icon circle color=yellow} We should add these options to the tool settings: Fill, Clear Outer, Clear Inner. Otherwise, users have to keep setting these settings for every bisect operation.
* [] {icon circle color=yellow} We should add an option called 'Only Selected' just like the Knife tool. Currently it always only applies to selected elements, but that makes many successive bisects annoying because you constantly have to select all.
== Bend
* [ ] {icon circle color=green} We should add the Bend tool to the toolbar
* [ ] {icon circle color=green} Should work with drag-release paradigm, similar to other tools in the toolbar
* [ ] {icon circle color=green} We should introduce an interactive Gizmo for this tool, such as this:
* [ ] {icon circle color=yellow} Just like the transform gizmos, the manipulator should be visible immediately, not only *after* the initial bend operation.
{F4412114}
= Curve Edit tools
== Extrude
* [X] {icon circle color=red} Add Extrude tool to Curve Edit toolbar
* [ ] {icon circle color=yellow} Add Extrude manipulator when using this tool
== Shrink/Fatten
* [ ] {icon circle color=yellow} Add Shrink/Fatten tool to Curve Edit toolbar
== Randomize
* [ ] {icon circle color=yellow} Add Randomize tool to Curve Edit toolbar
== Tilt
* [ ] {icon circle color=yellow} Add Tilt tool to Curve Edit toolbar
= Armature Edit tools
== Extrude
* [X] {icon circle color=red} This tool is currently the same as Extrude to Cursor. This should not be the case.
* [ ] {icon circle color=red} Extrude should be made to work like the Mesh Edit Extrude tool, with a visual Gizmo to perform extrusions.
{F4411332}
= Grease Pencil Edit tools
== Shear
* [X] {icon circle color=red} The tool should execute on release, so when you click and drag, it stops. Currently you need to click an extra time, which is inconsistent and annoying.
* [ ] {icon circle color=green} Add Tool Setting to switch between horizontal and vertical shearing
* [ ] {icon circle color=green} Shear should have a manipulator to shear in any direction, the orientation on which is controlled by the Orientation setting, just like the Transform manipulators. Dragging any of the handles shears in that direction.
== To Sphere
* [X] {icon circle color=red} The tool should execute on release, so when you click and drag, it stops. Currently you need to click an extra time
== Mirror
* [ ] {icon circle color=red} Mirror is not an interactive tool, and should be removed from the toolbar. We can make sure it's available in the menus instead.
= Hair Edit Tools
* [ ] {icon circle color=red} Remove 'None' tool from toolbar
* [ ] {icon circle color=yellow} A default tool (probably Comb tool) should be enabled by default when switching to Hair mode.
== Hair Comb
* [X] {icon circle color=red} Remove the Brush popover, which only has the same settings as are already in the top bar
* [ ] {icon circle color=yellow} Add Deflect Emitter & Distance to Tool Settings. These are currently buried in the Options popover, but there's plenty of room to put them directly in the tool settings
{F4410866}
== Hair Add
* [X] {icon circle color=red} Add Interpolate, Steps & Keys to Tool Settings. These are currently buried in the Options popover, but there's plenty of room to put them directly in the tool settings
{F4410912}
= Sculpt Mode
* [X] {icon circle color=red} //General Note: We should not allow changing tools via the Tool Settings popup. Currently this makes things go weird - it shows different icons and makes things go out of sync in strange, ugly ways.// (Glitches should be fixed, we can't disable brush changing entirely, any other glitches should be reported as bugs ~ ideasman42).
* [ ] {icon circle color=yellow} The toolbar for Sculpt Mode should be expanded more. Too many of the most common tools are nested and thus not discoverable. We should promote Flatten and Inflate sculpt tools to become top level-accesible tools.
* [ ] {icon circle color=yellow} A default tool (probably Draw tool) should be enabled by default when switching to Sculpt mode.
== Border Mask
* [X] {icon circle color=red} When this tool is selected, it currently shows the wrong tool settings which affect the brushes, not this tool. These should not be visible when this tool is active.
== Border Hide
* [X] {icon circle color=red} When this tool is selected, it currently shows the wrong tool settings which affect the brushes, not this tool. These should not be visible when this tool is active.
* [ ] {icon circle color=green} Add button in tool settings to unhide
= Vertex Paint / Weight Paint Modes
* [X] {icon circle color=red} Select tool should only be visible when Face Selection is turned on.
* [ ] {icon circle color=yellow} A default tool (probably Draw tool) should be enabled by default when switching to Vertex Paint / Weight Paint modes.
= UV Editor
Currently, the UV editor has a bunch of confusingly overlapping tool-modes. This should all be simplified via the new active tools system.
* [ ] {icon circle color=red} Remove old tools panels
* [ ] {icon circle color=red} Add 2D Cursor tool to toolbar
* [ ] {icon circle color=red} Add Grab tool to the toolbar
* [ ] {icon circle color=red} Add Rotate tool to the toolbar
* [ ] {icon circle color=red} Add Scale tool to the toolbar
* [ ] {icon circle color=red} Add Scale Cage tool to the toolbar
* [ ] {icon circle color=red} Make the Transform Scale Cage Gizmo only appear when Scale Cage transform tool is used
* [ ] {icon circle color=green} Add Shear tool to the toolbar
* [ ] {icon circle color=red} Fix Annotate tool in the toolbar, so that it actually works
* [ ] {icon circle color=red} Add UV Sculpt tools to the toolbar - (also add Radius, Strength and the other relevant settings to the top settings )
- Sculpt Grab
- Sculpt Pinch
- Sculpt Relax
When in the Image Editor Paint Mode, we should follow the design of the Paint modes in the 3D View, meaning;
* [ ] {icon circle color=red} Tool Settings should be in top bar
* [ ] {icon circle color=red} Toolbar should work the same as in 3D View
{F4411299}