From 135e530356d09378f153c4cb483a77b3375cc4f2 Mon Sep 17 00:00:00 2001 From: Chris Blackbourn Date: Tue, 19 Jul 2022 10:24:29 +1200 Subject: 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 --- source/blender/geometry/intern/uv_parametrizer.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'source/blender/geometry') 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); -- cgit v1.2.3