Sculpt/Painting Modes: Revamp Keymap #105298

Open
opened 2023-02-28 15:23:23 +01:00 by Julien Kaspar · 14 comments

Motivation

For the 4.0 release we should resolve some long standing issues with the default keymaps.

This design only affects the painting, sculpting and draw modes for mesh, curve and grease pencil objects.

Goals

  • #108712 Remove all brush shortcuts & unused shortcuts (Leave this level of customization to users)
  • More consistency between LCS and RCS keymap preferences
  • Better support for 3 Mouse Button Emulation
  • Overhaul industry compatible keymap for module ownership and maintenance
  • No unnecessary shortcut inheritance in the 3D View (For example `all transform operators in sculpt mode)
  • #108714 Consistent use of number keys for selection/mask modes
  • Consistent and intuitive selection/masking workflows via shortcuts and pie menus
  • #108791 Broader keymap overhaul to remove inconsistenies and improve maintenance (Support D13857, Color/Weight picking, etc)
  • Shortcut tables in the user manual for helping users understand and find current keymap layouts

Each of these goals are isolated changes that can be reviewed and merged separately.

Consistent LCS & RCS support

This table of shortcuts needs to be kept consistent to make future maintenance of the keymaps easier.
This will be the extend of the LCS and RCS differences in draw, sculpt & paint modes.

Action LCS RCS
Context Menu Right Click W
Set Selection Alt LC RC
Extend/Toggle Selection Alt Shift LC Shift RC
Lasso Select Ctrl RC None
Lasso Deselect Ctrl Shift RC Ctrl Shift LC

Emulate 3 Mouse Button support

Alt LC is already used for "Emulate 3 Mouse Button" navigation.
This should no longer block the default keymap from using this shortcut.
Instead any conflicting shortcuts needs to be accessible in another way (even if this is less convenient).

For example, component selection will only be accessible when switching from a brush to a selection tool in the toolbar.
Once any selection tool is active these shortcuts become available:

  • LC on Press to set a selection
  • Shift LC on Press to extend/toggle the selection
  • ALt LC / Shift Alt LC for face loop selection

To ensure that bone selection still works in weight paint mode, Ctrl Shift LC is also set to set a selection.

Industry Compatible Keymap

Core changes are kept very minimal to this keymap.
The main effort was in

  • Synching shortcuts across modes to be more consistent and easier to maintain
  • Adding missing shortcuts that are essential for common workflows
  • Making the keymap more user friendly towards painting workflows (instead of focusing primarily on modeling)

Notable proposed changes are:

  • 1-3 number keys are assigned to the selection/mask modes of the current mode, not edit mode specifically. The exception is object mode, which will always switch to the edit mode selection modes.
  • 4 is utilizing the full mode switching pie menu to make any mode easier to access

Proposal

Full table of all the keymap entries and changes:
https://docs.google.com/spreadsheets/d/1dadL6PLj8hjToKBzXgY3eJRg6SWPJFfWuFLl8wtOf-k/edit?usp=sharing

Default Keymap Overview

These changes apply to all sculpt, paint and draw modes.

To test the keymap yourself, download the "keymap_configs.zip" below and copy the files of the needed keymap into your config folder.

General

  • Prevent unnecessary inheritance of transform operators to various modes
  • Consistent LCS & RCS selection and context menus (see table above)
    • Consistent Lasso masking shortcuts
    • Consistent component selection
    • Consistent context menu access
  • Free up space for user customization
    • Remove redundant shortcuts
    • Remove all brush shortcuts
  • Number Keys for selection modes
  • Shift LC for brush smoothing
  • Ctrl LC for inverted brush effect or erasing
  • Shift S to toggle stabilize stroke (Now consistent in every mode)

Sculpting

  • Shift X for color picking
  • E + modifier keys for all face set operators and pie menu (To remove RCS conflict on W)
  • Ctrl R for Detail Flood Fill if Dyntopo is active
  • Alt 1 & Alt 2 for decreasing and increasing Multires levels in sculpt mode
  • Swapped H and Shift H shortcuts in sculpt mode

Painting

  • X for color swap
  • Ctrl X for color/weight filling (Vertex/Weight Paint Mode)
  • Shift X for color/weight sampling and Ctrl Shift X for vertex group sampling

Grease Pencil

  • Alt I for Delete Active Frame Menu in grease pencil Draw Mode (instead of X Shift X and Shift Del for various deleting shortcuts)
  • Removed many unused Draw brush shortcuts for 'Guides'
  • Moved Box/Lasso Delete gesture shortcuts from Draw & Eraser brush to Draw Mode section

Selection Pie Menu

  • A pie menu for selection operators (For consistency among sculpting & painting modes). See example image in attachments.
    • Free up all other selection shortcuts
    • Alt A for auto-masking pie menu

The operators exposed in the selection pie menu are generally:

  • Deselect All
  • Invert
  • Select More
  • Select Less
  • Deselect All Bones
  • Select All Bones

If options are unavailable, they will be grayed out.

IC Keymap Overview

The changes in this keymap are much more involved.
If any shortcut isn't mentioned, that means it is unchanged.

To test the keymap yourself, download the "keymap_configs.zip" below and copy the files of the needed keymap into your config folder.

General

  • All brush shortcuts have been removed for free custom mapping
  • S & U are now consistently mapped for Brush size & strength
  • Redundant shortcuts have been removed such as
    • Line Session drawing (In GP Draw Tool)
    • Select Alternate in GP

Mode Switching (Global change)

  • 123 = keys are used to switch selection/mask modes for the current mode (Previously this would always switch to edit mode)
  • 4 = Mode switching pie menu (previously 4-7 for individual modes)
  • Tilde = Transfer Mode (Previously not mapped. Useful for instant object switching while keeping the current mode)
  • 5-0 = Unassigned

Brush vs Selection

  • Shift LC = Smooth Brush / Stabilzed Stroke in GP Draw Mode / Toggle-Extend Selection on selection tools (Previously inconsistent or unassigned)
  • Ctrl LC = Inverted Brush (Previously inconsistent or unassigned)
  • Shift Alt LC = Set Selection (Previously inconsistent or unassigned)
  • Shift Alt Ctrl LC = Toggle-Extend Selection (Previously inconsistent or unassigned)

Stencil Controls

These have been remapped to avoid conflicts with vital navigation shortcuts.
These shortcuts are reminiscent of Zbrush.

  • Z Shift MMB = Move Stencil 1
  • Z Shift LMB = Rotate Stencil 1
  • Z Shift RMB = Scale Stencil 1
  • Z Shift Alt MMB = Move Stencil 2
  • Z Shift Alt LMB = Rotate Stencil 2
  • Z Shift Alt RMB = Scale Stencil 2

Brush Size vs Select Linked

These were previously in direct conflict. Now they are both distinct and based on other DCC software.

  • [ = Decrease Brush Size (Previously missing from many modes)
  • ] = Increase Brush Size (Previously missing from many modes)
  • Alt dbl LC = Select Linked Pick (Previously inconsistent or in conflict. Now based on other software standards.)
  • Shift Alt dbl LC = Deselect Linked Pick (Previously inconsistent or in conflict)
  • Ctrl L = Select Linked (Previously inconsistent)

Select & Mask

  • Q = Cycle Masking/Selection Tools (Previously inconsistent)
  • Shift Q = Toggle Mask Overlay in Sculpt Mode (Previously inconsistent. Based on Edit Line Overlay toggle in GP)
  • Ctrl A = Mask/Select Pie Menu (Previously unassigned and instead Fill Mask / Select All)
  • Alt A = Auto-Masking Pie Menu (Previously unassigned)
  • Shift A` = Expand Mask by Topology / Grow Selection in Curve Sculpt Mode
  • Shift Alt A = Expand Mask by Normals

Face Sets & Visibility

Mainly reminiscent of Zbrush.

  • Shift W = Face Set Expand (previously unassigned)
  • Shift Alt W = Active Face Set Expand (previously unassigned)
  • Ctrl W = Face Set Edit Pie Menu (previously unassigned)
  • Ctrl H = Hide Active Face Set (Previously unassigned)
  • Shift H = Hide Inactive Face Sets / Toggle Visibility (Previously unassigned)

Transforming

Currently for Sculpt and Weight Painting modes. Should stay reserved for other modes if needed. These were previously missing.

  • W = Move Tool
  • E = Rotate Tool
  • R = Scale Tool
  • T = Transform Tool
  • Shift RC = Set Cursor / Set Transform Pivot in Sculpt Mode (Previously unassigned)

Sculpting

Based on Zbrush instead of default keymap.

  • Shift D = Subdivsion level Down (Previously on Pg Down)
  • Shift Alt D = Subdivsion level Up (Previously on Pg Up)
  • Ctrl D = Voxel Size / Dyntopo Size (Now context dependent and mutually exclusive)
  • Ctrl Shift D = Voxel Remesh / Dyntopo Flood Fill

Painting

  • Backspace = Set Color/Weight (Previously inconsistent or unassigned)
  • I = Sample Color/Weight (Previously inconsistent)
  • Alt I = Sample Vertex Group (Previously blocking Smooth Brush)
  • Alt Ctrl I = Vertex Group Lock Pie (Previously unassigned)
  • X = Swap Colors (Previously unassigned in Sculpt Mode)

Grease Pencil

  • Shift S = Animation Menu (Previously on I and missing outside of Draw Mode)
  • Shift Alt S = Insert Blank Keyframe (previously unassigned)
  • Alt H = Unhide Layers (Previously unassigned)
  • Ctrl H = Hide Active Layer (Previously unassigned)
  • Shift H = Hide Inactive Layers (Previously unassigned)
  • Y = Active Layer Menu (Previously inconsistent)
  • Shift Y = Merge Layer Down (Previously unassigned)
  • Alt Y = Material Menu (Previously unassigned)
  • Alt Backspace/Delete = Delete Active Keyframe (Previously on D Backspace/Delete and in conflict with Annotate)

Other

  • MMB for panning in the User Interface (Highly requested)
  • F = Center View to Mouse (Previously unassigned. Frame Selected is not accessible and less useful in draw/painting/sculpting modes)
  • D = Annotate (Previously inconsistent or in conflict)
  • L = Toggle Stabilize Stroke (Similar to "Lazy Mouse" in Zbrush. Previously on Shift S and in conflict)

Deeper changes

General

Keymap entries for Transform operators (Move, Rotate, Scale, Bend, Sphere) need to be prevented from appearing automatically in the sculpting and painting modes once some shortcuts are freed.
Even though they can somewhat function, they aren't optimized for these modes.

Grease Pencil

Grease Pencil also needs a deselect property for gpencil.select_linked to be mapped to Shift L.

When changing the shortcut for gpencil.select to Shift LC instead of Alt LC it will always extend. This seems to be hardcoded instead of depending on the keymap properties.

Grease Pencil Draw and Vertex Mode are also missing operator to sample local colors.

Grease Pencil Weight Paint Mode does not support inverted or smooth brush stroke operations.
This needs to be added to replace the current shortcut D to flip brush direction.

IC Keymap

The operator object.mode_set_with_submode should still be mapped to object mode to immediately switch to edit mode in the appropriate selection mode.
The issue is that this only works with mesh objects and not with grease pencil or curve objects. This limitation needs to be addressed.

# Motivation For the 4.0 release we should resolve some long standing issues with the default keymaps. This design only affects the painting, sculpting and draw modes for mesh, curve and grease pencil objects. # Goals - [ ] #108712 Remove all brush shortcuts & unused shortcuts (Leave this level of customization to users) - [ ] More consistency between LCS and RCS keymap preferences - [ ] Better support for 3 Mouse Button Emulation - [ ] Overhaul industry compatible keymap for module ownership and maintenance - [ ] No unnecessary shortcut inheritance in the 3D View (For example `all transform operators in sculpt mode) - [ ] #108714 Consistent use of number keys for selection/mask modes - [ ] Consistent and intuitive selection/masking workflows via shortcuts and pie menus - [ ] #108791 Broader keymap overhaul to remove inconsistenies and improve maintenance (Support [D13857](https://archive.blender.org/developer/D13857), Color/Weight picking, etc) - [ ] Shortcut tables in the user manual for helping users understand and find current keymap layouts Each of these goals are isolated changes that can be reviewed and merged separately. ## Consistent LCS & RCS support This table of shortcuts needs to be kept consistent to make future maintenance of the keymaps easier. This will be the extend of the LCS and RCS differences in draw, sculpt & paint modes. | Action | LCS | RCS | | -------- | -------- | -------- | | Context Menu | Right Click | W | | Set Selection | Alt LC | RC | | Extend/Toggle Selection | Alt Shift LC | Shift RC | | Lasso Select | Ctrl RC | None | | Lasso Deselect | Ctrl Shift RC | Ctrl Shift LC | ## Emulate 3 Mouse Button support `Alt LC` is already used for "Emulate 3 Mouse Button" navigation. This should **no longer block the default keymap from using this shortcut**. Instead any conflicting shortcuts needs to be accessible in another way (even if this is less convenient). For example, component selection will only be accessible when switching from a brush to a selection tool in the toolbar. Once any selection tool is active these shortcuts become available: - `LC` on `Press` to set a selection - `Shift LC` on `Press` to extend/toggle the selection - `ALt LC` / `Shift Alt LC` for face loop selection To ensure that bone selection still works in weight paint mode, `Ctrl Shift LC` is also set to set a selection. ## Industry Compatible Keymap Core changes are kept very minimal to this keymap. The main effort was in - Synching shortcuts across modes to be more consistent and easier to maintain - Adding missing shortcuts that are essential for common workflows - Making the keymap more user friendly towards painting workflows (instead of focusing primarily on modeling) Notable proposed changes are: - `1-3` number keys are assigned to the selection/mask modes of the current mode, not edit mode specifically. The exception is object mode, which will always switch to the edit mode selection modes. - `4` is utilizing the full mode switching pie menu to make any mode easier to access # Proposal Full table of all the keymap entries and changes: https://docs.google.com/spreadsheets/d/1dadL6PLj8hjToKBzXgY3eJRg6SWPJFfWuFLl8wtOf-k/edit?usp=sharing ## Default Keymap Overview These changes apply to all sculpt, paint and draw modes. **To test the keymap yourself**, download the "keymap_configs.zip" below and copy the files of the needed keymap into your config folder. #### General - Prevent unnecessary inheritance of transform operators to various modes - Consistent LCS & RCS selection and context menus (see table above) - Consistent Lasso masking shortcuts - Consistent component selection - Consistent context menu access - Free up space for user customization - Remove redundant shortcuts - Remove all brush shortcuts - `Number Keys` for selection modes - `Shift LC` for brush smoothing - `Ctrl LC` for inverted brush effect or erasing - `Shift S` to toggle stabilize stroke (Now consistent in every mode) #### Sculpting - `Shift X` for color picking - `E` + modifier keys for all face set operators and pie menu (To remove RCS conflict on `W`) - `Ctrl R` for Detail Flood Fill if Dyntopo is active - `Alt 1` & `Alt 2` for decreasing and increasing Multires levels in sculpt mode - Swapped `H` and `Shift H` shortcuts in sculpt mode #### Painting - `X` for color swap - `Ctrl X` for color/weight filling (Vertex/Weight Paint Mode) - `Shift X` for color/weight sampling and `Ctrl Shift X` for vertex group sampling #### Grease Pencil - `Alt I` for Delete Active Frame Menu in grease pencil Draw Mode (instead of `X` `Shift X` and `Shift Del` for various deleting shortcuts) - Removed many unused Draw brush shortcuts for 'Guides' - Moved Box/Lasso Delete gesture shortcuts from Draw & Eraser brush to Draw Mode section #### Selection Pie Menu - `A` pie menu for selection operators (For consistency among sculpting & painting modes). See example image in attachments. - Free up all other selection shortcuts - `Alt A` for auto-masking pie menu The operators exposed in the selection pie menu are generally: - Deselect All - Invert - Select More - Select Less - Deselect All Bones - Select All Bones If options are unavailable, they will be grayed out. ## IC Keymap Overview The changes in this keymap are much more involved. If any shortcut isn't mentioned, that means it is unchanged. **To test the keymap yourself**, download the "keymap_configs.zip" below and copy the files of the needed keymap into your config folder. #### General - All brush shortcuts have been removed for free custom mapping - `S` & `U` are now consistently mapped for Brush size & strength - Redundant shortcuts have been removed such as - Line Session drawing (In GP Draw Tool) - Select Alternate in GP #### Mode Switching (Global change) - `123` = keys are used to switch selection/mask modes for the **current mode** (Previously this would always switch to edit mode) - `4` = Mode switching pie menu (previously `4-7` for individual modes) - `Tilde` = Transfer Mode (Previously not mapped. Useful for instant object switching while keeping the current mode) - `5-0` = Unassigned #### Brush vs Selection - `Shift` `LC` = Smooth Brush / Stabilzed Stroke in GP Draw Mode / Toggle-Extend Selection on selection tools (Previously inconsistent or unassigned) - `Ctrl` `LC` = Inverted Brush (Previously inconsistent or unassigned) - `Shift` `Alt` `LC` = Set Selection (Previously inconsistent or unassigned) - `Shift` `Alt` `Ctrl` `LC` = Toggle-Extend Selection (Previously inconsistent or unassigned) #### Stencil Controls These have been remapped to avoid conflicts with vital navigation shortcuts. These shortcuts are reminiscent of Zbrush. - `Z` `Shift` `MMB` = Move Stencil 1 - `Z` `Shift` `LMB` = Rotate Stencil 1 - `Z` `Shift` `RMB` = Scale Stencil 1 - `Z` `Shift` `Alt` `MMB` = Move Stencil 2 - `Z` `Shift` `Alt` `LMB` = Rotate Stencil 2 - `Z` `Shift` `Alt` `RMB` = Scale Stencil 2 #### Brush Size vs Select Linked These were previously in direct conflict. Now they are both distinct and based on other DCC software. - `[` = Decrease Brush Size (Previously missing from many modes) - `]` = Increase Brush Size (Previously missing from many modes) - `Alt` `dbl LC` = Select Linked Pick (Previously inconsistent or in conflict. Now based on other software standards.) - `Shift` `Alt` `dbl LC` = Deselect Linked Pick (Previously inconsistent or in conflict) - `Ctrl` `L` = Select Linked (Previously inconsistent) #### Select & Mask - `Q` = Cycle Masking/Selection Tools (Previously inconsistent) - `Shift` `Q` = Toggle Mask Overlay in Sculpt Mode (Previously inconsistent. Based on Edit Line Overlay toggle in GP) - `Ctrl` `A` = Mask/Select Pie Menu (Previously unassigned and instead Fill Mask / Select All) - `Alt` `A` = Auto-Masking Pie Menu (Previously unassigned) - `Shift `A` = Expand Mask by Topology / Grow Selection in Curve Sculpt Mode - `Shift` `Alt` `A` = Expand Mask by Normals #### Face Sets & Visibility Mainly reminiscent of Zbrush. - `Shift` `W` = Face Set Expand (previously unassigned) - `Shift` `Alt` `W` = Active Face Set Expand (previously unassigned) - `Ctrl` `W` = Face Set Edit Pie Menu (previously unassigned) - `Ctrl` `H` = Hide Active Face Set (Previously unassigned) - `Shift` `H` = Hide Inactive Face Sets / Toggle Visibility (Previously unassigned) #### Transforming Currently for Sculpt and Weight Painting modes. Should stay reserved for other modes if needed. These were previously missing. - `W` = Move Tool - `E` = Rotate Tool - `R` = Scale Tool - `T` = Transform Tool - `Shift` `RC` = Set Cursor / Set Transform Pivot in Sculpt Mode (Previously unassigned) #### Sculpting Based on Zbrush instead of default keymap. - `Shift` `D` = Subdivsion level Down (Previously on `Pg Down`) - `Shift` `Alt` `D` = Subdivsion level Up (Previously on `Pg Up`) - `Ctrl` `D` = Voxel Size / Dyntopo Size (Now context dependent and mutually exclusive) - `Ctrl` `Shift` `D` = Voxel Remesh / Dyntopo Flood Fill #### Painting - `Backspace` = Set Color/Weight (Previously inconsistent or unassigned) - `I` = Sample Color/Weight (Previously inconsistent) - `Alt` `I` = Sample Vertex Group (Previously blocking Smooth Brush) - `Alt` `Ctrl` `I` = Vertex Group Lock Pie (Previously unassigned) - `X` = Swap Colors (Previously unassigned in Sculpt Mode) #### Grease Pencil - `Shift S` = Animation Menu (Previously on `I` and missing outside of Draw Mode) - `Shift` `Alt` `S` = Insert Blank Keyframe (previously unassigned) - `Alt` `H` = Unhide Layers (Previously unassigned) - `Ctrl` `H` = Hide Active Layer (Previously unassigned) - `Shift` H = Hide Inactive Layers (Previously unassigned) - `Y` = Active Layer Menu (Previously inconsistent) - `Shift` `Y` = Merge Layer Down (Previously unassigned) - `Alt` `Y` = Material Menu (Previously unassigned) - `Alt` `Backspace`/`Delete` = Delete Active Keyframe (Previously on `D` `Backspace`/`Delete` and in conflict with Annotate) #### Other - `MMB` for panning in the User Interface (Highly requested) - `F` = Center View to Mouse (Previously unassigned. Frame Selected is not accessible and less useful in draw/painting/sculpting modes) - `D` = Annotate (Previously inconsistent or in conflict) - `L` = Toggle Stabilize Stroke (Similar to "Lazy Mouse" in Zbrush. Previously on `Shift` `S` and in conflict) ## Deeper changes #### General Keymap entries for Transform operators (Move, Rotate, Scale, Bend, Sphere) need to be prevented from appearing automatically in the sculpting and painting modes once some shortcuts are freed. Even though they can somewhat function, they aren't optimized for these modes. #### Grease Pencil Grease Pencil also needs a deselect property for `gpencil.select_linked` to be mapped to `Shift L`. When changing the shortcut for `gpencil.select` to `Shift LC` instead of `Alt LC` it will always extend. This seems to be hardcoded instead of depending on the keymap properties. Grease Pencil Draw and Vertex Mode are also missing operator to sample local colors. Grease Pencil Weight Paint Mode does not support inverted or smooth brush stroke operations. This needs to be added to replace the current shortcut `D` to flip brush direction. #### IC Keymap The operator `object.mode_set_with_submode` should still be mapped to object mode to immediately switch to edit mode in the appropriate selection mode. The issue is that this only works with mesh objects and not with grease pencil or curve objects. This limitation needs to be addressed.
Julien Kaspar added this to the 4.0 milestone 2023-02-28 15:23:23 +01:00
Julien Kaspar added this to the Sculpt, Paint & Texture project 2023-02-28 15:23:25 +01:00
Julien Kaspar self-assigned this 2023-02-28 15:23:44 +01:00

(I hope that my feedback is specific enough to post it in this place. If my post is to cumbersome to read, I would very much like to demonstrate the described behaviour at one of your video-meetings.)

I believe that I noticed a keymap/ui-conflict when customizing blenders key-mapping for use with a buttonless pen device which cannot be resolved through user configuration:

When setting up blender to rotate/zoom/move the viewport by either pen or mouse (click+drag on the background) actions are performed inconsistently depending on the active selection-mode/active sculpting-tool.
Blenders current behaviour:

  1. Select Tweak: click + drag rotates the viewport but at the same time also deselects the current selection (which is not supposed to happen)
  2. Select Box: rotates the viewport (while it should actually deactivate viewport-navigation and instead perform a box-selection)
  3. Select Circle: this selection mode behaves correctly as it deactivates viewport-navigation and instead performs a circle selection
  4. Select Lasso: same as Select Box
  5. In sculpting-mode the brushes behave correctly (by letting the user navigate the viewport when clicking on the background and performing the sculpting-operation when clicking on the mesh) but the box-operations can not be performed as the viewport-navigation is prioritized over the sculpting-operation.

Here is a proposal for how blender could eventually resolve these conflicts:

Selection: Box, Circle, Lasso Selection: Tweak Sculpt: Brushes Sculpt: Box-Operations
deactivate viewport navigation and only perform selection (as currently only circle-selection does) clicking on the mesh -> selection - clicking on the background -> deselection - clicking + draging on the background -> viewport-navigation unchanged behaviour: clicking on mesh -> sculpting - clicking + draging on the background -> viewport navigation deactivate viewport navigation so that the user can performe the box-operation

(Eventually this feedback can be incorporated in some way.)

(I hope that my feedback is specific enough to post it in this place. If my post is to cumbersome to read, I would very much like to demonstrate the described behaviour at one of your video-meetings.) I believe that I noticed a keymap/ui-conflict when customizing blenders key-mapping for use with a buttonless pen device which cannot be resolved through user configuration: When setting up blender to rotate/zoom/move the viewport by either pen or mouse (click+drag on the background) actions are performed inconsistently depending on the active selection-mode/active sculpting-tool. Blenders current behaviour: 1. Select Tweak: click + drag rotates the viewport but at the same time also deselects the current selection (which is not supposed to happen) 2. Select Box: rotates the viewport (while it should actually deactivate viewport-navigation and instead perform a box-selection) 3. Select Circle: this selection mode behaves correctly as it deactivates viewport-navigation and instead performs a circle selection 4. Select Lasso: same as Select Box 5. In sculpting-mode the brushes behave correctly (by letting the user navigate the viewport when clicking on the background and performing the sculpting-operation when clicking on the mesh) but the box-operations can not be performed as the viewport-navigation is prioritized over the sculpting-operation. Here is a proposal for how blender could eventually resolve these conflicts: | Selection: Box, Circle, Lasso | Selection: Tweak | Sculpt: Brushes | Sculpt: Box-Operations | | -------- | -------- | -------- | -------- | | deactivate viewport navigation and only perform selection (as currently only circle-selection does) | clicking on the mesh -> selection - clicking on the background -> deselection - clicking + draging on the background -> viewport-navigation | unchanged behaviour: clicking on mesh -> sculpting - clicking + draging on the background -> viewport navigation | deactivate viewport navigation so that the user can performe the box-operation | (Eventually this feedback can be incorporated in some way.)
Poster
Collaborator

@A.Leo I think this is outside the scope of this task. It's more of a general limitation of the keymap customization what you're describing.
There is right now no way to frelly define additional contexts like if a click happens on the background or not. And there is also no way to make this a consistent feature within Blender. Some operations will have to run no matter where you click.

@A.Leo I think this is outside the scope of this task. It's more of a general limitation of the keymap customization what you're describing. There is right now no way to frelly define additional contexts like if a click happens on the background or not. And there is also no way to make this a consistent feature within Blender. Some operations will have to run no matter where you click.

@JulienKaspar Thank You very much for taking a look at my question!

@JulienKaspar Thank You very much for taking a look at my question!
Poster
Collaborator

I've been compiling a lot of issues on the LCS and RCS keymap so far.
Proposals are still WIP but I'd like to put together some tests and highlight what all the key changes are.

Here's a table of all the keymap entries for now:
https://docs.google.com/spreadsheets/d/1dadL6PLj8hjToKBzXgY3eJRg6SWPJFfWuFLl8wtOf-k/edit?usp=sharing

I've been compiling a lot of issues on the LCS and RCS keymap so far. Proposals are still WIP but I'd like to put together some tests and highlight what all the key changes are. Here's a table of all the keymap entries for now: https://docs.google.com/spreadsheets/d/1dadL6PLj8hjToKBzXgY3eJRg6SWPJFfWuFLl8wtOf-k/edit?usp=sharing
Poster
Collaborator

EDIT: More updated proposal in the task description above.

To give a bit more of an overview of the changes in that spreadsheet:

  • Free up space for user customization
    • Remove redundant shortcuts
    • Remove all brush shortcuts
  • Number Keys for selection modes
  • Shift LC for brush smoothing
  • Ctrl LC for inverted brush effect (or erasing)
  • Consistent LCS & RCS selection and context menus (see table below)
    • Consistent Lasso masking shortcuts
    • Consistent component selection
    • Consistent context menu access
  • A pie menu for selection operators (For consistency and easy auto-masking access)
    • Free up all other selection shortcuts
  • Alt A for auto-masking (Consistency)
  • E for face set operators and pie menu (To remove RCS conflict)
  • Shift S to toggle stabilize stroke
  • X for color swap
  • Shift X for color/weight sampling and Ctrl Shift X for vertex group sampling

LCS & RCS in affected modes

Any keybindings on Ctrl LC will be removed to avoid conflicts.
This will result in a bit of missing functionality in each keymap but nothing too major, as this means users will need to fall back on the Invert & Clear selection operators more.

Action LCS RCS
Context Menu Right Click W
Set Selection Ctrl LC → None RC
Extend/Toggle Selection Ctrl Shift LC Shift RC
Lasso Select Ctrl RC Ctrl LC → None
Lasso Deselect Ctrl Shift RC Ctrl Shift LC

Keymap inheritance

Keymap entries for Transform operators (Move, Rotate, Scale, Bend, Sphere) also need to be prevented from appearing automatically in the sculpting and painting modes once some shortcuts are freed.

EDIT: More updated proposal in the task description above. To give a bit more of an overview of the changes in that spreadsheet: - Free up space for user customization - Remove redundant shortcuts - Remove all brush shortcuts - `Number Keys` for selection modes - `Shift LC` for brush smoothing - `Ctrl LC` for inverted brush effect (or erasing) - Consistent LCS & RCS selection and context menus (see table below) - Consistent Lasso masking shortcuts - Consistent component selection - Consistent context menu access - `A` pie menu for selection operators (For consistency and easy auto-masking access) - Free up all other selection shortcuts - `Alt A` for auto-masking (Consistency) - `E` for face set operators and pie menu (To remove RCS conflict) - `Shift S` to toggle stabilize stroke - `X` for color swap - `Shift X` for color/weight sampling and `Ctrl Shift X` for vertex group sampling ### LCS & RCS in affected modes Any keybindings on `Ctrl LC` will be removed to avoid conflicts. This will result in a bit of missing functionality in each keymap but nothing too major, as this means users will need to fall back on the Invert & Clear selection operators more. | Action | LCS | RCS | | -------- | -------- | -------- | | Context Menu | Right Click | W | | Set Selection | Ctrl LC → None | RC | | Extend/Toggle Selection | Ctrl Shift LC | Shift RC | | Lasso Select | Ctrl RC | Ctrl LC → None | | Lasso Deselect | Ctrl Shift RC | Ctrl Shift LC | ### Keymap inheritance Keymap entries for Transform operators (Move, Rotate, Scale, Bend, Sphere) also need to be prevented from appearing automatically in the sculpting and painting modes once some shortcuts are freed.
Poster
Collaborator

Also: The operator to set selections in Weight Paint mode is vital, because it is used to select bones. It's not just to select components.
So leaving this unassigned on LCS is not wise. Maybe this can be solved in some way.

EDIT: I think the best solution is to map any brush action on Click Drag and any single click operator like select on Click.
This way in LCS we can still assign both select and the inverted brush effect on Shift LC.
This would affect all painting modes and grease pencil sculpt mode.
Mesh sculpt mode already made the decision to execute brushes on Click Drag years ago.

Also: The operator to set selections in Weight Paint mode is vital, because it is used to select bones. It's not just to select components. So leaving this unassigned on LCS is not wise. Maybe this can be solved in some way. EDIT: I think the best solution is to map any brush action on `Click Drag` and any single click operator like select on `Click`. This way in LCS we can still assign both select and the inverted brush effect on `Shift LC`. This would affect all painting modes and grease pencil sculpt mode. Mesh sculpt mode already made the decision to execute brushes on `Click Drag` years ago.
Poster
Collaborator

The Pie Menus for selections operations is probably the only controversial part of the proposal.
Main motivators behind this change are right now:

  • Free up Alt A for auto-masking pie menu
  • Offer fast Invert operator (On RCS this will be a frequent operator since there is no Lasso Select operator mapped. Only Lasso Deselect is available, just like in Sculpt Mode)
  • Consistency among all paint/draw/sculpt modes (Object/edit/pose modes keep their own mapping)

I'll keep thinking about an alternative solution to this than the A pie menu.

The Pie Menus for selections operations is probably the only controversial part of the proposal. Main motivators behind this change are right now: - Free up `Alt A` for auto-masking pie menu - Offer fast Invert operator (On RCS this will be a frequent operator since there is no Lasso Select operator mapped. Only Lasso Deselect is available, just like in Sculpt Mode) - Consistency among all paint/draw/sculpt modes (Object/edit/pose modes keep their own mapping) I'll keep thinking about an alternative solution to this than the A pie menu.
Poster
Collaborator

Some more ideas from talking with people:

  • Ctrl R can be assigned to 'Detail Flood Fill' for when Dyntopo is used. This would mirror the same shortcut for voxel remeshing

  • The necessity to use Click & Drag for brushes instead of on Press can be isolated to LCS. On RCS there is never a conflict between action & selection, so the brushes can still use on Press.

  • An alternative to the introduction of Click & Drag for strokes is to set '3 Mouse Button Emualtion' navigation on Alt LC to Click & Drag and use on Click Alt LC to set selections and Alt Shift LC to select extend/toggle. The only conflict with this is are the Gradient operators in Weight Paint Mode. These could be rebound to Shift A and Shift Alt A similar to Expand operators in sculpt mode, but need to be reworked so they don't wait for another click input.

  • The A pie menu should include operations for bone selection as well in diagonal directions. 'Deselect All Bones' and 'Invert Bone Selection' as well as selection operators for vert/face selection would all be availible at once. 'Select Parent Bone' and 'Select Child Bone' could also be included.

EDIT: Turns out this is not quite helpful because only a click selection makes the bone active and targets the assigned vertex group.
Instead the pie menu should be concext sensitive:
If no selection mode is active, the pie menu relates to bones.
If a selection mode is active, the pie menu relates to the targeted components.

  • The pie menu on E could be carried over to more modes as well for common visibility operators ('Invert visible' and 'Show All')

  • The original shortcut menu on E for stroke methods is still useful to some users. If it is replaced, the use case of switching between stroke types needs to be covered in a different way. Accessing the brush setting requires more clicks than using the menu. For now I put it back into the keymap revamp on Ctrl E.

  • Drag threshold on either brushes or navigation are not great. Another solution could be to restrict use of selection operators to selection tools on LCS.

Some more ideas from talking with people: - `Ctrl R` can be assigned to 'Detail Flood Fill' for when Dyntopo is used. This would mirror the same shortcut for voxel remeshing - The necessity to use `Click & Drag` for brushes instead of on `Press` can be isolated to LCS. On RCS there is never a conflict between action & selection, so the brushes can still use on `Press`. - An alternative to the introduction of `Click & Drag` for strokes is to set '3 Mouse Button Emualtion' navigation on `Alt LC` to `Click & Drag` and use on `Click` `Alt LC` to set selections and `Alt Shift LC` to select extend/toggle. The only conflict with this is are the Gradient operators in Weight Paint Mode. These could be rebound to `Shift A` and `Shift Alt A` similar to Expand operators in sculpt mode, but need to be reworked so they don't wait for another click input. - The `A` pie menu should include operations for bone selection as well in diagonal directions. 'Deselect All Bones' and 'Invert Bone Selection' as well as selection operators for vert/face selection would all be availible at once. 'Select Parent Bone' and 'Select Child Bone' could also be included. EDIT: Turns out this is not quite helpful because only a click selection makes the bone active and targets the assigned vertex group. Instead the pie menu should be concext sensitive: If no selection mode is active, the pie menu relates to bones. If a selection mode is active, the pie menu relates to the targeted components. - The pie menu on `E` could be carried over to more modes as well for common visibility operators ('Invert visible' and 'Show All') - The original shortcut menu on `E` for stroke methods is still useful to some users. If it is replaced, the use case of switching between stroke types needs to be covered in a different way. Accessing the brush setting requires more clicks than using the menu. For now I put it back into the keymap revamp on `Ctrl E`. - Drag threshold on either brushes or navigation are not great. Another solution could be to restrict use of selection operators to selection tools on LCS.
Julien Kaspar added
Status
Confirmed
and removed
Status
Needs Info from Developers
labels 2023-04-25 13:31:40 +02:00
Poster
Collaborator

In the recent module meeting we discussed the ways the conflicts with selection operators and MMB emulation can be solved.
I'll update the proposal with these notes.

The conclusion I came to is that all draw/sculpt/paint modes should be able to use

  • Alt LC Press to set a component selection (Same in weight paint mode for selecting bones)
  • Alt Shift LC Press to extend/toggle components to the selection

If MMB emulation is enabled in the preferences, the user needs to make a selection tool active to be able to use single click selection operations on

  • LC Press to set a component selection
  • Shift LC Press to extend/toggle components to the selection

The exception is selecting bones in weight paint mode which should be done on Ctrl Shift LC Press.

In the recent module meeting we discussed the ways the conflicts with selection operators and MMB emulation can be solved. I'll update the proposal with these notes. The conclusion I came to is that all draw/sculpt/paint modes should be able to use - `Alt LC` `Press` to set a component selection (Same in weight paint mode for selecting bones) - `Alt Shift LC` `Press` to extend/toggle components to the selection If MMB emulation is enabled in the preferences, the user needs to make a selection tool active to be able to use single click selection operations on - `LC` `Press` to set a component selection - `Shift LC` `Press` to extend/toggle components to the selection The exception is selecting bones in weight paint mode which should be done on `Ctrl Shift LC` `Press`.
Poster
Collaborator

Today I looked into and mapped the state of the Industry Compatible keymap for the sculpt, paint and draw modes. Here are some concerns:

  • Many important shortcuts are missing or inconsistently present between modes. Looks like a swiss cheese. It is fundamentally questionable if all sculpt, paint and grease pencil modes are usable
  • Some shortcuts of the default keymap were just copied over and don't seem very industry standard.
  • There are many shortcut conflicts and seemingly random bindings
  • New curve modes are just using the default keymap and need to be completely replaced

Overhauling the keymap seems like a necessity but also a huge undertaking with a lot of research, module involvement and testing.
The alternative is to only fix the worst conflicts and issues, which might be too little of an impact to make the keymap attractive for users.

Today I looked into and mapped the state of the Industry Compatible keymap for the sculpt, paint and draw modes. Here are some concerns: - Many important shortcuts are missing or inconsistently present between modes. Looks like a swiss cheese. It is fundamentally questionable if all sculpt, paint and grease pencil modes are usable - Some shortcuts of the default keymap were just copied over and don't seem very industry standard. - There are many shortcut conflicts and seemingly random bindings - New curve modes are just using the default keymap and need to be completely replaced Overhauling the keymap seems like a necessity but also a huge undertaking with a lot of research, module involvement and testing. The alternative is to only fix the worst conflicts and issues, which might be too little of an impact to make the keymap attractive for users.
Poster
Collaborator

Another update:
@DanielBystedt shared some common keybindings in other apps.
https://docs.google.com/spreadsheets/d/1LCxdG57MfBtRj9pbU92-S-xuRL_6G3y45HsroKyLIP0/edit#gid=0

The next step should be a table of vital pie menus and operator shortcuts from the default keymap.
Then we research what these would be in other applications.

Some feedback from users for the IC keymap:

  • Brush radial controls could be assigned to horizontal/vertical drag directions to save on shortcuts (Similar to Substance Painter). This would require some changes in the code though to allow vertical radial cahnges.
  • S could be used for stencil controls and resolve existing stencil conflicts
  • QWERT could be mapped to selection & transform tools for consistency
Another update: @DanielBystedt shared some common keybindings in other apps. https://docs.google.com/spreadsheets/d/1LCxdG57MfBtRj9pbU92-S-xuRL_6G3y45HsroKyLIP0/edit#gid=0 The next step should be a table of vital pie menus and operator shortcuts from the default keymap. Then we research what these would be in other applications. Some feedback from users for the IC keymap: - Brush radial controls could be assigned to horizontal/vertical drag directions to save on shortcuts (Similar to Substance Painter). This would require some changes in the code though to allow vertical radial cahnges. - `S` could be used for stencil controls and resolve existing stencil conflicts - `QWERT` could be mapped to selection & transform tools for consistency
Poster
Collaborator

EDIT: This info has been added to the task description.

I've done a lot more research and a full proposal for the IC keymap.
Here's a high level overview of all the changes before I make a prototype config for people to test.
If any shortcut isn't menitoned, that means it is unchanged.

EDIT: This info has been added to the task description. I've done a lot more research and a full proposal for the IC keymap. Here's a high level overview of **all the changes** before I make a prototype config for people to test. If any shortcut isn't menitoned, that means it is unchanged.

suggestions for sculpt mode

  • LC in empty space to invert the mask

  • CTRL+SHIFT+C for toggling local view

  • add free ROLLING and assign CTRL+SHIT+R to it and PGUP PGDN for the degrees

  • make use of W & R & M for other things and make T for all transformations just like in NOMAD SCULPT

  • ALT+W enable disable WIREFRAME

  • X for enable disable X symmetry and V for color swapping

  • ALT+S for symmetrize

  • CTRL+ALT+Z for undo history panel

suggestions for sculpt mode - LC in empty space to invert the mask - CTRL+SHIFT+C for toggling local view - add free ROLLING and assign CTRL+SHIT+R to it and PGUP PGDN for the degrees - make use of W & R & M for other things and make T for all transformations just like in NOMAD SCULPT - ALT+W enable disable WIREFRAME - X for enable disable X symmetry and V for color swapping - ALT+S for symmetrize - CTRL+ALT+Z for undo history panel

FreeCad uses middle button click without drag for "Frame under cursor", and is very handy. Blender has "Frame Selected" on the dot key, in the numeric keyboard and in the Pie Menu of the (ñ) key on the Spanish keyboard (with the name of View Select). If you use a laptop, it is a bit tedious.

I'd rather discuss this on Devtalk, but I can't sign up today.

FreeCad uses middle button click without drag for "Frame under cursor", and is very handy. Blender has "Frame Selected" on the dot key, in the numeric keyboard and in the Pie Menu of the (ñ) key on the Spanish keyboard (with the name of View Select). If you use a laptop, it is a bit tedious. I'd rather discuss this on Devtalk, but I can't sign up today.
Sign in to join this conversation.
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
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
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
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
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 Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#105298
There is no content yet.