From 4d58080e235b8cde0c9a70542328135415b207b5 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Fri, 26 May 2017 21:48:18 +0200 Subject: Fix T50851: Array modifier generating invalid geometry. We had handling of fully duplicated polygons already, but... absolutely nothing to sanitize partially merged polygons! This were giving us totally invalid geometry, with duplicated vertices in single poly, invalid edges, etc. Now we do check for invalid loops inside polys, and generate new edges as needed to get only valid polys. For some reason this was a nightmare to get running fully OK, playing with old and new indices is really, really mind breaking. --- source/blender/blenkernel/intern/mesh_validate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source/blender/blenkernel/intern/mesh_validate.c') diff --git a/source/blender/blenkernel/intern/mesh_validate.c b/source/blender/blenkernel/intern/mesh_validate.c index ba890b005d8..4aeddbb4c45 100644 --- a/source/blender/blenkernel/intern/mesh_validate.c +++ b/source/blender/blenkernel/intern/mesh_validate.c @@ -584,8 +584,8 @@ bool BKE_mesh_validate_arrays(Mesh *mesh, int prev_e = ml->e; ml->e = GET_INT_FROM_POINTER(BLI_edgehash_lookup(edge_hash, v1, v2)); fix_flag.loops_edge = true; - PRINT_ERR("\tPoly %u has invalid edge reference (%d), fixed using edge %u\n", - sp->index, prev_e, ml->e); + PRINT_ERR("\tPoly %u has invalid edge reference (%d, is_removed: %d), fixed using edge %u\n", + sp->index, prev_e, IS_REMOVED_EDGE(me), ml->e); } else { PRINT_ERR("\tPoly %u has invalid edge reference (%u)\n", sp->index, ml->e); -- cgit v1.2.3