From 522bee3fc838c83b377d0e05fef8299a29ae5a16 Mon Sep 17 00:00:00 2001 From: Germano Date: Tue, 1 May 2018 10:03:28 -0300 Subject: Refactoring: bvhutils: Use a function that gets the bvhtree through an identifier type. Reviewed By: @campbellbarton Differential Revision: https://developer.blender.org/D3192 --- source/blender/blenkernel/intern/mesh_remap.c | 33 +++++++++++++++++---------- 1 file changed, 21 insertions(+), 12 deletions(-) (limited to 'source/blender/blenkernel/intern/mesh_remap.c') diff --git a/source/blender/blenkernel/intern/mesh_remap.c b/source/blender/blenkernel/intern/mesh_remap.c index 0af4dae4506..f99dd5574b2 100644 --- a/source/blender/blenkernel/intern/mesh_remap.c +++ b/source/blender/blenkernel/intern/mesh_remap.c @@ -131,7 +131,7 @@ float BKE_mesh_remap_calc_difference_from_dm( float result = 0.0f; int i; - bvhtree_from_mesh_verts(&treedata, dm_src, 0.0f, 2, 6); + bvhtree_from_mesh_get(&treedata, dm_src, BVHTREE_FROM_VERTS); nearest.index = -1; for (i = 0; i < numverts_dst; i++) { @@ -460,7 +460,7 @@ void BKE_mesh_remap_calc_verts_from_dm( float tmp_co[3], tmp_no[3]; if (mode == MREMAP_MODE_VERT_NEAREST) { - bvhtree_from_mesh_verts(&treedata, dm_src, 0.0f, 2, 6); + bvhtree_from_mesh_get(&treedata, dm_src, BVHTREE_FROM_VERTS); nearest.index = -1; for (i = 0; i < numverts_dst; i++) { @@ -485,7 +485,7 @@ void BKE_mesh_remap_calc_verts_from_dm( float (*vcos_src)[3] = MEM_mallocN(sizeof(*vcos_src) * (size_t)dm_src->getNumVerts(dm_src), __func__); dm_src->getVertCos(dm_src, vcos_src); - bvhtree_from_mesh_edges(&treedata, dm_src, 0.0f, 2, 6); + bvhtree_from_mesh_get(&treedata, dm_src, BVHTREE_FROM_EDGES); nearest.index = -1; for (i = 0; i < numverts_dst; i++) { @@ -543,7 +543,13 @@ void BKE_mesh_remap_calc_verts_from_dm( float *weights = MEM_mallocN(sizeof(*weights) * tmp_buff_size, __func__); dm_src->getVertCos(dm_src, vcos_src); - bvhtree_from_mesh_looptri(&treedata, dm_src, (mode & MREMAP_USE_NORPROJ) ? ray_radius : 0.0f, 2, 6); + if (mode & MREMAP_USE_NORPROJ) { + bvhtree_from_mesh_looptri( + &treedata, dm_src, ray_radius, 2, 6); + } + else { + bvhtree_from_mesh_get(&treedata, dm_src, BVHTREE_FROM_LOOPTRI); + } if (mode == MREMAP_MODE_VERT_POLYINTERP_VNORPROJ) { for (i = 0; i < numverts_dst; i++) { @@ -676,7 +682,7 @@ void BKE_mesh_remap_calc_edges_from_dm( dm_src->getVertCos(dm_src, vcos_src); - bvhtree_from_mesh_verts(&treedata, dm_src, 0.0f, 2, 6); + bvhtree_from_mesh_get(&treedata, dm_src, BVHTREE_FROM_VERTS); nearest.index = -1; for (i = 0; i < numedges_dst; i++) { @@ -776,7 +782,7 @@ void BKE_mesh_remap_calc_edges_from_dm( MEM_freeN(vert_to_edge_src_map_mem); } else if (mode == MREMAP_MODE_EDGE_NEAREST) { - bvhtree_from_mesh_edges(&treedata, dm_src, 0.0f, 2, 6); + bvhtree_from_mesh_get(&treedata, dm_src, BVHTREE_FROM_EDGES); nearest.index = -1; for (i = 0; i < numedges_dst; i++) { @@ -803,7 +809,7 @@ void BKE_mesh_remap_calc_edges_from_dm( float (*vcos_src)[3] = MEM_mallocN(sizeof(*vcos_src) * (size_t)dm_src->getNumVerts(dm_src), __func__); dm_src->getVertCos(dm_src, vcos_src); - bvhtree_from_mesh_looptri(&treedata, dm_src, 0.0f, 2, 6); + bvhtree_from_mesh_get(&treedata, dm_src, BVHTREE_FROM_LOOPTRI); for (i = 0; i < numedges_dst; i++) { interp_v3_v3v3(tmp_co, verts_dst[edges_dst[i].v1].co, verts_dst[edges_dst[i].v2].co, 0.5f); @@ -1360,7 +1366,7 @@ void BKE_mesh_remap_calc_loops_from_dm( } else { BLI_assert(num_trees == 1); - bvhtree_from_mesh_verts(&treedata[0], dm_src, bvh_epsilon, 2, 6); + bvhtree_from_mesh_get(&treedata[0], dm_src, BVHTREE_FROM_VERTS); } } else { /* We use polygons. */ @@ -2007,10 +2013,13 @@ void BKE_mesh_remap_calc_polys_from_dm( BVHTreeRayHit rayhit = {0}; float hit_dist; - bvhtree_from_mesh_looptri( - &treedata, dm_src, - (mode & MREMAP_USE_NORPROJ) ? MREMAP_RAYCAST_APPROXIMATE_BVHEPSILON(ray_radius) : 0.0f, - 2, 6); + if (mode & MREMAP_USE_NORPROJ) { + bvhtree_from_mesh_looptri( + &treedata, dm_src, MREMAP_RAYCAST_APPROXIMATE_BVHEPSILON(ray_radius), 2, 6); + } + else { + bvhtree_from_mesh_get(&treedata, dm_src, BVHTREE_FROM_LOOPTRI); + } if (mode == MREMAP_MODE_POLY_NEAREST) { nearest.index = -1; -- cgit v1.2.3