WIP: Visualize snapping type by showing different symbols #107054

Closed
Erik Abrahamsson wants to merge 1 commits from erik85/blender:snap-symbols into main

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

To make it easier to see where a snap is happening, instead of a circle this patch draws different symbols for the most common snap types.

This applies to the ruler tool and transform in 3D View.

GIF.gif

Build:
https://builder.blender.org/download/patch/PR107054/

To make it easier to see where a snap is happening, instead of a circle this patch draws different symbols for the most common snap types. This applies to the ruler tool and transform in 3D View. ![GIF.gif](attachments/740b54c6-6643-46d9-9865-f51db1b95320) **Build:** https://builder.blender.org/download/patch/PR107054/
Erik Abrahamsson added the
Module
User Interface
label 2023-04-17 23:05:46 +02:00

Interesting proposal.
This is something I've worked on before, but the symbols I used were the same icons shown in the Snap Menu:
Snap Menu.png
(The idea didn't sit well at the time)

I wonder if it wouldn't be nice to update the Snap Menu as well to use icons that represent those same symbols.

I would also like to know what motivated the choice of these specific symbols. Was it a community choice?

Interesting proposal. This is something I've worked on before, but the symbols I used were the same icons shown in the Snap Menu: ![Snap Menu.png](/attachments/6c149b66-e3f9-4dd8-a801-2da79af21830) (The idea didn't sit well at the time) I wonder if it wouldn't be nice to update the Snap Menu as well to use icons that represent those same symbols. I would also like to know what motivated the choice of these specific symbols. Was it a community choice?
Author
Member

I would also like to know what motivated the choice of these specific symbols. Was it a community choice?

These are the symbols I'm familiar with from CAD software I've been working with previously. I can't show a screenshot here I suppose but make an image search for "object snap settings autocad" to see what I mean.
Could be any symbols I suppose, or even drawing an icon next to the circle or something like that. The important thing is to be able to very easily see which type of snap is active. This is essential for the measure tool to be useable in a production environment.

> I would also like to know what motivated the choice of these specific symbols. Was it a community choice? These are the symbols I'm familiar with from CAD software I've been working with previously. I can't show a screenshot here I suppose but make an image search for "object snap settings autocad" to see what I mean. Could be any symbols I suppose, or even drawing an icon next to the circle or something like that. The important thing is to be able to very easily see which type of snap is active. This is essential for the measure tool to be useable in a production environment.

I would like to see the opinion of the User Interface team on this.
Personally, I feel that the current 'single symbol' behavior has its advantage of being more "clean".
I'm also not sure about using symbols from other software (unless it's some international convention).

(Updating snap icons might be something for another PR).

I would like to see the opinion of the `User Interface` team on this. Personally, I feel that the current 'single symbol' behavior has its advantage of being more "clean". I'm also not sure about using symbols from other software (unless it's some international convention). (Updating snap icons might be something for another PR).
Author
Member

Personally, I feel that the current 'single symbol' behavior has its advantage of being more "clean".

I'm trying to use Blender for showing 3d models in a production environment where the users need to be able to grab measurements from the models, and it's pretty much impossible to find endpoints or midpoints as it is today. So I don't think cleanliness makes any sense as an argument. Useability should be much more important.

> Personally, I feel that the current 'single symbol' behavior has its advantage of being more "clean". I'm trying to use Blender for showing 3d models in a production environment where the users need to be able to grab measurements from the models, and it's pretty much impossible to find endpoints or midpoints as it is today. So I don't think cleanliness makes any sense as an argument. Useability should be much more important.

Ah, it's also good to remember that there are other symbols in the queue waiting to enter the transform code. See !104443

As the symbols in this PR may overlap with some new ones being proposed, it might be better to wait for them.

Ah, it's also good to remember that there are other symbols in the queue waiting to enter the transform code. See !104443 As the symbols in this PR may overlap with some new ones being proposed, it might be better to wait for them.
Author
Member

Ah, it's also good to remember that there are other symbols in the queue waiting to enter the transform code. See !104443

As the symbols in this PR may overlap with some new ones being proposed, it might be better to wait for them.

Nice, I haven't seen that. I'm unfortunately in a hurry because people are deciding the coming weeks if we should use Blender as I suggested or buy a subscription on expensive CAD software we don't really need. I guess I could make a custom build for internal use with these symbols until something happens.

