WIP: Snapping Redesign: Defaults | Navigation | Drawing | Removals #109062

Draft
Germano Cavalcante wants to merge 29 commits from mano-wii/blender:snap_defaults into main

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.

This PR is a step towards applying the changes suggested in #108669.

The changes here are:

  • The Snap Base symbol has been changed (before it was an X, now it is the same as the target)
  • Navigation while transforming is now always enabled.
  • Tools and DragDrop snapping now follow the options set in the scene.
  • Default Snap To: Vertex, Edge, Edge Center and Edge Perpendicular
  • Default Affect: Move, Rotate and Scale

Also made another minor change not mentioned in the main task:

  • The order of elements in the Snap menu has been changed.

GIF.gif

How to test:

Snap Base symbol

  • Select any object, press G + B, click on a snapped point or
  • Try Snap Perpendicular either with the Measure Tool or by moving objects

One of the reasons for this change was to not conflict with any possible symbols used for #107054. These symbols follow a pattern already quite usual in the industry.

Navigation while transforming

  • Press G, R or S to move, rotate or scale an object. Mouse Scroll to Zoom

Note now that to change the Proportional Edit area you now need to press Alt and Scrool with the Mouse.

Tools and DragDrop snapping

  • Enable Snap and test the Measure Tool to measure an object.
  • Enable Snap, grab any object in the Outliner and drag it into the 3D View.

TODO:

  • Disable unpredictable snapping of Rotate and Scale if the Pivot is in the same position as the Snap Base

Builds:

https://builder.blender.org/download/patch/PR109062/

This PR is a step towards applying the changes suggested in #108669. The changes here are: - The `Snap Base` symbol has been changed (before it was an X, now it is the same as the target) - Navigation while transforming is now always enabled. - Tools and DragDrop snapping now follow the options set in the scene. - Default `Snap To`: `Vertex`, `Edge`, `Edge Center` and `Edge Perpendicular` - Default `Affect`: `Move`, `Rotate` and `Scale` Also made another minor change not mentioned in the main task: - The order of elements in the Snap menu has been changed. --- ![GIF.gif](attachments/c15358f6-b3b6-4415-a939-61fe71fd8674) ## How to test: ## **Snap Base** symbol - Select any object, press `G` + `B`, click on a snapped point or - Try Snap Perpendicular either with the Measure Tool or by moving objects One of the reasons for this change was to not conflict with any possible symbols used for #107054. These symbols follow a pattern already quite usual in the industry. ## Navigation while transforming - Press `G`, `R` or `S` to move, rotate or scale an object. Mouse Scroll to Zoom Note now that to change the Proportional Edit area you now need to press `Alt` and Scrool with the Mouse. ## Tools and DragDrop snapping - Enable Snap and test the Measure Tool to measure an object. - Enable Snap, grab any object in the Outliner and drag it into the 3D View. ## TODO: - Disable unpredictable snapping of Rotate and Scale if the `Pivot` is in the same position as the `Snap Base` ## Builds: https://builder.blender.org/download/patch/PR109062/
Germano Cavalcante added 1 commit 2023-06-16 21:25:01 +02:00
buildbot/vexp-code-patch-coordinator Build done. Details
54d99db227
Snapping Redesign: Defaults | Navigation | Drawing | Removals
This PR is a step towards applying the changes suggested in #108669.

The changes here are:
- The `Snap Base` symbol has been changed (before it was an X, now it is a small target)
- Navigation while transforming is now always enabled.
- The `Snap With` `Closest` option has been removed (`Median` is the new default).
- Tools and DragDrop snapping now follow the options set in the scene.
- Default `Snap To`: `Vertex`, `Edge`, `Edge Center` and `Edge Perpendicular`
- Default `Affect`: `Move`, `Rotate` and `Scale`

Also made another minor change not mentioned in the main task:
- The order of elements in the Snap menu has been changed.

---
##How to test:

# `Snap Base` symbol:
- Select any object, press `G` + `B`, click on a snapped point or
- Try Snap Perpendicular either with the Measure Tool or by moving objects

# Navigation while transforming
- Press `G`, `R` or `S` to move, rotate or scale an object. Mouse Scroll to Zoom

Note now that to change the Proportional Edit area you now need to press `Alt` and Scrool with the Mouse.

# Tools and DragDrop snapping
- Enable Snap and test the Measure Tool to measure an object.
- Enable Snap, grab any object in the Outliner and drag it into the 3D View.
Author
Member

@blender-bot package

@blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR109062) when ready.
First-time contributor

