Snap Polishing #108669
Open
opened 2023-06-06 17:42:59 +02:00 by Dalai Felinto
·
14 comments
No Branch/Tag Specified
main
blender-v4.0-release
temp-sculpt-dyntopo
blender-v3.6-release
universal-scene-description
blender-v3.3-release
asset-browser-frontend-split
brush-assets-project
asset-shelf
anim/armature-drawing-refactor-3
temp-sculpt-dyntopo-hive-alloc
tmp-usd-python-mtl
tmp-usd-3.6
blender-v3.5-release
blender-projects-basics
blender-v2.93-release
temp-sculpt-attr-api
realtime-clock
sculpt-dev
gpencil-next
bevelv2
microfacet_hair
xr-dev
principled-v2
v3.6.4
v3.6.3
v3.3.11
v3.6.2
v3.3.10
v3.6.1
v3.3.9
v3.6.0
v3.3.8
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
This issue affects/is about backward or forward compatibility
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
Compatibility
This issue affects/is about backward or forward compatibility
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
Compatibility
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
5 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#108669
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?
After the recent Snap improvements (
3010f1233b
33c13ae6e3
) I believe we need to do some polishing, revise some decisions as well as take 4.0 as a chance to set new defaults:cf967f8e08
) Revert the Transformed Snap Base (aka white aim gizmo) behavior to 3.6. Including not showing it for the new Snap Base functionality. Example of current (undesired) gizmo showing up:cf967f8e08
) Add an indicator of the Snap Base (i.e., X) when users manually set (click) a base.Here are my thoughts:
Rename Snap With → Snap Base
Rename to Snap Base is fine with me. Good to keep naming consistent
Rename Snap To → Snap Target
Rename to Snap Target is fine with me.
If another icon (e.g., a circle) would be better for the Snap Base. Keep in mind that the same icon is used for the Edge Perpendicular since it also shows the Snap Base
The icon is fine. One thing that could be nice during setting snap base is to hide the 4-arrow grab icon and only show the orange ring until setting base is done. Currently it is a little hard to see the snap base ring because of the 4-arrow icon.
New default options for snap for 4.0. Suggestion:
Snap To: Vertex & Edge & Face Project (i.e. 3 snap targets active)
Affect: Move + Rotate + Scale
Snap With: Median
Project individual elements: True
Align rotation to target: False (This setting is False by default. Just want to emphasize that I think it is good as it is)
Navigate during Transform (as default and remove as an option)
I'm not sure I know what this feature is or where to activate it.
Use the current snap options elsewhere (e.g., asset dragging and measurement tool).
Yes please! Especially for asset dragging from the asset browser
I agree with @DanielBystedt
One thing to add is that certain modes or workflows might require different snapping defaults.
But the main one that comes to mind is Retopology.
I'd suggest to look at this patch to improve the snapping behavior for modeling for retopogy tasks:
https://archive.blender.org/developer/D15406
The proposed defaults would not work well for retopology at all without this patch.
Note that these changes are proposed for Blender 4.0 and therefore decisions have to be made based on the latest daily build for 4.0.
In the 4.0 last daily build, the
Project individual elements
option was moved to a new list of modes and is now calledFace Project
(See #108555)I don't think it's a good idea to mix the
Snap To
options with theSnap Individual Elements To
options, as the snapping of individual elements often overlaps the "Snap Base" making it confusing to use.Note also that
Navigate during Transform
was a feature implemented in33c13ae6e3
. You can find this feature in the Keymap options. It is in the keymap options because, along with the new feature, some key transform modifiers need to be adjusted to avoid conflict with the navigation shortcuts. A debatable modifier key that was changed is the Proportional Editing. With the option disabled the key for Proportional Editing is just theMouse Scroll
, with the option enabled it becomesAlt
+Mouse Scroll
. (See #106008 for the design)(For "Use the current snap options elsewhere (e.g., asset dragging and measurement tool)" perhaps it would be good to consider the proposed change in #107854 as snap options can be used everywhere as long as the hidden
tool_settings.snap_elements_tool
option is'DEFAULT'
).I see that the best default options can differ according to the intended use: placement for architecture or vertex projection for retopology. The default option should benefit most uses.
The proposed change at https://archive.blender.org/developer/D15406 suggests adding an option to the Snapping Popover to hide most of the options and internally disable what is not desirable for retopology.

Hiding options according to other option doesn't seem like a good use of the UI. Disabling internally is hardcoded and doesn't seem to be a good practice either. If we want something for dedicated use, maybe we could think about Presets. Just like
Format Presets
:(I don't know if
Presets
is supported in Popovers though)(We also have a thread on devtalk where some of these issues were discussed: https://devtalk.blender.org/t/snapping-precision-modeling-improvements/28435/35)
@mano-wii Presets might be good. We could also have each workspace use its own snapping settings instead of having it as a Scene settings.
Note that https://archive.blender.org/developer/D15406 also introduces this functionality:
Using Vertex and Edge edge snapping methods is very undesireable for retopology because it also applies on the high res sculpt that is retopologized. So having these enabled by default is currently not good all the time.
I would suggest leaving the Preset discussion separately. They are probably overkill for the task (and add complexity to something that should be simple).
I like @DanielBystedt suggestions. I would go a step further on my initial post and propose to remove the "Closest" method altogether.
Small note, while we now have an indicator of when the snap base was selected (
cf967f8e08
) I think it should be adjusted.Right now the X shows the moment you press "B":
However it should only be visible after you manually set it.
And after I press B (in case I want to set it again) I also dont think it should show the X since we will replace it anyways.
The X conflicts with this patch: #107054 . In fact if we go with #107054, we could just use whatever icon was used for the Snap Base (e.g., the square if the Snap Base was a vertex).
I can only confirm this if the
Edge Perpendicular
snap mode is enabled.The current position of the

Snap Base
has some importance for theEdge Perpendicular
as it guides the user to find the closest point on each edge.Without it, in this case, the user may be disoriented.
Right, and I think we should disable (filter out) edge perpendicular (and probably face) when using the Snap Base.
Picking a Snap Base should ignore any previous defined base point (both the manually set, or the automatic ones). As such any snap option that works based on a the previous frame of reference (Snap Base) shouldn't be used to pick the Snap Base.
This happens with the other Snap types.
I see the point.
Snap Base
is being set, so apparently it shouldn't have a use during the feature.Currently, the
Edge Perpendicular
uses the last calculated/set Snap Base.At first glance, it seems reasonable to ignore
Edge Perpendicular
, but are there any situations where this current behavior is desirable? (I don't have any in mind right now).Benefits:
Edge Perpendicular
can be inconvenient to set the Snap BaseX
icon and making its display consistent only on confirmation.Disadvantages:
Edge Perpendicular
and can expect it to work somewhat inSnap Base
mode.If we don't think of a good use for it in the
Snap Base
setting feature, I believe we can ignore it in the feature.For
Face
I already think it would be strange not to support it.And I can think of utilities like working editing over an image on the face (where the user can choose to set the Snap Base at some point in the drawing).
PR created:
#108776 (Transform: Remove current 'Snap Base' in 'Set Snap Base' mode)
Apologies for the hijacking the topic, this is not a recent regression, but seems adequate to bring over snapping improvements.
For the longest time, if you have 3D View snapping enabled (magnet icon turned on), when in camera view (Numpad 0) if you move the active camera while the viewport is in camera perspective, the camera object always snaps to Increment (grid) regardless of active snap mode.
If you move the same camera from other 3D View, or from the same 3D View while not in camera perspective it behaves correctly, it moves freely unless snapping to active snap target.
In the following capture from the latest 4.0 Alpha build, default factory setting, I switched to camera view on the left 3D View, turned on snapping to vertex, only and moved the camera by grabbing the visible camera frame. If you notice the camera moves in increments which is unexpected and undesirable behavior. Moving it on the 3D View on the right you can see it moving freely.
Is this considered a bug? Should I report it separately, or do you think this can be addressed in this task?
@DuarteRamos, I appreciate the concern but this behavior is intentional. It's not a bug. And I don't see it as something that should be changed.
Ah I see, thanks for the feedback.
If you don't mind me asking what is the use case or rationale for this behavior, are there situations where this is desirable?
Adjusting camera position from camera view is generally a precision task that requires fine grained control; as it stands it becomes too coarse to be usable without pressing the Ctrl key.
This seems to contradict the snap settings. If desired, snapping to increment could be intentionally turned on to obtain the current behavior
To make progress on this task, I've created a new build with the changes mentioned originally.
Although issues related to Retopology, Workspaces, mouse cursors are relevant to the discussion, the solutions to these issues can become radical and can slow down the process.
The PR with the new build is !109062
The idea for now is just to test and confirm if the change is convenient for 4.0.
In the PR there are details on how to test.