This is an ongoing design document for the design of tool Gizmos in Blender 2.8.
A 'gizmo' is a visual object on the screen which allows users to use tools in a visual, direct way. It both makes it easy to perform actions using tools along axes, but more importantly, it allows users to interactively adjust the result of using a tool.
Gizmos also help open up Blender to people who use it without a keyboard, and to people who haven't mastered all the shortcuts to use the many tools. This is not the only reason why we have gizmos though - we expect they will be used by experienced users too for added precision and control.
Here's a list of gizmos for Blender 2.8:
Drag anywhere to move perpendicular to the view. Use the handles for axis specific movement.
Distance clearly communicated differently from the axis of movement:
As demonstrated here, it has been very difficult to visually judge the delta of movement before. We should fix that:
Drag anywhere to rotate perpendicular to the view. Use the handles for axis specific rotation.
Degrees displayed in the pie-chart rotation widget:
Rotation degrees are very disconnected from the rotation widget. We should connect it more visually to the rotation delta, like so:
Tick marks appear while holding down Ctrl for snapping:
Drag anywhere to scale uniformly. Use the handles for axis specific scaling.
Drag on the plus icon always extrudes out, or drag anywhere to extrude freely. After the user has done this, an 'arrow' widget appears which lets the user adjust the current extrusion. The orientation depends on the scene Orientation setting in the top bar. A Normal arrow is always displayed since this is the most common operation, but you can also extrude along any of the axes in Global, Local... etc space. The top bar also has a setting called Steps to set extrusion steps.
Extrude (Normal orientation):
After Initial Extrusion:
Use + to extrude again, or use arrow to adjust length.
Extrude (Global orientation):
Curve Extrude is a separate tool, which is a good demonstration of the kinds of tools we can build with Blender 2.8. It presents the user with a manipulator for moving the extrusion. When the user does this, handles appear on either side of the extruded 'bridge'. These can be extended to change the curve of the extrusion. Cuts can be added in between to make the curve finer or more coarse.
Initially, the user is presented with this axis widget to start spinning on any axis. The user can choose if they want to spin on the X, Y or Z axis with a radio button in the Tool Settings. The Orientation follows the Scene Orientation.
When hovering over the handle, a circle is displayed to visualise the the spin:
When the user is performing the spin, the gizmo changes to make it possible to make adjustments. The large ring adjusts the angle. The rotation handles adjust the axis. The Arrows move the center point.
Select something new, or hit the + to start a new spin.
Drag anywhere to inset. Release to confirm.
This widget appears in the top left of the viewport. It lets you visualize the inset from 0% to 100%. Click the plus icon to create a new inset
Top Bar: %, Outset, Relative, Individual etc..
Pull the lever to inscrease bevel distance.
Top bar: Amount, Segments, Profile, Vertex Only, etc.
Adjust the Bisect plane using this manipulator. It works just like Move+Rotate combined, but with a transparent plane to visualise the cut plane.
The user clicks and drags anywhere to increase randomness, or uses the control to set a value.
The user clicks and drags on an edge loop to create a loop cut and slide it along the edge. The manipulator can be used to set the % from A to B.
This Gizmo works just like the Scale Gizmo. It allows users to shear along any axis, and uses the Scene Orientation setting to set the orientation.
The initial center point is controlled with the Pivot dropdown. After initial tool engagement, we display a gizmo to manipulate the center point, like so:
The user enables the Bend tool, which places a manipulator (Point 1) on the 3D Cursor, aligned according to the scene orientation control. The user can then click and drag on any of the axes to set a bend direction and distance. This creates a new point (point 2), which then represents the bend amount and direction.
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.
The user can drag out the cube to create it. From here, the user can scale it along X and Y.
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.
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.
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.
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.
When inside the camera view, users have no easy way of controlling the camera position, rotation and zoom. Camera operators need to distinctly control panning on each axis, as well as dollying in/out, left/right, and craning up/down. Users also need to be able to easily zoom their camera. We could place camera widget controls inside the camera view, like so: