[Bf-blender-cvs] [135e530356d] master: Fix T99781: uv minimize stretch now unflips flipped faces

Chris Blackbourn noreply at git.blender.org
Tue Jul 19 00:26:28 CEST 2022


Commit: 135e530356d09378f153c4cb483a77b3375cc4f2
Author: Chris Blackbourn
Date:   Tue Jul 19 10:24:29 2022 +1200
Branches: master
https://developer.blender.org/rB135e530356d09378f153c4cb483a77b3375cc4f2

Fix T99781: uv minimize stretch now unflips flipped faces

Add a small gradient to flipped faces proportional to length of edges.

Differential Revision: https://developer.blender.org/D15475

===================================================================

M	source/blender/geometry/intern/uv_parametrizer.c

===================================================================

diff --git a/source/blender/geometry/intern/uv_parametrizer.c b/source/blender/geometry/intern/uv_parametrizer.c
index 7ef17d4e9d0..38924c718c3 100644
--- a/source/blender/geometry/intern/uv_parametrizer.c
+++ b/source/blender/geometry/intern/uv_parametrizer.c
@@ -3307,8 +3307,10 @@ static float p_face_stretch(PFace *f)
 
   area = p_face_uv_area_signed(f);
 
-  if (area <= 0.0f) { /* flipped face -> infinite stretch */
-    return 1e10f;
+  if (area <= 0.0f) {
+    /* When a face is flipped, provide a large penalty.
+     * Add on a slight gradient to unflip the face, see also: T99781. */
+    return 1e8f * (1.0f + p_edge_uv_length(e1) + p_edge_uv_length(e2) + p_edge_uv_length(e3));
   }
 
   w = 1.0f / (2.0f * area);



More information about the Bf-blender-cvs mailing list