> Ah, it's also good to remember that there are other symbols in the queue waiting to enter the transform code. See !104443 > > As the symbols in this PR may overlap with some new ones being proposed, it might be better to wait for them. Nice, I haven't seen that. I'm unfortunately in a hurry because people are deciding the coming weeks if we should use Blender as I suggested or buy a subscription on expensive CAD software we don't really need. I guess I could make a custom build for internal use with these symbols until something happens.

That patch brings me joy :)

I find it great as it is. I don't see now #104443 interfers with this. If anything it raises the stake for the other patch to come up with icons following this language.

That patch brings me joy :) I find it great as it is. I don't see now #104443 interfers with this. If anything it raises the stake for the other patch to come up with icons following this language.

I don't know what the previous objections were for showing the snap icons, but I can imagine they would be in the way when shown exactly where the cursor is pointing. The thin circle, and shapes in this PR don't have that problem as much.

To use the snapping icons for consistency, it could show them out of the way a bit. Maybe at the bottom right of the cursor, or similar to the measure distance.

I don't know what the previous objections were for showing the snap icons, but I can imagine they would be in the way when shown exactly where the cursor is pointing. The thin circle, and shapes in this PR don't have that problem as much. To use the snapping icons for consistency, it could show them out of the way a bit. Maybe at the bottom right of the cursor, or similar to the measure distance.
Member

That is pretty nice!

With the endpoints having important information though, they can be obstructed at some angles and for some short distances. I would love to also consider something like this https://archive.blender.org/developer/D10128 which moves the measurement away from the endpoints.

That is pretty nice! With the endpoints having important information though, they can be obstructed at some angles and for some short distances. I would love to _also_ consider something like this https://archive.blender.org/developer/D10128 which moves the measurement away from the endpoints.
Author
Member

That is pretty nice!

With the endpoints having important information though, they can be obstructed at some angles and for some short distances. I would love to also consider something like this https://archive.blender.org/developer/D10128 which moves the measurement away from the endpoints.

Yes that is one thing among many improvements that can be made. I also tried showing the XYZ components separately too with red/green/blue colors. That give a much better sense of depth, and removes the need for the XYZ keys to lock the axes.
Another thing is if we want to support measuring on a touch screen, it would be much better to have drag and release to pick the points as it's impossible to hover to see the snap points.

> That is pretty nice! > > With the endpoints having important information though, they can be obstructed at some angles and for some short distances. I would love to _also_ consider something like this https://archive.blender.org/developer/D10128 which moves the measurement away from the endpoints. Yes that is one thing among many improvements that can be made. I also tried showing the XYZ components separately too with red/green/blue colors. That give a much better sense of depth, and removes the need for the XYZ keys to lock the axes. Another thing is if we want to support measuring on a touch screen, it would be much better to have drag and release to pick the points as it's impossible to hover to see the snap points.

I found the patch where I proposed something similar. In this link we can see the discussion in the comments:
https://archive.blender.org/developer/differential/0005/0005546/index.html

About this PR, it feels a bit incomplete that only the snaps for Vertice, Edge and Edge Middle have a special icon. It is understandable that Vertice and Edge Middle might require better differentiation. But it's not clear why to propose 3 new icons when only 1 (either for Vertice or Edge Middle) would solve the confusion.

I found the patch where I proposed something similar. In this link we can see the discussion in the comments: https://archive.blender.org/developer/differential/0005/0005546/index.html About this PR, it feels a bit incomplete that only the snaps for Vertice, Edge and Edge Middle have a special icon. It is understandable that Vertice and Edge Middle might require better differentiation. But it's not clear why to propose 3 new icons when only 1 (either for Vertice or Edge Middle) would solve the confusion.
Author
Member

About this PR, it feels a bit incomplete that only the snaps for Vertice, Edge and Edge Middle have a special icon. It is understandable that Vertice and Edge Middle might require better differentiation. But it's not clear why to propose 3 new icons when only 1 (either for Vertice or Edge Middle) would solve the confusion.

To me the confusion is not only about vertex/middle edge but all 4 types shown in the gif can be confused with any of the other basically. That's why I proposed 3 new symbols to make sure each one has its own symbol.

> About this PR, it feels a bit incomplete that only the snaps for Vertice, Edge and Edge Middle have a special icon. It is understandable that Vertice and Edge Middle might require better differentiation. But it's not clear why to propose 3 new icons when only 1 (either for Vertice or Edge Middle) would solve the confusion. To me the confusion is not only about vertex/middle edge but all 4 types shown in the gif can be confused with any of the other basically. That's why I proposed 3 new symbols to make sure each one has its own symbol.
Erik Abrahamsson changed title from Visualize snapping type by showing different symbols to WIP: Visualize snapping type by showing different symbols 2023-04-26 16:04:56 +02:00
Member

