diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/BKE_bvhutils.h | 21 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/bvhutils.cc | 120 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/mesh_remap.c | 6 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_snap_object.cc | 9 |
4 files changed, 59 insertions, 97 deletions
diff --git a/source/blender/blenkernel/BKE_bvhutils.h b/source/blender/blenkernel/BKE_bvhutils.h index c957465a654..8f33003fa9d 100644 --- a/source/blender/blenkernel/BKE_bvhutils.h +++ b/source/blender/blenkernel/BKE_bvhutils.h @@ -107,8 +107,7 @@ BVHTree *bvhtree_from_editmesh_verts_ex(BVHTreeFromEditMesh *data, int verts_num_active, float epsilon, int tree_type, - int axis, - const bool isolate); + int axis); /** * Builds a BVH-tree where nodes are the given vertices (NOTE: does not copy given `vert`!). @@ -124,8 +123,7 @@ BVHTree *bvhtree_from_mesh_verts_ex(struct BVHTreeFromMesh *data, int verts_num_active, float epsilon, int tree_type, - int axis, - const bool isolate); + int axis); BVHTree *bvhtree_from_editmesh_edges( BVHTreeFromEditMesh *data, struct BMEditMesh *em, float epsilon, int tree_type, int axis); @@ -139,8 +137,7 @@ BVHTree *bvhtree_from_editmesh_edges_ex(BVHTreeFromEditMesh *data, int edges_num_active, float epsilon, int tree_type, - int axis, - const bool isolate); + int axis); /** * Builds a BVH-tree where nodes are the given edges. @@ -158,8 +155,7 @@ BVHTree *bvhtree_from_mesh_edges_ex(struct BVHTreeFromMesh *data, int edges_num_active, float epsilon, int tree_type, - int axis, - const bool isolate); + int axis); /** * Builds a BVH-tree where nodes are the given tessellated faces @@ -178,8 +174,7 @@ BVHTree *bvhtree_from_mesh_faces_ex(struct BVHTreeFromMesh *data, int faces_num_active, float epsilon, int tree_type, - int axis, - const bool isolate); + int axis); BVHTree *bvhtree_from_editmesh_looptri( BVHTreeFromEditMesh *data, struct BMEditMesh *em, float epsilon, int tree_type, int axis); @@ -193,8 +188,7 @@ BVHTree *bvhtree_from_editmesh_looptri_ex(BVHTreeFromEditMesh *data, int looptri_num_active, float epsilon, int tree_type, - int axis, - const bool isolate); + int axis); /** * Builds a BVH-tree where nodes are the looptri faces of the given mesh. @@ -210,8 +204,7 @@ BVHTree *bvhtree_from_mesh_looptri_ex(struct BVHTreeFromMesh *data, int looptri_num_active, float epsilon, int tree_type, - int axis, - const bool isolate); + int axis); /** * Builds or queries a BVH-cache for the cache BVH-tree of the request type. diff --git a/source/blender/blenkernel/intern/bvhutils.cc b/source/blender/blenkernel/intern/bvhutils.cc index abbd4ced94b..d2e1c04a923 100644 --- a/source/blender/blenkernel/intern/bvhutils.cc +++ b/source/blender/blenkernel/intern/bvhutils.cc @@ -734,14 +734,13 @@ BVHTree *bvhtree_from_editmesh_verts_ex(BVHTreeFromEditMesh *data, int verts_num_active, float epsilon, int tree_type, - int axis, - const bool isolate) + int axis) { BVHTree *tree = nullptr; tree = bvhtree_from_editmesh_verts_create_tree( epsilon, tree_type, axis, em, verts_mask, verts_num_active); - bvhtree_balance(tree, isolate); + bvhtree_balance(tree, false); if (data) { bvhtree_from_editmesh_setup_data(tree, BVHTREE_FROM_EM_VERTS, em, data); @@ -753,7 +752,7 @@ BVHTree *bvhtree_from_editmesh_verts_ex(BVHTreeFromEditMesh *data, BVHTree *bvhtree_from_editmesh_verts( BVHTreeFromEditMesh *data, BMEditMesh *em, float epsilon, int tree_type, int axis) { - return bvhtree_from_editmesh_verts_ex(data, em, nullptr, -1, epsilon, tree_type, axis, false); + return bvhtree_from_editmesh_verts_ex(data, em, nullptr, -1, epsilon, tree_type, axis); } BVHTree *bvhtree_from_mesh_verts_ex(BVHTreeFromMesh *data, @@ -763,14 +762,13 @@ BVHTree *bvhtree_from_mesh_verts_ex(BVHTreeFromMesh *data, int verts_num_active, float epsilon, int tree_type, - int axis, - const bool isolate) + int axis) { BVHTree *tree = nullptr; tree = bvhtree_from_mesh_verts_create_tree( epsilon, tree_type, axis, vert, verts_num, verts_mask, verts_num_active); - bvhtree_balance(tree, isolate); + bvhtree_balance(tree, false); if (data) { /* Setup BVHTreeFromMesh */ @@ -870,14 +868,13 @@ BVHTree *bvhtree_from_editmesh_edges_ex(BVHTreeFromEditMesh *data, int edges_num_active, float epsilon, int tree_type, - int axis, - const bool isolate) + int axis) { BVHTree *tree = nullptr; tree = bvhtree_from_editmesh_edges_create_tree( epsilon, tree_type, axis, em, edges_mask, edges_num_active); - bvhtree_balance(tree, isolate); + bvhtree_balance(tree, false); if (data) { bvhtree_from_editmesh_setup_data(tree, BVHTREE_FROM_EM_EDGES, em, data); @@ -889,7 +886,7 @@ BVHTree *bvhtree_from_editmesh_edges_ex(BVHTreeFromEditMesh *data, BVHTree *bvhtree_from_editmesh_edges( BVHTreeFromEditMesh *data, BMEditMesh *em, float epsilon, int tree_type, int axis) { - return bvhtree_from_editmesh_edges_ex(data, em, nullptr, -1, epsilon, tree_type, axis, false); + return bvhtree_from_editmesh_edges_ex(data, em, nullptr, -1, epsilon, tree_type, axis); } BVHTree *bvhtree_from_mesh_edges_ex(BVHTreeFromMesh *data, @@ -900,14 +897,13 @@ BVHTree *bvhtree_from_mesh_edges_ex(BVHTreeFromMesh *data, int edges_num_active, float epsilon, int tree_type, - int axis, - const bool isolate) + int axis) { BVHTree *tree = nullptr; tree = bvhtree_from_mesh_edges_create_tree( vert, edge, edges_num, edges_mask, edges_num_active, epsilon, tree_type, axis); - bvhtree_balance(tree, isolate); + bvhtree_balance(tree, false); if (data) { /* Setup BVHTreeFromMesh */ @@ -979,14 +975,13 @@ BVHTree *bvhtree_from_mesh_faces_ex(BVHTreeFromMesh *data, int faces_num_active, float epsilon, int tree_type, - int axis, - const bool isolate) + int axis) { BVHTree *tree = nullptr; tree = bvhtree_from_mesh_faces_create_tree( epsilon, tree_type, axis, vert, face, numFaces, faces_mask, faces_num_active); - bvhtree_balance(tree, isolate); + bvhtree_balance(tree, false); if (data) { /* Setup BVHTreeFromMesh */ @@ -1103,8 +1098,7 @@ BVHTree *bvhtree_from_editmesh_looptri_ex(BVHTreeFromEditMesh *data, int looptri_num_active, float epsilon, int tree_type, - int axis, - const bool isolate) + int axis) { /* BMESH specific check that we have tessfaces, * we _could_ tessellate here but rather not - campbell */ @@ -1113,7 +1107,7 @@ BVHTree *bvhtree_from_editmesh_looptri_ex(BVHTreeFromEditMesh *data, tree = bvhtree_from_editmesh_looptri_create_tree( epsilon, tree_type, axis, em, looptri_mask, looptri_num_active); - bvhtree_balance(tree, isolate); + bvhtree_balance(tree, false); if (data) { bvhtree_from_editmesh_setup_data(tree, BVHTREE_FROM_EM_LOOPTRI, em, data); @@ -1124,7 +1118,7 @@ BVHTree *bvhtree_from_editmesh_looptri_ex(BVHTreeFromEditMesh *data, BVHTree *bvhtree_from_editmesh_looptri( BVHTreeFromEditMesh *data, BMEditMesh *em, float epsilon, int tree_type, int axis) { - return bvhtree_from_editmesh_looptri_ex(data, em, nullptr, -1, epsilon, tree_type, axis, false); + return bvhtree_from_editmesh_looptri_ex(data, em, nullptr, -1, epsilon, tree_type, axis); } BVHTree *bvhtree_from_mesh_looptri_ex(BVHTreeFromMesh *data, @@ -1136,8 +1130,7 @@ BVHTree *bvhtree_from_mesh_looptri_ex(BVHTreeFromMesh *data, int looptri_num_active, float epsilon, int tree_type, - int axis, - const bool isolate) + int axis) { BVHTree *tree = nullptr; tree = bvhtree_from_mesh_looptri_create_tree(epsilon, @@ -1150,7 +1143,7 @@ BVHTree *bvhtree_from_mesh_looptri_ex(BVHTreeFromMesh *data, looptri_mask, looptri_num_active); - bvhtree_balance(tree, isolate); + bvhtree_balance(tree, false); if (data) { /* Setup BVHTreeFromMesh */ @@ -1287,15 +1280,8 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data, mesh->medge, mesh->totedge, mesh->mvert, verts_len, &loose_vert_len); } - data->tree = bvhtree_from_mesh_verts_ex(nullptr, - mesh->mvert, - verts_len, - loose_verts_mask, - loose_vert_len, - 0.0f, - tree_type, - 6, - lock_started); + data->tree = bvhtree_from_mesh_verts_create_tree( + 0.0f, tree_type, 6, mesh->mvert, verts_len, loose_verts_mask, loose_vert_len); if (loose_verts_mask != nullptr) { MEM_freeN(loose_verts_mask); @@ -1312,16 +1298,14 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data, loose_edges_mask = loose_edges_map_get(mesh->medge, edges_len, &loose_edges_len); } - data->tree = bvhtree_from_mesh_edges_ex(nullptr, - mesh->mvert, - mesh->medge, - edges_len, - loose_edges_mask, - loose_edges_len, - 0.0, - tree_type, - 6, - lock_started); + data->tree = bvhtree_from_mesh_edges_create_tree(mesh->mvert, + mesh->medge, + edges_len, + loose_edges_mask, + loose_edges_len, + 0.0f, + tree_type, + 6); if (loose_edges_mask != nullptr) { MEM_freeN(loose_edges_mask); @@ -1329,19 +1313,10 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data, } break; case BVHTREE_FROM_FACES: { - int num_faces = mesh->totface; - BLI_assert(!(num_faces == 0 && mesh->totpoly != 0)); - - data->tree = bvhtree_from_mesh_faces_ex(nullptr, - mesh->mvert, - mesh->mface, - num_faces, - nullptr, - -1, - 0.0, - tree_type, - 6, - lock_started); + BLI_assert(!(mesh->totface == 0 && mesh->totpoly != 0)); + + data->tree = bvhtree_from_mesh_faces_create_tree( + 0.0f, tree_type, 6, mesh->mvert, mesh->mface, mesh->totface, nullptr, -1); } break; case BVHTREE_FROM_LOOPTRI: @@ -1355,17 +1330,15 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data, mesh->mpoly, looptri_len, &looptri_mask_active_len); } - data->tree = bvhtree_from_mesh_looptri_ex(nullptr, - mesh->mvert, - mesh->mloop, - data->looptri, - looptri_len, - looptri_mask, - looptri_mask_active_len, - 0.0, - tree_type, - 6, - lock_started); + data->tree = bvhtree_from_mesh_looptri_create_tree(0.0f, + tree_type, + 6, + mesh->mvert, + mesh->mloop, + data->looptri, + looptri_len, + looptri_mask, + looptri_mask_active_len); if (looptri_mask != nullptr) { MEM_freeN(looptri_mask); @@ -1379,6 +1352,8 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data, break; } + bvhtree_balance(data->tree, lock_started); + /* Save on cache for later use */ // printf("BVHTree built and saved on cache\n"); BLI_assert(data->cached == false); @@ -1422,16 +1397,13 @@ BVHTree *BKE_bvhtree_from_editmesh_get(BVHTreeFromEditMesh *data, switch (bvh_cache_type) { case BVHTREE_FROM_EM_VERTS: - data->tree = bvhtree_from_editmesh_verts_ex( - nullptr, em, nullptr, -1, 0.0f, tree_type, 6, lock_started); + data->tree = bvhtree_from_editmesh_verts_create_tree(0.0f, tree_type, 6, em, nullptr, -1); break; case BVHTREE_FROM_EM_EDGES: - data->tree = bvhtree_from_editmesh_edges_ex( - nullptr, em, nullptr, -1, 0.0f, tree_type, 6, lock_started); + data->tree = bvhtree_from_editmesh_edges_create_tree(0.0f, tree_type, 6, em, nullptr, -1); break; case BVHTREE_FROM_EM_LOOPTRI: - data->tree = bvhtree_from_editmesh_looptri_ex( - nullptr, em, nullptr, -1, 0.0f, tree_type, 6, lock_started); + data->tree = bvhtree_from_editmesh_looptri_create_tree(0.0f, tree_type, 6, em, nullptr, -1); break; case BVHTREE_FROM_VERTS: case BVHTREE_FROM_EDGES: @@ -1445,6 +1417,8 @@ BVHTree *BKE_bvhtree_from_editmesh_get(BVHTreeFromEditMesh *data, break; } + bvhtree_balance(data->tree, lock_started); + if (bvh_cache_p) { /* Save on cache for later use */ // printf("BVHTree built and saved on cache\n"); diff --git a/source/blender/blenkernel/intern/mesh_remap.c b/source/blender/blenkernel/intern/mesh_remap.c index aed52bd9cab..9a4c01ec7aa 100644 --- a/source/blender/blenkernel/intern/mesh_remap.c +++ b/source/blender/blenkernel/intern/mesh_remap.c @@ -1514,8 +1514,7 @@ void BKE_mesh_remap_calc_loops_from_mesh(const int mode, num_verts_active, 0.0, 2, - 6, - false); + 6); } MEM_freeN(verts_active); @@ -1553,8 +1552,7 @@ void BKE_mesh_remap_calc_loops_from_mesh(const int mode, num_looptri_active, 0.0, 2, - 6, - false); + 6); } MEM_freeN(looptri_active); diff --git a/source/blender/editors/transform/transform_snap_object.cc b/source/blender/editors/transform/transform_snap_object.cc index 3489cfc4cda..eaa657ecbf3 100644 --- a/source/blender/editors/transform/transform_snap_object.cc +++ b/source/blender/editors/transform/transform_snap_object.cc @@ -900,8 +900,7 @@ static bool raycastEditMesh(SnapObjectContext *sctx, sctx->callbacks.edit_mesh.test_face_fn, sctx->callbacks.edit_mesh.user_data); - bvhtree_from_editmesh_looptri_ex( - treedata, em, elem_mask, looptri_num_active, 0.0f, 4, 6, false); + bvhtree_from_editmesh_looptri_ex(treedata, em, elem_mask, looptri_num_active, 0.0f, 4, 6); MEM_freeN(elem_mask); } @@ -2553,8 +2552,7 @@ static short snapEditMesh(SnapObjectContext *sctx, (bool (*)(BMElem *, void *))sctx->callbacks.edit_mesh.test_vert_fn, sctx->callbacks.edit_mesh.user_data); - bvhtree_from_editmesh_verts_ex( - &treedata, em, verts_mask, verts_num_active, 0.0f, 2, 6, false); + bvhtree_from_editmesh_verts_ex(&treedata, em, verts_mask, verts_num_active, 0.0f, 2, 6); MEM_freeN(verts_mask); } else { @@ -2586,8 +2584,7 @@ static short snapEditMesh(SnapObjectContext *sctx, (bool (*)(BMElem *, void *))sctx->callbacks.edit_mesh.test_edge_fn, sctx->callbacks.edit_mesh.user_data); - bvhtree_from_editmesh_edges_ex( - &treedata, em, edges_mask, edges_num_active, 0.0f, 2, 6, false); + bvhtree_from_editmesh_edges_ex(&treedata, em, edges_mask, edges_num_active, 0.0f, 2, 6); MEM_freeN(edges_mask); } else { |