[Bf-blender-cvs] [1b7e01fcd0c] temp-T97352-3d-texturing-seam-bleeding-b2: Fix incorrect border update when wrapping around the list of edges.

Jeroen Bakker noreply at git.blender.org
Wed Jun 15 17:24:32 CEST 2022


Commit: 1b7e01fcd0c9e0b41c83c8a4849eef70c31ee37a
Author: Jeroen Bakker
Date:   Wed Jun 15 17:15:50 2022 +0200
Branches: temp-T97352-3d-texturing-seam-bleeding-b2
https://developer.blender.org/rB1b7e01fcd0c9e0b41c83c8a4849eef70c31ee37a

Fix incorrect border update when wrapping around the list of edges.

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

M	source/blender/blenkernel/intern/uv_islands.cc

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

diff --git a/source/blender/blenkernel/intern/uv_islands.cc b/source/blender/blenkernel/intern/uv_islands.cc
index ebc2248634b..f03d123fb37 100644
--- a/source/blender/blenkernel/intern/uv_islands.cc
+++ b/source/blender/blenkernel/intern/uv_islands.cc
@@ -257,13 +257,21 @@ static MeshPrimitive *find_fill_border(const MeshVertex &v1,
                                        const MeshVertex &v2,
                                        const MeshVertex &v3)
 {
+  printf("find primitive containing (%lld,%lld,%lld)\n", v1.v, v2.v, v3.v);
   for (MeshEdge *edge : v1.edges) {
     for (MeshPrimitive *primitive : edge->primitives) {
+      printf("- try primitive %lld containing (%lld,%lld,%lld)\n",
+             primitive->index,
+             primitive->vertices[0].vertex->v,
+             primitive->vertices[1].vertex->v,
+             primitive->vertices[2].vertex->v);
       if (primitive->has_vertex(v1) && primitive->has_vertex(v2) && primitive->has_vertex(v3)) {
+        printf("- found primitive\n");
         return primitive;
       }
     }
   }
+  printf("- No primitive found\n");
   return nullptr;
 }
 /**
@@ -461,13 +469,17 @@ static void extend_at_vert(UVIsland &island, UVBorderCorner &corner, const MeshD
     }
 
     int border_insert = corner.first->index;
-    int border_next = corner.second->index;
     border.remove(border_insert);
-    if (border_next != 0) {
+
+    int border_next = corner.second->index;
+    if (border_next < border_insert) {
+      border_insert--;
+    }
+    else {
       border_next--;
     }
     border.remove(border_next);
-    border_insert = min_ii(border_insert, border.edges.size() - 1);
+
     border.edges.insert(border_insert, new_border_edges);
 
     border.update_indexes(border_index);
@@ -507,6 +519,7 @@ void UVIsland::extend_border(const UVIslandsMask &mask,
     if (num_iterations == 1) {
       printf("Last iteration\n");
     }
+    validate_border();
     std::optional<UVBorderCorner> extension_corner = sharpest_border_corner(*this);
     if (!extension_corner.has_value()) {
       break;



More information about the Bf-blender-cvs mailing list