diff options
author | Martin Felke <martin.felke@googlemail.com> | 2019-03-09 23:09:52 +0300 |
---|---|---|
committer | Martin Felke <martin.felke@googlemail.com> | 2019-03-09 23:09:52 +0300 |
commit | f236797eee873d25add884020f55702963ba3b19 (patch) | |
tree | aad0c8e3ecf1249fa5c88c528fe6a1dcee4f104f | |
parent | 3832a09ea8f4e019da01c859cede41c7287c978a (diff) |
fix incorrectly flipped carve result
-rw-r--r-- | source/blender/blenkernel/intern/boolean.c | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/source/blender/blenkernel/intern/boolean.c b/source/blender/blenkernel/intern/boolean.c index 06d60b16520..679f6f9a481 100644 --- a/source/blender/blenkernel/intern/boolean.c +++ b/source/blender/blenkernel/intern/boolean.c @@ -152,31 +152,17 @@ Mesh *BKE_boolean_operation(Mesh *mesh, struct Object *ob, DerivedMesh *dm_other = CDDM_from_mesh(mesh_other); DerivedMesh *dm_result = NULL; - dm_result = NewBooleanDerivedMesh(dm, object, dm_other, other, + dm_result = NewBooleanDerivedMesh(dm_other, other, dm, object, 1 + op_type); - if (dm_result && dm_result != dm) - { - float imat[4][4]; - float omat[4][4]; + dm->needsFree = 1; + dm->release(dm); + if (dm_result && dm_result != dm_other) + { result = BKE_id_new_nomain(ID_ME, NULL); DM_to_mesh(dm_result, result, object, CD_MASK_MESH, true); - //correct transform - invert_m4_m4(imat, object->obmat); - mul_m4_m4m4(omat, imat, other->obmat); - - const int mverts_len = result->totvert; - MVert *mv = result->mvert; - - for (int i = 0; i < mverts_len; i++, mv++) { - mul_m4_v3(omat, mv->co); - } - - dm->needsFree = 1; - dm->release(dm); - dm_other->needsFree = 1; dm_other->release(dm_other); } |