[Bf-blender-cvs] [aa01b45] bmesh-boolean-experiment: Check when we can't find paths - was asserting
Campbell Barton
noreply at git.blender.org
Thu Dec 10 15:26:13 CET 2015
Commit: aa01b4520b0bcc41fb9c9c30832458bf454477cc
Author: Campbell Barton
Date: Fri Dec 11 01:18:03 2015 +1100
Branches: bmesh-boolean-experiment
https://developer.blender.org/rBaa01b4520b0bcc41fb9c9c30832458bf454477cc
Check when we can't find paths - was asserting
For very scrambled degenerate geometry where this error is unavoidable.
===================================================================
M source/blender/bmesh/intern/bmesh_polygon_edgenet.c
===================================================================
diff --git a/source/blender/bmesh/intern/bmesh_polygon_edgenet.c b/source/blender/bmesh/intern/bmesh_polygon_edgenet.c
index d172944..7bc4096 100644
--- a/source/blender/bmesh/intern/bmesh_polygon_edgenet.c
+++ b/source/blender/bmesh/intern/bmesh_polygon_edgenet.c
@@ -1202,29 +1202,36 @@ bool BM_face_split_edgenet_connect_islands(
BMVert *v_origin = g->vert_span.min;
const int index_other = bm_face_split_edgenet_find_connection(&args, v_origin, false);
- BLI_assert(index_other >= 0 && index_other < (int)vert_arr_len);
+ // BLI_assert(index_other >= 0 && index_other < (int)vert_arr_len);
- BMVert *v_end = vert_arr[index_other];
+ /* only for degenerate geometry */
+ if (index_other != -1) {
+ BMVert *v_end = vert_arr[index_other];
- edge_net_new[edge_net_new_index] = BM_edge_create(bm, v_origin, v_end, NULL, 0);
- edge_net_new_index++;
- args.edge_arr_new_len++;
+ edge_net_new[edge_net_new_index] = BM_edge_create(bm, v_origin, v_end, NULL, 0);
+ edge_net_new_index++;
+ args.edge_arr_new_len++;
+ }
}
{
BMVert *v_origin = g->vert_span.max;
const int index_other = bm_face_split_edgenet_find_connection(&args, v_origin, true);
- BLI_assert(index_other >= 0 && index_other < (int)vert_arr_len);
- BMVert *v_end = vert_arr[index_other];
+ // BLI_assert(index_other >= 0 && index_other < (int)vert_arr_len);
+
+ /* only for degenerate geometry */
+ if (index_other != -1) {
+ BMVert *v_end = vert_arr[index_other];
- edge_net_new[edge_net_new_index] = BM_edge_create(bm, v_origin, v_end, NULL, 0);
- edge_net_new_index++;
- args.edge_arr_new_len++;
+ edge_net_new[edge_net_new_index] = BM_edge_create(bm, v_origin, v_end, NULL, 0);
+ edge_net_new_index++;
+ args.edge_arr_new_len++;
- /* tell the 'next' group it doesn't need to create its own back-link */
- unsigned int g_index_other = verts_group_table[index_other];
- group_arr[g_index_other]->has_prev_edge = true;
+ /* tell the 'next' group it doesn't need to create its own back-link */
+ unsigned int g_index_other = verts_group_table[index_other];
+ group_arr[g_index_other]->has_prev_edge = true;
+ }
}
}
More information about the Bf-blender-cvs
mailing list