The removal of Closest snapping seems like a step backwards to me. I understand the need to remove redundancy, but in this case it doesn't serve us well. It makes the snapping workflow much slower, by forcing one to set a base point most of the time.

Unless an option exists to always ask for a base point before any transformation (which would still be more cumbersome than current behavior) , the removal of closest makes some trivial snapping scenarios unpractical.

For example it makes Scale snapping seem broken and not work by default when using Median , neither in Edit Mode nor in Object Mode.

See this common scenario that used to work well before

The removal of _Closest_ snapping seems like a step backwards to me. I understand the need to remove redundancy, but in this case it doesn't serve us well. It makes the snapping workflow much slower, by forcing one to set a base point most of the time. Unless an option exists to always ask for a base point before any transformation (which would still be more cumbersome than current behavior) , the removal of closest makes some trivial snapping scenarios unpractical. For example it makes _Scale_ snapping seem broken and not work by default when using _Median_ , neither in _Edit Mode_ nor in _Object Mode_. See this common scenario that used to work well before <video src="/attachments/ae533204-ee13-4778-9e5b-895d9fd04d07" title="Blender_SnapScale.mp4" controls></video>
Germano Cavalcante added 2 commits 2023-06-17 21:54:10 +02:00
Author
Member

I merged the patch #107054. This will make it easier to test and better decide the design for Snap Base.

@DuarteRamos , good explanation and demonstration.
Removing Closest is indeed one of the most controversial points.
It is worth remembering that this patch is not the final decision.
Closest has some drawbacks, confusing usage, different behavior depending on mode...
Now it can kind of be replaced by Snap Base.

Removing it could have the advantage of simplifying the interface and usage.

But I can see that keeping it has its advantages. And Median doesn't seem to be the most ideal for Scale and Rotate operations.

In fact, removing it might not be the most convenient.

I merged the patch #107054. This will make it easier to test and better decide the design for `Snap Base`. @DuarteRamos , good explanation and demonstration. Removing `Closest` is indeed one of the most controversial points. It is worth remembering that this patch is not the final decision. `Closest` has some drawbacks, confusing usage, different behavior depending on mode... Now it can kind of be replaced by `Snap Base`. Removing it could have the advantage of simplifying the interface and usage. But I can see that keeping it has its advantages. And `Median` doesn't seem to be the most ideal for Scale and Rotate operations. In fact, removing it might not be the most convenient.
Germano Cavalcante changed title from Snapping Redesign: Defaults | Navigation | Drawing | Removals to WIP: Snapping Redesign: Defaults | Navigation | Drawing | Removals 2023-06-17 22:11:48 +02:00
Author
Member

@blender-bot package

@blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR109062) when ready.
Germano Cavalcante added 3 commits 2023-06-19 15:48:46 +02:00
Author
Member

Update:

The Snap Base symbol is now the Snap Target symbol at confirmation time.

@blender-bot package

Update: The Snap Base symbol is now the Snap Target symbol at confirmation time. @blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR109062) when ready.
Germano Cavalcante added 2 commits 2023-06-19 22:05:29 +02:00
Author
Member

I updated the PR so that:

  • the Snap Base symbol is now the circle when the type (Edge, Vertex or Edge Center) is not defined.
  • The Snap Base in Set Snap Base mode appears while multi-point snap points (A key) are being added.

@blender-bot package

I updated the PR so that: - the `Snap Base` symbol is now the circle when the type (Edge, Vertex or Edge Center) is not defined. - The `Snap Base` in `Set Snap Base` mode appears while multi-point snap points (`A` key) are being added. @blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR109062) when ready.
Germano Cavalcante added 2 commits 2023-06-21 17:18:59 +02:00
Author
Member

@blender-bot package

@blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR109062) when ready.
First-time contributor

Latest build seems to have broken snapping to and from curves.

Setting base point while in curve edit mode also doesn't work for curve points, only meshes or other object types.

BSE_CameraSnap.gif

Latest build seems to have broken snapping to and from curves. Setting base point while in curve edit mode also doesn't work for curve points, only meshes or other object types. ![BSE_CameraSnap.gif](/attachments/bf6dbb4c-6c5f-4552-bdb8-1bf4e88f4b41)
Germano Cavalcante added 1 commit 2023-06-21 19:23:29 +02:00
buildbot/vexp-code-patch-coordinator Build done. Details
bf3f970fcb
Merge branch 'main' into snap_defaults
Author
Member

@blender-bot package

@blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR109062) when ready.
Germano Cavalcante added 8 commits 2023-06-23 02:30:30 +02:00
Author
Member

