Sculpt/Painting Modes: Revamp Keymap #105298
Open
opened 2023-02-28 15:23:23 +01:00 by Julien Kaspar
·
14 comments
No Branch/Tag Specified
temp-sculpt-dyntopo
main
asset-shelf
blender-v3.6-release
temp-sculpt-dyntopo-hive-alloc
brush-assets-project
blender-v3.3-release
tmp-usd-python-mtl
asset-browser-frontend-split
node-group-operators
blender-v2.93-release
universal-scene-description
temp-sculpt-attr-api
blender-v3.5-release
realtime-clock
sculpt-dev
gpencil-next
bevelv2
microfacet_hair
blender-projects-basics
xr-dev
principled-v2
v3.3.7
v2.93.18
v3.5.1
v3.3.6
v2.93.17
v3.5.0
v2.93.16
v3.3.5
v3.3.4
v2.93.15
v2.93.14
v3.3.3
v2.93.13
v2.93.12
v3.4.1
v3.3.2
v3.4.0
v3.3.1
v2.93.11
v3.3.0
v3.2.2
v2.93.10
v3.2.1
v3.2.0
v2.83.20
v2.93.9
v3.1.2
v3.1.1
v3.1.0
v2.83.19
v2.93.8
v3.0.1
v2.93.7
v3.0.0
v2.93.6
v2.93.5
v2.83.18
v2.93.4
v2.93.3
v2.83.17
v2.93.2
v2.93.1
v2.83.16
v2.93.0
v2.83.15
v2.83.14
v2.83.13
v2.92.0
v2.83.12
v2.91.2
v2.83.10
v2.91.0
v2.83.9
v2.83.8
v2.83.7
v2.90.1
v2.83.6.1
v2.83.6
v2.90.0
v2.83.5
v2.83.4
v2.83.3
v2.83.2
v2.83.1
v2.83
v2.82a
v2.82
v2.81a
v2.81
v2.80
v2.80-rc3
v2.80-rc2
v2.80-rc1
v2.79b
v2.79a
v2.79
v2.79-rc2
v2.79-rc1
v2.78c
v2.78b
v2.78a
v2.78
v2.78-rc2
v2.78-rc1
v2.77a
v2.77
v2.77-rc2
v2.77-rc1
v2.76b
v2.76a
v2.76
v2.76-rc3
v2.76-rc2
v2.76-rc1
v2.75a
v2.75
v2.75-rc2
v2.75-rc1
v2.74
v2.74-rc4
v2.74-rc3
v2.74-rc2
v2.74-rc1
v2.73a
v2.73
v2.73-rc1
v2.72b
2.72b
v2.72a
v2.72
v2.72-rc1
v2.71
v2.71-rc2
v2.71-rc1
v2.70a
v2.70
v2.70-rc2
v2.70-rc
v2.69
v2.68a
v2.68
v2.67b
v2.67a
v2.67
v2.66a
v2.66
v2.65a
v2.65
v2.64a
v2.64
v2.63a
v2.63
v2.61
v2.60a
v2.60
v2.59
v2.58a
v2.58
v2.57b
v2.57a
v2.57
v2.56a
v2.56
v2.55
v2.54
v2.53
v2.52
v2.51
v2.50
v2.49b
v2.49a
v2.49
v2.48a
v2.48
v2.47
v2.46
v2.45
v2.44
v2.43
v2.42a
v2.42
v2.41
v2.40
v2.37a
v2.37
v2.36
v2.35a
v2.35
v2.34
v2.33a
v2.33
v2.32
v2.31a
v2.31
v2.30
v2.28c
v2.28a
v2.28
v2.27
v2.26
v2.25
Labels
Clear labels
Issues relating to security: https://wiki.blender.org/wiki/Process/Vulnerability_Reports
Apply labels
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
Issues relating to security: https://wiki.blender.org/wiki/Process/Vulnerability_Reports
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 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
Milestone
Set milestone
Clear milestone
No items
No Milestone
Projects
Set Project
Clear projects
No project
Assignees
Assign users
Clear assignees
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
Reference in New Issue
There is no content yet.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may exist for a short time before cleaning up, in most cases it CANNOT be undone. Continue?
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
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.
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
onPress
to set a selectionShift LC
onPress
to extend/toggle the selectionALt LC
/Shift Alt LC
for face loop selectionTo 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
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 accessProposal
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
Number Keys
for selection modesShift LC
for brush smoothingCtrl LC
for inverted brush effect or erasingShift S
to toggle stabilize stroke (Now consistent in every mode)Sculpting
Shift X
for color pickingE
+ modifier keys for all face set operators and pie menu (To remove RCS conflict onW
)Ctrl R
for Detail Flood Fill if Dyntopo is activeAlt 1
&Alt 2
for decreasing and increasing Multires levels in sculpt modeH
andShift H
shortcuts in sculpt modePainting
X
for color swapCtrl X
for color/weight filling (Vertex/Weight Paint Mode)Shift X
for color/weight sampling andCtrl Shift X
for vertex group samplingGrease Pencil
Alt I
for Delete Active Frame Menu in grease pencil Draw Mode (instead ofX
Shift X
andShift Del
for various deleting shortcuts)Selection Pie Menu
A
pie menu for selection operators (For consistency among sculpting & painting modes). See example image in attachments.Alt A
for auto-masking pie menuThe operators exposed in the selection pie menu are generally:
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
S
&U
are now consistently mapped for Brush size & strengthMode 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 (previously4-7
for individual modes)Tilde
= Transfer Mode (Previously not mapped. Useful for instant object switching while keeping the current mode)5-0
= UnassignedBrush 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 1Z
Shift
LMB
= Rotate Stencil 1Z
Shift
RMB
= Scale Stencil 1Z
Shift
Alt
MMB
= Move Stencil 2Z
Shift
Alt
LMB
= Rotate Stencil 2Z
Shift
Alt
RMB
= Scale Stencil 2Brush 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 ModeShift
Alt
A
= Expand Mask by NormalsFace 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 ToolE
= Rotate ToolR
= Scale ToolT
= Transform ToolShift
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 onPg Down
)Shift
Alt
D
= Subdivsion level Up (Previously onPg Up
)Ctrl
D
= Voxel Size / Dyntopo Size (Now context dependent and mutually exclusive)Ctrl
Shift
D
= Voxel Remesh / Dyntopo Flood FillPainting
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 onI
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 onD
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 onShift
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 toShift L
.When changing the shortcut for
gpencil.select
toShift LC
instead ofAlt 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.
(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:
Here is a proposal for how blender could eventually resolve these conflicts:
(Eventually this feedback can be incorporated in some way.)
@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!
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
EDIT: More updated proposal in the task description above.
To give a bit more of an overview of the changes in that spreadsheet:
Number Keys
for selection modesShift LC
for brush smoothingCtrl LC
for inverted brush effect (or erasing)A
pie menu for selection operators (For consistency and easy auto-masking access)Alt A
for auto-masking (Consistency)E
for face set operators and pie menu (To remove RCS conflict)Shift S
to toggle stabilize strokeX
for color swapShift X
for color/weight sampling andCtrl Shift X
for vertex group samplingLCS & 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.
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.
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 onClick
.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.The Pie Menus for selections operations is probably the only controversial part of the proposal.
Main motivators behind this change are right now:
Alt A
for auto-masking pie menuI'll keep thinking about an alternative solution to this than the A pie menu.
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 remeshingThe necessity to use
Click & Drag
for brushes instead of onPress
can be isolated to LCS. On RCS there is never a conflict between action & selection, so the brushes can still use onPress
.An alternative to the introduction of
Click & Drag
for strokes is to set '3 Mouse Button Emualtion' navigation onAlt LC
toClick & Drag
and use onClick
Alt LC
to set selections andAlt Shift LC
to select extend/toggle. The only conflict with this is are the Gradient operators in Weight Paint Mode. These could be rebound toShift A
andShift 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 onCtrl 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.
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 selectionIf 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 selectionShift LC
Press
to extend/toggle components to the selectionThe exception is selecting bones in weight paint mode which should be done on
Ctrl Shift LC
Press
.Today I looked into and mapped the state of the Industry Compatible keymap for the sculpt, paint and draw modes. Here are some concerns:
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.
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:
S
could be used for stencil controls and resolve existing stencil conflictsQWERT
could be mapped to selection & transform tools for consistencyEDIT: 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
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.