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:
authorCampbell Barton <ideasman42@gmail.com>2020-04-24 05:27:12 +0300
committerCampbell Barton <ideasman42@gmail.com>2020-04-24 05:27:12 +0300
commitd2aa4ada503172767d7ceb3cdf5f7b300497f17e (patch)
treec36bbca04e669be2ad1ddfa79793f72710bd63a8 /source/blender/bmesh
parent826f6dd9ee20332585f808a41c487c94a590265f (diff)
parentd428cca124264cdb6e68d0676c74d80c7a303a7a (diff)
Merge branch 'blender-v2.83-release'
Diffstat (limited to 'source/blender/bmesh')
-rw-r--r--source/blender/bmesh/tools/bmesh_intersect.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/source/blender/bmesh/tools/bmesh_intersect.c b/source/blender/bmesh/tools/bmesh_intersect.c
index 4ca8364c312..db07fd9842b 100644
--- a/source/blender/bmesh/tools/bmesh_intersect.c
+++ b/source/blender/bmesh/tools/bmesh_intersect.c
@@ -564,11 +564,11 @@ static void bm_isect_tri_tri(
for (i_b = 0; i_b < 3; i_b++) {
if (len_squared_v3v3(fv_a[i_a]->co, fv_b[i_b]->co) <= s->epsilon.eps2x_sq) {
#ifdef USE_DUMP
- if (BM_ELEM_API_FLAG_TEST(fv_a[i_a], VERT_VISIT) == 0) {
- printf(" ('VERT-VERT-A') %d, %d),\n", i_a, BM_elem_index_get(fv_a[i_a]));
+ if (BM_ELEM_API_FLAG_TEST(fv_a[i_a], VERT_VISIT_A) == 0) {
+ printf(" ('VERT-VERT-A') %u, %d),\n", i_a, BM_elem_index_get(fv_a[i_a]));
}
- if (BM_ELEM_API_FLAG_TEST(fv_b[i_b], VERT_VISIT) == 0) {
- printf(" ('VERT-VERT-B') %d, %d),\n", i_b, BM_elem_index_get(fv_b[i_b]));
+ if (BM_ELEM_API_FLAG_TEST(fv_b[i_b], VERT_VISIT_B) == 0) {
+ printf(" ('VERT-VERT-B') %u, %d),\n", i_b, BM_elem_index_get(fv_b[i_b]));
}
#endif
STACK_PUSH_TEST_A(fv_a[i_a]);
@@ -905,7 +905,7 @@ static int isect_bvhtree_point_v3(BVHTree *tree, const float **looptris, const f
BLI_bvhtree_ray_cast(tree, co, dir, 0.0f, &hit, raycast_callback, &raycast_data);
# ifdef USE_DUMP
- printf("%s: Total intersections: %d\n", __func__, z_buffer.count);
+ printf("%s: Total intersections: %zu\n", __func__, z_buffer.count);
# endif
int num_isect;
@@ -1179,7 +1179,7 @@ bool BM_mesh_intersect(BMesh *bm,
}
# ifdef USE_DUMP
- printf("# SPLITTING EDGE: %d, %d\n", BM_elem_index_get(e), v_ls_base->list_len);
+ printf("# SPLITTING EDGE: %d, %u\n", BM_elem_index_get(e), v_ls_base->list_len);
# endif
/* intersect */
is_wire = BLI_gset_haskey(s.wire_edges, e);
@@ -1258,6 +1258,13 @@ bool BM_mesh_intersect(BMesh *bm,
continue;
}
+ /* It's possible the vertex to dissolve is an edge on an existing face
+ * that doesn't divide the face, therefor the edges are not wire
+ * and shouldn't be handled here, see: T63787. */
+ if (!BLI_gset_haskey(s.wire_edges, e_pair[0]) || !BLI_gset_haskey(s.wire_edges, e_pair[1])) {
+ continue;
+ }
+
v_a = BM_edge_other_vert(e_pair[0], v);
v_b = BM_edge_other_vert(e_pair[1], v);