Updates:

  • Closest option has been brought back (and it's the default one as it works well with Scale and Rotate).
  • New design for the snapping symbol

GIF

For the design I considered what was mentioned in devtalk.

The design mixes two solutions. Symbols and icons.

The choice of icons followed the logic:

  • Circle(∞l): indicates that the snap is loose in space (Snap to Volume, Multiple snap points added or the Undefined Base Snap);
  • Pentagon(5l): Indicates that the snap is loose on a Face;
  • Diamond(4l): Indicates that the snap is loose on an Edge;
  • Triangle(3l): Indicates that the snap is on a well-defined point.

@blender-bot package

Updates: - `Closest` option has been brought back (and it's the default one as it works well with Scale and Rotate). - New design for the snapping symbol ![GIF](/attachments/12a10af7-d223-4b49-a315-555c3baba56a) For the design I considered what was mentioned in [devtalk](https://devtalk.blender.org/t/snapping-precision-modeling-improvements-new-defaults-snap-icons-and-removals/29985). The design mixes two solutions. Symbols and icons. The choice of icons followed the logic: - Circle(∞l): indicates that the snap is loose in space (Snap to Volume, Multiple snap points added or the Undefined Base Snap); - Pentagon(5l): Indicates that the snap is loose on a Face; - Diamond(4l): Indicates that the snap is loose on an Edge; - Triangle(3l): Indicates that the snap is on a well-defined point. @blender-bot package
554 KiB
Germano Cavalcante added 2 commits 2023-06-23 03:39:07 +02:00
Author
Member

And another change: rename "Mix" to "Multi" when enabling more than one type of snap.

"Multi" is a more direct name that indicates that more than one option is being enabled, while "Mix" implies that the enabled options are creating a mixed type of snap.

@blender-bot package

And another change: rename "Mix" to "Multi" when enabling more than one type of snap. "Multi" is a more direct name that indicates that more than one option is being enabled, while "Mix" implies that the enabled options are creating a mixed type of snap. @blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR109062) when ready.
First-time contributor

Really like where this is going now, the pictogram icons and the snap indicators overlays really add to the experience.
Curve snapping is now working as intended, and Closest snap is back.

I seen now that the snap source icon is no longer a dedicated shape, but takes on the shape type of the type of snapped geometry.

I really like them and I'd certainly keep them on, but I can see it how some will find them too obtrusive. Risking aggravating the excess of options maybe make them optional as a preference, or a toggle in the 3D View overlay perhaps.

In my display they are considerably smaller that your screen capture, they are hard to see because of size and occlusion from the transform cursor. If possible maybe make them scale along with the Interface > Resolution Scale preference.

67.png

Regarding the shapes, I like how you've set up a "hierarchy" based on the constrained degrees of freedom, but maybe we can make some improvements. Some shapes are hard to distinguish (pentagon and circle become the same at small scale), and may feel out of place. Id suggest something like:

Blender_SnapIcons_Snap_03DOF.png 3 DOF - No snap set, volume snap

Blender_SnapIcons_Snap_02DOF.png 2 DOF - Snap to face (square is vaguely reminiscent of a face)

Blender_SnapIcons_Snap_01DOF.png 1 DOF - Snap to an Edge

Blender_SnapIcons_Snap_00DOF.png 0 DOF - Snap to a point (Center, Vertex, Empty, X marks the spot)

Blender_SnapIcons_Snap_Source.png Snap source - Optionally, when the base point snap is defined and the transform operation starts, use this icon to show the base point different from the rest.

Really like where this is going now, the pictogram icons and the snap indicators overlays really add to the experience. Curve snapping is now working as intended, and _Closest_ snap is back. I seen now that the snap source icon is no longer a dedicated shape, but takes on the shape type of the type of snapped geometry. I really like them and I'd certainly keep them on, but I can see it how some will find them too obtrusive. Risking aggravating the excess of options maybe make them optional as a preference, or a toggle in the 3D View overlay perhaps. In my display they are considerably smaller that your screen capture, they are hard to see because of size and occlusion from the transform cursor. If possible maybe make them scale along with the _Interface > Resolution Scale_ preference. ![67.png](/attachments/697bebc6-8ee0-4680-b965-b0bd5125be17) Regarding the shapes, I like how you've set up a "hierarchy" based on the constrained degrees of freedom, but maybe we can make some improvements. Some shapes are hard to distinguish (pentagon and circle become the same at small scale), and may feel out of place. Id suggest something like: ![Blender_SnapIcons_Snap_03DOF.png](/attachments/7ef7c568-ece6-4526-ab3b-0025a384af3a) 3 DOF - No snap set, volume snap ![Blender_SnapIcons_Snap_02DOF.png](/attachments/87e05a76-4908-4423-a595-d118c5741af2) 2 DOF - Snap to face (square is vaguely reminiscent of a face) ![Blender_SnapIcons_Snap_01DOF.png](/attachments/6e859d59-e324-4785-be2c-aa0e957afbe2) 1 DOF - Snap to an Edge ![Blender_SnapIcons_Snap_00DOF.png](/attachments/bb0201a9-5cdf-4b30-b5b5-e7beb412fb0f) 0 DOF - Snap to a point (Center, Vertex, Empty, X marks the spot) ![Blender_SnapIcons_Snap_Source.png](/attachments/7b7a50e7-994d-4b8a-9069-44c76c1cc386) Snap source - Optionally, when the base point snap is defined and the transform operation starts, use this icon to show the base point different from the rest.
First-time contributor

One other thing regarding Navigate during Transform.

It works pretty well so far. In my personal keymap I use a custom Right-Click-Drag to rotate view (orbit).
I had to change all context menu entries to Click (instead of default Press to avoid conflict).

I've also changed View 3D Transform Modal > Cancel from Right-Mouse Press to Right-Mouse Click but could get my custom keymap to work during transform.

It is fine as it is, not really a major concern but I was wondering if it is supported at all, or is it just an accepted limitation of the system.

Should I have added a new entry for my custom Right-Click-Drag anywhere else? I couldn't figure out where.

One other thing regarding Navigate during Transform. It works pretty well so far. In my personal keymap I use a custom <kbd>Right-Click-Drag</kbd> to rotate view (orbit). I had to change all context menu entries to _Click_ (instead of default _Press_ to avoid conflict). I've also changed _View 3D Transform Modal > Cancel_ from <kbd>Right-Mouse Press</kbd> to <kbd>Right-Mouse Click</kbd> but could get my custom keymap to work during transform. It is fine as it is, not really a major concern but I was wondering if it is supported at all, or is it just an accepted limitation of the system. Should I have added a new entry for my custom <kbd>Right-Click-Drag</kbd> anywhere else? I couldn't figure out where.
Author
Member

Thanks for the mockup @DuarteRamos, I liked the suggestion.

I was thinking about something like this:

image

Notice that the Snap to Edge symbol aligns with the Edge. Center and Perpendicular too.

But I need to test every idea.

Thanks for the mockup @DuarteRamos, I liked the suggestion. I was thinking about something like this: ![image](/attachments/5f924d94-2a11-424e-a923-226582ac83b5) Notice that the Snap to Edge symbol aligns with the Edge. Center and Perpendicular too. But I need to test every idea.
First-time contributor

Those do look better, especially the edge snap one, I really wasn't a fan of mine.

Will it line up parallel with the edge it is snapping to? Sounds hard to achieve but If it did it would look great.

Those do look better, especially the edge snap one, I really wasn't a fan of mine. Will it line up parallel with the edge it is snapping to? Sounds hard to achieve but If it did it would look great.
Germano Cavalcante added 8 commits 2023-06-23 17:57:07 +02:00
Author
Member

In the end, after a discussion in PM, the symbols returned to the initial proposal (with some minor changes):

GIF

Note that there is a distinction between snap for Loose Points and Edge Points (Endpoints)

@blender-bot package

In the end, after a discussion in PM, the symbols returned to the initial proposal (with some minor changes): ![GIF](/attachments/740b54c6-6643-46d9-9865-f51db1b95320) Note that there is a distinction between snap for Loose Points and Edge Points (Endpoints) @blender-bot package
235 KiB
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR109062) when ready.
All checks were successful
buildbot/vexp-code-patch-coordinator Build done.
This pull request has changes conflicting with the target branch.
  • scripts/presets/keyconfig/Blender.py
  • scripts/presets/keyconfig/keymap_data/blender_default.py
  • scripts/startup/bl_operators/view3d.py
  • scripts/startup/bl_ui/space_view3d.py
  • source/blender/blenkernel/BKE_blender_version.h
  • source/blender/blenkernel/BKE_bvhutils.h
  • source/blender/blenkernel/intern/bvhutils.cc
  • source/blender/blenloader/intern/versioning_300.cc
  • source/blender/blenloader/intern/versioning_400.cc
  • source/blender/editors/curve/editcurve.c

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u snap_defaults:mano-wii-snap_defaults
git checkout mano-wii-snap_defaults
Sign in to join this conversation.
No reviewers
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
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
Overlay
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
Interest
Workbench
Interest: X11
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 project
No Assignees
3 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#109062
No description provided.