UI: change the UV packing pin option into a toggle & drop-down #108733

Manually merged
Brecht Van Lommel merged 4 commits from ideasman42/blender:pr-pin-uv-ui into blender-v3.6-release 2023-06-20 14:53:59 +02:00

Exposing both the option not to use pinned islands and to skip pinned
islands in the same dropdown was confusing.

Now there is a checkbox "Pin", when disabled, pinned UV's don't
have any impact on the packed result.

When enabled, the pin-method selects how pinned islands are handled.

Exposing both the option not to use pinned islands and to skip pinned islands in the same dropdown was confusing. Now there is a checkbox "Pin", when disabled, pinned UV's don't have any impact on the packed result. When enabled, the pin-method selects how pinned islands are handled.
Campbell Barton requested review from Chris Blackbourn 2023-06-08 05:12:23 +02:00
Chris Blackbourn reviewed 2023-06-08 05:23:30 +02:00
@ -1593,3 +1599,3 @@
static const EnumPropertyItem pinned_islands_method_items[] = {
{ED_UVPACK_PIN_PACK, "PACK", 0, "Pack", "Pinned islands are packed normally"},
/* NOTE: ED_UVPACK_PIN_LOCK_NONE is exposed as a boolean "pin". */

Should be ED_UVPACK_PIN_NONE

Should be ED_UVPACK_PIN_NONE
Chris Blackbourn approved these changes 2023-06-08 05:24:37 +02:00

To me this is unclear, I could not guess what the "Pin" toggle means. To me pin means that something stays fixed in place, which is the opposite of what the option does.

I'm not sure why this is even an option. Packing around pinned islands is useful, but why would you want other islands to overlap pinned islands?

To me this is unclear, I could not guess what the "Pin" toggle means. To me pin means that something stays fixed in place, which is the opposite of what the option does. I'm not sure why this is even an option. Packing around pinned islands is useful, but why would you want other islands to overlap pinned islands?
Author
Owner

To me this is unclear, I could not guess what the "Pin" toggle means. To me pin means that something stays fixed in place, which is the opposite of what the option does.

The rationale for having a checkgox for pin, is that I thought it was reasonably clear that "Pin" means "Use pin to constrain packing", so when the checkbox is off - packing is unconstrained. All selected islands are packed without constraints (the checkbox could even be named "Constrain Pinned" - or a similar term to make this clearer).

I'm not sure why this is even an option. Packing around pinned islands is useful, but why would you want other islands to overlap pinned islands?

NOTE: updated the PR to default to ED_UVPACK_PIN_LOCK_ALL - so when "Pin" is enabled the resulting pack doesn't contain overlap. Agree that in the case pinning is used, overlapping existing islands isn't a good default.


Checking, ED_UVPACK_PIN_LOCK_ALL doesn't seem to lock-in-place as the packed UV's are relocated (tool-tip hints that the islands would be kept in-place).

> To me this is unclear, I could not guess what the "Pin" toggle means. To me pin means that something stays fixed in place, which is the opposite of what the option does. The rationale for having a checkgox for pin, is that I thought it was reasonably clear that "Pin" means _"Use pin to constrain packing"_, so when the checkbox is off - packing is unconstrained. All selected islands are packed without constraints (the checkbox could even be named "Constrain Pinned" - or a similar term to make this clearer). > I'm not sure why this is even an option. Packing around pinned islands is useful, but why would you want other islands to overlap pinned islands? NOTE: updated the PR to default to `ED_UVPACK_PIN_LOCK_ALL` - so when "Pin" is enabled the resulting pack doesn't contain overlap. Agree that in the case pinning is used, overlapping existing islands isn't a good default. ---- Checking, ED_UVPACK_PIN_LOCK_ALL doesn't seem to lock-in-place as the packed UV's are relocated (tool-tip hints that the islands would be kept in-place).

The rationale for having a checkgox for pin, is that I thought it was reasonably clear that "Pin" means "Use pin to constrain packing", so when the checkbox is off - packing is unconstrained. All selected islands are packed without constraints (the checkbox could even be named "Constrain Pinned" - or a similar term to make this clearer).

The option should be called "Use Pins" or something like that then?

This doesn't fit my mental model though, for me it's more clear to just directly ask what happens to pinned islands. Rather than first thinking that I want to use pins to constrain packing, and then how I want to constrain it.

Anyway, if it's called "Use Pins" I can at least understand it so I can live with that, but don't think it's an improvement.

Checking, ED_UVPACK_PIN_LOCK_ALL doesn't seem to lock-in-place as the packed UV's are relocated (tool-tip hints that the islands would be kept in-place).

I can confirm that with this PR, but in main it does seem to lock the island in place.

> The rationale for having a checkgox for pin, is that I thought it was reasonably clear that "Pin" means "Use pin to constrain packing", so when the checkbox is off - packing is unconstrained. All selected islands are packed without constraints (the checkbox could even be named "Constrain Pinned" - or a similar term to make this clearer). The option should be called "Use Pins" or something like that then? This doesn't fit my mental model though, for me it's more clear to just directly ask what happens to pinned islands. Rather than first thinking that I want to use pins to constrain packing, and then how I want to constrain it. Anyway, if it's called "Use Pins" I can at least understand it so I can live with that, but don't think it's an improvement. > Checking, ED_UVPACK_PIN_LOCK_ALL doesn't seem to lock-in-place as the packed UV's are relocated (tool-tip hints that the islands would be kept in-place). I can confirm that with this PR, but in main it does seem to lock the island in place.
Author
Owner

The rationale for having a checkgox for pin, is that I thought it was reasonably clear that "Pin" means "Use pin to constrain packing", so when the checkbox is off - packing is unconstrained. All selected islands are packed without constraints (the checkbox could even be named "Constrain Pinned" - or a similar term to make this clearer).

The option should be called "Use Pins" or something like that then?

A checkbox normally implies "Use", so while I don't mind "Use Pins". Although I find "Constrain Pinned" clearer, the "Ignore" option doesn't fit so well into the definition of a constraint.

This doesn't fit my mental model though, for me it's more clear to just directly ask what happens to pinned islands. Rather than first thinking that I want to use pins to constrain packing, and then how I want to constrain it.

The issue with asking what to do with pinned islands is one of the options is to ignore them... then, (by necessity) the other option is to ignore pinning, or as currently worked "Pack" pinned islands, although I find this confusing too (it sounds as if un-pinned might not be packed - or handled differently)

Seems we have fairly different mental models, to expand on my reasoning:

  • I find the concept of a pinned islands odd, it's taking a flag intended to lock points while unwrapping and use it as a constraint for the whole island. It makes some sense but also feels arbitrary.
  • The kind of constraint when pinning also seems arbitrary - in that the user might want to constrain different aspects, personally I think "Lock in Place" is a reasonable default, although I'm not that fussed.
  • Currently this is a special case for packing and isn't supported by other operators (Align Rotation, Average Scale).

All of these details about pinning are somethings users can figure out, but they could easily cause confusion - even attempting to understand these options when testing the patch I found fairly confusing.
It seems likely users could pack while unwittingly having some UV's on a high poly mesh pinned without realizing it. Then have the problem of trying to troubleshoot why the pack skipped some islands.

So it seems reasonable to me that the mental model for pin starts of by giving the user a checkbox to use pinning as a special kind of constraint which they can opt into and configure how they wish, but without requiring them to have to understand any of this if they simply want to pack what they have selected - as all other transform actions currently do.

Anyway, if it's called "Use Pins" I can at least understand it so I can live with that, but don't think it's an improvement.

Checking, ED_UVPACK_PIN_LOCK_ALL doesn't seem to lock-in-place as the packed UV's are relocated (tool-tip hints that the islands would be kept in-place).

I can confirm that with this PR, but in main it does seem to lock the island in place.

Reported, Chris fixed 31ce143569.

> > The rationale for having a checkgox for pin, is that I thought it was reasonably clear that "Pin" means "Use pin to constrain packing", so when the checkbox is off - packing is unconstrained. All selected islands are packed without constraints (the checkbox could even be named "Constrain Pinned" - or a similar term to make this clearer). > > The option should be called "Use Pins" or something like that then? A checkbox normally implies "Use", so while I don't mind "Use Pins". Although I find "Constrain Pinned" clearer, the "Ignore" option doesn't fit so well into the definition of a constraint. > This doesn't fit my mental model though, for me it's more clear to just directly ask what happens to pinned islands. Rather than first thinking that I want to use pins to constrain packing, and then how I want to constrain it. The issue with asking what to do with pinned islands is one of the options is to ignore them... then, (by necessity) the other option is to ignore pinning, or as currently worked "Pack" pinned islands, although I find this confusing too (it sounds as if un-pinned might not be packed - or handled differently) Seems we have fairly different mental models, to expand on my reasoning: - I find the concept of a pinned islands odd, it's taking a flag intended to lock points while unwrapping and use it as a constraint for the whole island. It makes some sense but also feels arbitrary. - The kind of constraint when pinning also seems arbitrary - in that the user might want to constrain different aspects, personally I think "Lock in Place" is a reasonable default, although I'm not that fussed. - Currently this is a special case for packing and isn't supported by other operators (Align Rotation, Average Scale). All of these details about pinning are somethings users can figure out, but they could easily cause confusion - even attempting to understand these options when testing the patch I found fairly confusing. It seems likely users could pack while unwittingly having some UV's on a high poly mesh pinned without realizing it. Then have the problem of trying to troubleshoot why the pack skipped some islands. So it seems reasonable to me that the mental model for pin starts of by giving the user a checkbox to use pinning as a special kind of constraint which they can opt into and configure how they wish, but without requiring them to have to understand any of this if they simply want to pack what they have selected - as all other transform actions currently do. > Anyway, if it's called "Use Pins" I can at least understand it so I can live with that, but don't think it's an improvement. > > > Checking, ED_UVPACK_PIN_LOCK_ALL doesn't seem to lock-in-place as the packed UV's are relocated (tool-tip hints that the islands would be kept in-place). > > I can confirm that with this PR, but in main it does seem to lock the island in place. Reported, Chris fixed 31ce1435698f700a04fbd97e6cdbc0d4941c40b4.
Campbell Barton force-pushed pr-pin-uv-ui from 52a8c84dd0 to e3924d4742 2023-06-09 06:11:54 +02:00 Compare
Author
Owner

Updated to name "Use Pin" and added a description.

Updated to name "Use Pin" and added a description.

A checkbox normally implies "Use", so while I don't mind "Use Pins". Although I find "Constrain Pinned" clearer, the "Ignore" option doesn't fit so well into the definition of a constraint.

A checkbox implies Use when the name is not a verb. But Pin is a verb.

  • I find the concept of a pinned islands odd, it's taking a flag intended to lock points while unwrapping and use it as a constraint for the whole island. It makes some sense but also feels arbitrary.

For unwrapping pins also constrain the whole island.

  • The kind of constraint when pinning also seems arbitrary - in that the user might want to constrain different aspects, personally I think "Lock in Place" is a reasonable default, although I'm not that fussed.

Yes, I agree current "Packed" and "Lock in Place" are the two most useful options.

What do you think about a "Lock Pinned Islands" boolean that does "Lock in Place" when enabled, and "Packed" when disabled. This option would be off by default. And then remove all the other options, which I'm not sure are very useful.

> A checkbox normally implies "Use", so while I don't mind "Use Pins". Although I find "Constrain Pinned" clearer, the "Ignore" option doesn't fit so well into the definition of a constraint. A checkbox implies Use when the name is not a verb. But Pin is a verb. > - I find the concept of a pinned islands odd, it's taking a flag intended to lock points while unwrapping and use it as a constraint for the whole island. It makes some sense but also feels arbitrary. For unwrapping pins also constrain the whole island. > - The kind of constraint when pinning also seems arbitrary - in that the user might want to constrain different aspects, personally I think "Lock in Place" is a reasonable default, although I'm not that fussed. Yes, I agree current "Packed" and "Lock in Place" are the two most useful options. What do you think about a "Lock Pinned Islands" boolean that does "Lock in Place" when enabled, and "Packed" when disabled. This option would be off by default. And then remove all the other options, which I'm not sure are very useful.

The missing puzzle piece here is the "Overlap Unselected" checkbox which is hard to land in Blender 3.6 because it will change the way islands are calculated.

In Blender 4.0 there will be three different types of islands:

  • Unselected (Either overlapping/ignored or locked-in-place)
  • Selected without pins. (Follows other checkboxes, scaled, rotated etc, i.e. the "default")
  • Selected and pinned <- what this PR is about...
The missing puzzle piece here is the "Overlap Unselected" checkbox which is hard to land in Blender 3.6 because it will change the way islands are calculated. In Blender 4.0 there will be three different types of islands: * Unselected (Either overlapping/ignored or locked-in-place) * Selected without pins. (Follows other checkboxes, scaled, rotated etc, i.e. the "default") * Selected and pinned <- what this PR is about...
Campbell Barton force-pushed pr-pin-uv-ui from e3924d4742 to bfb26884ff 2023-06-20 09:23:54 +02:00 Compare
Campbell Barton force-pushed pr-pin-uv-ui from bfb26884ff to e6bca0b9a2 2023-06-20 09:40:04 +02:00 Compare
Author
Owner

Updated the patch to remove the "IGNORE" option in the UI, this means the checkbox can re renamed to "Lock Pinned Islands" with a drop-down to the different kinds of locking.

(attached screenshot)

Updated the patch to remove the "IGNORE" option in the UI, this means the checkbox can re renamed to "Lock Pinned Islands" with a drop-down to the different kinds of locking. (attached screenshot)
Campbell Barton requested review from Brecht Van Lommel 2023-06-20 09:40:30 +02:00
Brecht Van Lommel approved these changes 2023-06-20 10:57:40 +02:00
Brecht Van Lommel left a comment
Owner

Thanks, that's immediately clear to me.

Thanks, that's immediately clear to me.
Brecht Van Lommel manually merged commit e2dbc4779e into blender-v3.6-release 2023-06-20 14:53:59 +02:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Code Documentation
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
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
Viewport & EEVEE
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Asset Browser Project
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
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
Module
Viewport & EEVEE
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Severity
High
Severity
Low
Severity
Normal
Severity
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#108733
No description provided.