To me the confusion is not only about vertex/middle edge but all 4 types shown in the gif can be confused with any of the other basically. That's why I proposed 3 new symbols to make sure each one has its own symbol.

Using the ruler on a subdivided plane/cube illustrates this pretty well. For coplanar faces and colinear edges you really need to be able to differentiate all different modes of snapping.

I think the symbols chosen work well and I like this concept of simple symbols in the viewport better than putting the icons next to the cursor. From the discussion posted by @mano-wii above it seems to me like the icons are just not designed for that purpose.

I also don't think it's too hard to adjust things a bit so it ties together with the icons. The vertex snap icon already has small squares for the vertices and e.g. the the center snap icon could be changes to have the small triangle to go well with this patch:
edge-center-mockup.png

Another thing I tried is translating these two parallel lines of the edge snap icon into the snap symbol (rather than the "X"):
edge-snap-icon.png
See the attached video.
What I like about that is that it also gives an indication in which direction the edge snap is constraining the cursor which also makes it overall work better on coplanar faces.
Though there might be some issues with readability, when the edge is very view-aligned.

> To me the confusion is not only about vertex/middle edge but all 4 types shown in the gif can be confused with any of the other basically. That's why I proposed 3 new symbols to make sure each one has its own symbol. Using the ruler on a subdivided plane/cube illustrates this pretty well. For coplanar faces and colinear edges you really need to be able to differentiate all different modes of snapping. I think the symbols chosen work well and I like this concept of simple symbols in the viewport better than putting the icons next to the cursor. From the discussion posted by @mano-wii above it seems to me like the icons are just not designed for that purpose. I also don't think it's too hard to adjust things a bit so it ties together with the icons. The vertex snap icon already has small squares for the vertices and e.g. the the center snap icon could be changes to have the small triangle to go well with this patch: ![edge-center-mockup.png](/attachments/b3c85bb6-b9f6-43aa-b5f1-d84795ac8bc8) Another thing I tried is translating these two parallel lines of the edge snap icon into the snap symbol (rather than the "X"): ![edge-snap-icon.png](/attachments/37d61dd3-410d-4317-b734-cb2b3c89a441) See the [attached video](/attachments/bb6aa115-c9e5-4433-8e8a-bdc71b9c400b). What I like about that is that it also gives an indication in which direction the edge snap is constraining the cursor which also makes it overall work better on coplanar faces. Though there might be some issues with readability, when the edge is very view-aligned.
Author
Member

Now that I think about it "Edge Center" sounds a bit strange. I think renaming it "Edge Midpoint" would make sense?

Another thing I tried is translating these two parallel lines of the edge snap icon into the snap symbol (rather than the "X")

It looks nice that it follows the rotation of the line, but to me it looks like it would be a "parallel to" snap. And also maybe it's a bit strange to have all other symbols static 2D but one follows the geometry?

Now that I think about it "Edge Center" sounds a bit strange. I think renaming it "Edge Midpoint" would make sense? > Another thing I tried is translating these two parallel lines of the edge snap icon into the snap symbol (rather than the "X") It looks nice that it follows the rotation of the line, but to me it looks like it would be a "parallel to" snap. And also maybe it's a bit strange to have all other symbols static 2D but one follows the geometry?

Instead of symbols, wouldn't it be nice to highlight the vertex, edge or polygon being snapped? I think it would be even more descriptive than symbols. But we would need to be careful not to disturb the overlay drawing.

Instead of symbols, wouldn't it be nice to highlight the vertex, edge or polygon being snapped? I think it would be even more descriptive than symbols. But we would need to be careful not to disturb the overlay drawing.
First-time contributor

Highlighting is rather disturbing for faces case, weak for vertices case, and also can be quite problematic for a heavy polymeshes, especially with modifiers, isnt it?

Highlighting is rather disturbing for faces case, weak for vertices case, and also can be quite problematic for a heavy polymeshes, especially with modifiers, isnt it?

Instead of symbols, wouldn't it be nice to highlight the vertex, edge or polygon being snapped? I think it would be even more descriptive than symbols. But we would need to be careful not to disturb the overlay drawing.

We already have symbols. This proposal improves on it. I don't think we should have highlight, but if anyone think so they can work on that proposal separately. I don't think it is something that justify getting on the way of this patch.

If this stalls it would be nice if this can be considered in either a UI or a modelling module meeting.

