Page MenuHome

UV editor and 3d viewport selection sync per default
Confirmed, NormalPublicDESIGN

Assigned To
None
Authored By
Daniel Bystedt (dbystedt)
Jun 28 2020, 9:22 PM
Tags
Tokens
"100" token, awarded by zhendai."Love" token, awarded by 1D_Inc."Like" token, awarded by TheCharacterhero."Love" token, awarded by zanqdo."Like" token, awarded by EL_BIBIKA."100" token, awarded by noirekld."Like" token, awarded by Harti."Love" token, awarded by kioku."Love" token, awarded by 14AUDDIN."Love" token, awarded by unrealer."Love" token, awarded by andruxa696."Burninate" token, awarded by chironamo."Love" token, awarded by sqeee."Love" token, awarded by gilberto_rodrigues."Burninate" token, awarded by no4me."Love" token, awarded by zelfit."Love" token, awarded by daniellapalme."Love" token, awarded by APEC.

Description

It would be very beneficial to have corresponding mesh component selection between the UV editor and the 3D viewport. This would enable users to quickly identify which mesh components that they are working on. This design should not simply be implemented by setting "sync selection" as per default, since there are some drawbacks in the UV Editor with that mode such as

  • Select linked does not work with vertices and edges
  • Moving faces "rips" them from uv islands
  • Uv island selection mode is not available

This issue is addressed here as well : https://blender.community/c/rightclickselect/BDcbbc/


Make sure UV is visible in edit mode even if vertices/edges/faces are not selected
Faces in the 3d view is selected based on the current selection in the UV editor and vice versa. This makes it easy for the user to understand which parts of the mesh she/he is working on
If faces needs to be hidden in the UV editor (in the case of overlapping UV’s etc), the user can simply hide the UV’s and the faces

Desired result when selecting one vertex in the 3D VIEWPORT - Note that the vertex is placed on a UV seam
Desired result when selecting one vertex in the UV EDITOR

Event Timeline

Daniel Bystedt (dbystedt) changed the task status from Needs Triage to Confirmed.Jun 28 2020, 9:32 PM
Daniel Bystedt (dbystedt) updated the task description. (Show Details)
Daniel Bystedt (dbystedt) moved this task from Restricted Project Column to Restricted Project Column on the Restricted Project board.Jun 28 2020, 9:41 PM

Please add this. It is how it works in XSI, LW, MODO etc. I can see edge cases for what is currently in Blender being useful, but I would really appreciate having the option to work with always seeing all my UV islands for an object(s) and selecting in the 3D viewport.

It does not happen just at will.
First it need to prepare Blender to perform this task. But at the moment it's not ready.

Daniel Bystedt (dbystedt) moved this task from Restricted Project Column to Restricted Project Column on the Restricted Project board.Apr 27 2022, 9:40 AM

This seems like a worthwhile improvement from the user perspective, however there are quite a few open topics that would need to be solved before it could be implemented.

Currently sync-selection uses the mesh selection for UV editing, with the hard-limitation that it's not possible to select 1 side of a UV island when it's vertex is shared with another.

This proposal doesn't cover the details of how this would work.


For e.g. the given example where selecting a vertex on the seam would only select 1 UV vertex (and it's connected UV's) in the UV editor means 3D selection tools would need to be selecting UV's as well, since this change can't be flushed from the vertex to the UV's without having access to the face-corner closes to the cursor when selecting.

If selecting in the 3D view is also selecting in the UV view, this is quite different to the current selection syncing, it's closer to maintaining two kinds of selection at once which is quite a big change and could impact quite a few tools as it means selection would have to be stored in both UV's and verts/edge/faces, then flushed in both directions. De-selecting a UV may de-select it's vertex (or not) based on the selection state of other UV's used by that vertex.

