Workspaces: Integrating Interaction Modes - Requirements
This task acts as a parent task for anything related to making workspaces work nicely with interaction modes (object mode, edit mode, sculpt mode, etc). In here we mainly keep a list on requirements the design needs to meet so child tasks can refer to them.
The active interaction mode defines the toolset and options available for editing objects. They control a big part of the UI.
With 2.8, workspaces are supposed to manage the UI though. Hence, workspaces and interaction modes have to work very well together.
As an example, when a user enters a workspace for animation, the pose mode should be enabled.
We need a design that meets the following requirements:
- Workspaces shall be able to affect the interaction mode, so that users don't need to switch it manually when switching workspaces.
- Different object types support different modes. For example an armature can not be put into weight painting mode. If the workspace affects the interaction mode, it must account for that.
- It must be possible to switch interaction mode without switching workspace.
- While in weight paint mode, it must be possible to select the bones to paint weights for.
- Setting bones as parents for objects should be possible from within the 3D View.
- Multiple workspaces can be active in parallel by opening multiple windows. That means multiple interaction modes may be active in parallel too which shall work nicely.
- The interaction mode must be changeable easily and swiftly.
- Button for the interaction mode should be easy to reach in a place that communicates its scope well. It affects the UI of multiple editors (3D View, Properties Editor, UV/Image Editor), so just having it in the 3D View is not so nice.
Right now the interaction mode is stored per object. Some specific workflows rely on this.
The current (ugly) workflow for select bones for weight painting (requirement #4) goes something like this:
- Enter pose mode for armature to draw weights for
- Select object to draw weights on (Blender switches to object mode)
- Switch to Weight Paint Mode
- Now bones from the armature(s) in pose mode can be selected with Selectmouse, painting happens with Actionmouse (may fail if object doesn't have an active vertex group)
So the basic idea is that only armatures in pose mode can be used for weight painting. Obviously this workflow requires the mode to be stored per object.
Parenting objects to bones (requirement #5) works similar. Something like:
- Select bone in pose mode
- Select object (Blender switches to object mode)
- Select bone again (Blender switches back to pose mode)
- Call operator "Make Parent" (Ctrl+P)
- Select "Bone"