> Instead of symbols, wouldn't it be nice to highlight the vertex, edge or polygon being snapped? I think it would be even more descriptive than symbols. But we would need to be careful not to disturb the overlay drawing. We already have symbols. This proposal improves on it. I don't think we should have highlight, but if anyone think so they can work on that proposal separately. I don't think it is something that justify getting on the way of this patch. If this stalls it would be nice if this can be considered in either a UI or a modelling module meeting.
First-time contributor

Coming from working with some very well known CAD program, this proposal makes very much sense.
I think higlighting the vertex/edge/face to snap to would be much more distracting than showing the proposed symbols.

Hope this patch makes it into master.

Coming from working with some very well known CAD program, this proposal makes very much sense. I think higlighting the vertex/edge/face to snap to would be much more distracting than showing the proposed symbols. Hope this patch makes it into master.
First-time contributor

Any news if this will land for 4.0?

Any news if this will land for 4.0?
Author
Member

Any news if this will land for 4.0?

I will clean up the patch and request review.

> Any news if this will land for 4.0? I will clean up the patch and request review.

By the way, now we are already using a slim X for Snap Base. To avoid the conflict with this proposal I would go a step further and change the Snap Base symbol to also the symbol of the snap which was used to select it. So if you picked a point as a Snap Base, it shows a square.

By the way, now we are already using a slim X for Snap Base. To avoid the conflict with this proposal I would go a step further and change the Snap Base symbol to also the symbol of the snap which was used to select it. So if you picked a point as a Snap Base, it shows a square.
First-time contributor

I think X fits nice because its lines intersection show the exact point which is useful, for example, during edge snapping.

I think X fits nice because its lines intersection show the exact point which is useful, for example, during edge snapping.
Germano Cavalcante force-pushed snap-symbols from a8076da279 to 4ace5343ba 2023-06-23 22:51:41 +02:00 Compare

@erik85, I hope you don't mind. But I updated your branch with some changes discussed in #109062

The changes are:

  • Snap Perpendicular now has a symbol;
  • Snap to Loose Points is shown different from points linked to edges;
  • Snap To Edge changed the symbol;
  • Snap Base shows the chosen target symbol.

I will update the description.

@blender-bot package

@erik85, I hope you don't mind. But I updated your branch with some changes discussed in #109062 The changes are: - Snap Perpendicular now has a symbol; - Snap to Loose Points is shown different from points linked to edges; - Snap To Edge changed the symbol; - Snap Base shows the chosen target symbol. I will update the description. @blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR107054) when ready.
Germano Cavalcante requested review from Pablo Vazquez 2023-06-23 23:01:50 +02:00
Germano Cavalcante requested review from William Reynish 2023-06-23 23:01:51 +02:00

I feel like I shouldn't have closed https://archive.blender.org/developer/differential/0005/0005546/index.html

Especially after @billrey and @pablovazquez were requested.

So I'm adding them as reviewers, (if have some time and interest in reviewing the PR).

I feel like I shouldn't have closed https://archive.blender.org/developer/differential/0005/0005546/index.html Especially after @billrey and @pablovazquez were requested. So I'm adding them as reviewers, (if have some time and interest in reviewing the PR).

@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/PR107054) when ready.
Germano Cavalcante force-pushed snap-symbols from 3c9ac8bcbd to 16cf7ed883 2023-06-26 19:17:12 +02:00 Compare
  • Rebase applying the latest fixes in main;
  • Set the symbol size to the original circle size.

@blender-bot package

- Rebase applying the latest fixes in main; - Set the symbol size to the original circle size. @blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR107054) when ready.
Germano Cavalcante force-pushed snap-symbols from 16cf7ed883 to 77726745a1 2023-06-26 20:33:24 +02:00 Compare

Penultimate change caused a regression on the Snap Base symbol and the snap symbol for objects origin.

Fixed now.

@blender-bot package

Penultimate change caused a regression on the `Snap Base` symbol and the snap symbol for objects origin. Fixed now. @blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR107054) when ready.
Germano Cavalcante referenced this issue from a commit 2023-09-27 22:03:26 +02:00

This was committed on fb556c75df. Thanks for your contribution Erik!

This was committed on fb556c75df4ce336e61aa9ba16aa4c853548f06d. Thanks for your contribution Erik!
Dalai Felinto closed this pull request 2023-09-29 15:34:39 +02:00
Author
Member

I'm happy to see it merged in some form, have been too busy to work on anything lately unfortunately.

I'm happy to see it merged in some form, have been too busy to work on anything lately unfortunately.
All checks were successful
buildbot/vexp-code-patch-coordinator Build done.

Pull request closed

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
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
9 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#107054
No description provided.