So from what I can tell this proposal would require the following changes:

  • Show all visible geometry in the UV window.
  • Selection actions in the UV editor would flush changes to the 3D-view. (where any selected UV would cause it's vertex to be selected).
  • De-selection actions in the 3D-view would flush changes to the UV-editor (where any fully de-selected vertex would have all it's UV's de-selected).
  • Selection actions in the 3D-view would either...
    • Pick a face-corner and map that to a UV to select (as well as it's connected UV's).
    • Be unable to pick a face corner (select vertex-group for e.g.) and select all the vertices UV's.

Open questions:

  • How to handle UV selection when switching UV layers (assume selection would be copied from the previous UV layer so as to avoid loss of syncing).
  • Does this additional logic for UV selection always need to be applied?
  • What operations would be expected to pick-UV's?
    • Picking individual vertices/faces/edges can be supported.
    • A box/lasso-selection for e.g. that includes whole faces might reasonably be pick the UV's that are part of the newly selected faces.
    • A box/lasso selection that only selects vertices doesn't lend it's self to picking a vertices UV.

      .. this behavior could be based on the current selection mode (where only face-selection mode would pick UV's by their side).

NOTE: it's probably worth considering if syncing selection (as we have now) could be pushed further to avoid it's current limitations, which I'd rather discuss outside this task.

Completely agreed on the the reasoning.

This thread by me on rightclickselect proposes separating the syncing functionality from the auto-hiding. They should be completely different things.

The proposal goes like this:

1- Sync selection (On by default?)
This has been well discussed already

2- Sync visibility (On by default)
If you hide (H) a part of the mesh in the viewport it is also hidden in the UV editor and vice versa

3- Show only selected (Off by default)
Replicates the specific behavior of only showing the UVs corresponding to the visible parts of the mesh. This is the current default in Blender and it is confusing and unexpected!

https://blender.community/c/rightclickselect/Bhhbbc/

Hi Campbell! I tried to answer your questions as best as I could. Let me know if something is unclear.

So from what I can tell this proposal would require the following changes:

  • Show all visible geometry in the UV window. YES
  • Selection actions in the UV editor would flush changes to the 3D-view. (where any selected UV would cause it's vertex to be selected). YES
  • De-selection actions in the 3D-view would flush changes to the UV-editor (where any fully de-selected vertex would have all it's UV's de-selected). YES
  • Selection actions in the 3D-view would either...
    • Pick a face-corner and map that to a UV to select (as well as it's connected UV's). --NO--
    • Be unable to pick a face corner (select vertex-group for e.g.) and select all the vertices UV's. YES

Open questions:

  • How to handle UV selection when switching UV layers (assume selection would be copied from the previous UV layer so as to avoid loss of syncing). Keeping selection from previous uv layer sounds like a good idea
  • Does this additional logic for UV selection always need to be applied? My thinking is that the logic described in this proposal would be applied when "UV sync selection" is on and will replace the current selection logic of "UV sync selection"
  • What operations would be expected to pick-UV's?
    • Picking individual vertices/faces/edges can be supported. Yes. Individual vertices/faces/edges should be selected in the 3d view just as in the current state of blender. In the the UV editor, individual face corners can be selected. If the selected face corner(s) shares the same position as another face corner - all of the face corners that share location with the uv face corner selection will be selected in the uv editor. This selection will then be flushed to the 3d view, where any vertex that is connected to the selected face corner(s) will be selected
    • A box/lasso-selection for e.g. that includes whole faces might reasonably be pick the UV's that are part of the newly selected faces. **Yes. If a lasso tool selects multiple faces in the uv editor, any face corner that shares the same location with the selected face(s) face corner(s) will be selected. The selection will then be flushed to the 3d view as described above.
    • A box/lasso selection that only selects vertices doesn't lend it's self to picking a vertices UV. I'm not sure what you mean. If you refer to selecting vertices in the 3d view, it should work as the current version of blender. The only difference is that the selection of the 3d view would then be flushed to the uv editor. Any face corner uv that is connected to any selected vertex in the 3d view. would be selected in the uv editor.

@Daniel Bystedt (dbystedt) thanks for clarification, what you have suggested is not complicating selection as much as I thought it might.

3D-viewport selection having to be aware of UV connectivity+selection adds quite some overhead as it means selecting any elements needs to do a second pass that flushes to UV's. Having said this, I suspect some users may still ask for the feature to be supported, if it's not a requirement for the featured to be useful then I'm not so fussed.

When implementing this there is still the issue that flushing selection must *always* run when selection changes either in the 3D view or UV editor. Maybe this is stating the obvious, just that selection can be changed in many places and there will be situations where the correct behavior isn't obvious & needs to be considered carefully.

Sculpt and weight paint mode for example can select vertices, in that case we would want to flush the selection from the geometry to the UV coordinates when entering edit-mode.

Also, as the option to sync selection isn't stored in the mesh, it's possible to select UV's with it disabled... enable sync-selection for another mesh, then re-enter edit-mode with sync selection enabled for the first.

So we will probably need to store a tag in the mesh (or UV layer), that marks sync-selection as being up to date. So toggling edit-mode for e.g. doesn't re-flush the selection from object mode, but changes to selection in sculpt mode (for e.g.) does.

In general, I agree that both synced-unsynced modes can be unified into a single flawless mode with options, fixing sync mode selection drawbacks.

I would like to clarify this point:

If faces needs to be hidden in the UV editor (in the case of overlapping UV’s etc), the user can simply hide the UV’s and the faces.

The screenscot is a bit confusing for a proposal that assumes selection syncing.
Will hidden parts syncronized between 3D and UV in the way it is proposed for mesh selection?

also

Desired result when selecting one vertex in the UV EDITOR

This is an optional requirement, since double vertices selection display is a nice info for stitching.
It better be a dedicated option.

3- Show only selected (Off by default)
Replicates the specific behavior of only showing the UVs corresponding to the visible parts of the mesh. This is the current default in Blender and it is confusing and unexpected!

The goal of show only selected (unsync mode) behaviour is to provide the ability to view and edit UVs of a specific elements in complex meshes, that consists from several joined elements, especially in non-baking unwrapping workflows like tiles or trims workflows with lots of UV overlaps, widespread - for example - in archviz.

Example:
In unsync mode before selecting element in complex object UV is messy because of tiles/trims overlaps:

After selecting an element, its UV becomes available while the entire object is visible, which allows you to understand which element is being edited at the moment, and modify chunks of its UV:

Elements that have already been unwrapped can be hidden in mesh to avoid rechecking and prevent accidental editing, this way hiding mesh parts in unsync mode allow to mark elements as reviewed and finised.

Technically,

  • sync mode benefits in baking unwrapping (properly packed UVs including UDIMs) because of no UV overlaps.
  • unsync mode benefits in non-baking unwrapping (trims, tiles, projected/generated unpacked UVs with no UDIMs) because of lots of UV overlaps.