diff options
author | Chris Blackbourn <chrisbblend@gmail.com> | 2022-07-19 01:24:29 +0300 |
---|---|---|
committer | Chris Blackbourn <chrisbblend@gmail.com> | 2022-07-19 01:26:28 +0300 |
commit | 135e530356d09378f153c4cb483a77b3375cc4f2 (patch) | |
tree | 817005e930c299b09bd46f85c5594f0c19cec19b /source/blender/geometry | |
parent | d175eb6c30b0eb9630669522c643debf6a183efd (diff) |
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
Diffstat (limited to 'source/blender/geometry')
-rw-r--r-- | source/blender/geometry/intern/uv_parametrizer.c | 6 |
1 files changed, 4 insertions, 2 deletions
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); |