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:
authorBastien Montagne <montagne29@wanadoo.fr>2017-05-26 22:48:18 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2017-05-26 22:58:29 +0300
commit4d58080e235b8cde0c9a70542328135415b207b5 (patch)
treeeb411a7ee5b79cb4fbf4bbfe3ec2baac310cc2f9 /source/blender/blenkernel/intern/mesh_validate.c
parentb0015686e2e48a384a0b2a03a75f6daaad7271c0 (diff)
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.
Diffstat (limited to 'source/blender/blenkernel/intern/mesh_validate.c')
-rw-r--r--source/blender/blenkernel/intern/mesh_validate.c4
1 files changed, 2 insertions, 2 deletions
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);