Page MenuHome

Live unwrap interaction changes unwrapping and ignores pinned vertices
Confirmed, NormalPublicBUG

Description

Blender Version
Broken: 2.79 - 2.83 (sub 10), commit date: 2020-03-19 13:43, hash: rB42012493a8e1
Worked: Never

Short description of error
Grabbing and moving one of the pinned vertices seems to kind of reset the unwrap, even ignoring the pinned vertices.
Short video demonstration:
https://streamable.com/eesv3

Exact steps for others to reproduce the error

  • Unwrapped parts of an object.
  • Pinned some vertices in UV editor
  • enabled live unwrapping.

or

  • Open this file:
  • Go to edit mode
  • Move pinned vertices.

In some cases it also just doesn't do anything at all:
https://streamable.com/ignig
Here is a file showing this other problem:

Revisions and Commits

Event Timeline

Ankit Meel (ankitm) changed the task status from Needs Triage to Needs Information from User.Mar 23 2020, 2:09 PM

Please add a simple blend file to help redo the bug with steps to redo.



In both files just grab a pinned vertex in the UV editor and move it around, you should notice the same effect as in the videos and described above

Ankit Meel (ankitm) changed the task status from Needs Information from User to Needs Triage.Mar 24 2020, 7:43 AM
Germano Cavalcante (mano-wii) changed the task status from Needs Triage to Confirmed.Mar 24 2020, 2:58 PM
Germano Cavalcante (mano-wii) updated the task description. (Show Details)
Germano Cavalcante (mano-wii) changed the subtype of this task from "Report" to "Bug".
Campbell Barton (campbellbarton) edited projects, added Restricted Project; removed Modeling.Sep 21 2020, 1:48 PM
Campbell Barton (campbellbarton) moved this task from Restricted Project Column to Restricted Project Column on the Restricted Project board.May 3 2022, 4:53 AM

Repro in debugger.

This appears to be two seperate issues.

LiveUnwrapPinFail.blend has three islands and only one seam. When Live Unwrap is enabled, all three islands are merged into one island. During the merge, some of the pinned UVs are forced to be identical, and the number of pinned verts drops from 6 down to 4. After this merge occurs, the feature seems to be working as designed, even though it is unlikely what the user originally intended.
As a work around, the user can select "Seams From Islands" before activating Live Unwrap.
More discussion is required for a correct fix in this situation.

For the second unrelated issue, LiveUnwrapCube.blend, the cube has two pinned vertices and no boundaries or seams. The current unwrap solver cannot unwrap a mesh like this because the problem is "underconstrained", so instead it ignores the mesh completely.
In this circumstance, it might be possible to add additional constraints to the solver to get a solve. I will investigate this solution to see if it is possible.
In the mean time, the user can add or remove a pin, or, (by co-incidence) adding a seam or boundary by using "Seams From Islands" will also avoid this issue.

Update on the second issue, LiveUnwrapCube.blend, with two pinned vertices and no boundaries or seams.

This is the original UV layout:

Live unwrap currently excludes these charts (i.e. UV-Islands) as they have no boundary. This is the current behavior, from a UI perspective, it appears to the user like the "Live-Unwrap" is not changing the interaction.

If we remove this limitation, we obtain the following degenerate result:

This next proof of concept code change shows it is possible to get a non-degenerate result by adding additional constrains to the LSCM solver:

Note that this is not a "good" unwrapping, it's simply an existence proof to show that the LSCM solver can still produce an output given this set of inputs by adding additional constraints to push against.

One option would be to find additional constraints which produce an unwrapping which is "useful", even if the mapping itself is not "good".

Another option might be to special case the "2 - pin" case in the same we special case the single-pin case. For example, we could generalise the single-pin case to perform a rotation like so:

A third option might be to attempt to temporarily add additional (boundary) constraints, but this might not work for all inputs.

There might be more options for a fix too..

Are there any technical artists want to chip in with their preferred interaction here?

*Edit: Grammar

Checking: LiveUnwrapPinFail.blend as far as I can see, unwrapping in the UV editor should calculate seams based on existing islands, running "seams from islands" then unwrapping works as expected here.

LiveUnwrapPinFail.blend is fixed by e6e9f1ac5a2dae42dc523

LiveUnwrapCube.blend is now T98240

Chris Blackbourn (chrisbblend) added a revision: Restricted Differential Revision.Jun 22 2022, 4:11 AM