Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Blackbourn <chrisbblend@gmail.com>2022-07-19 01:24:29 +0300
committerChris Blackbourn <chrisbblend@gmail.com>2022-07-19 01:26:28 +0300
commit135e530356d09378f153c4cb483a77b3375cc4f2 (patch)
tree817005e930c299b09bd46f85c5594f0c19cec19b /source/blender/geometry/intern/uv_parametrizer.c
parentd175eb6c30b0eb9630669522c643debf6a183efd (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/intern/uv_parametrizer.c')
-rw-r--r--source/blender/geometry/intern/uv_parametrizer.c6
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);