Blender
V3.3
|
Go to the source code of this file.
Enumerations | |
enum | { BMESH_ISECT_BOOLEAN_NONE = -1 , BMESH_ISECT_BOOLEAN_ISECT = 0 , BMESH_ISECT_BOOLEAN_UNION = 1 , BMESH_ISECT_BOOLEAN_DIFFERENCE = 2 } |
Functions | |
bool | BM_mesh_intersect (BMesh *bm, struct BMLoop *(*looptris)[3], int looptris_tot, int(*test_fn)(BMFace *f, void *user_data), void *user_data, bool use_self, bool use_separate, bool use_dissolve, bool use_island_connect, bool use_partial_connect, bool use_edge_tag, int boolean_mode, float eps) |
anonymous enum |
Enumerator | |
---|---|
BMESH_ISECT_BOOLEAN_NONE | |
BMESH_ISECT_BOOLEAN_ISECT | |
BMESH_ISECT_BOOLEAN_UNION | |
BMESH_ISECT_BOOLEAN_DIFFERENCE |
Definition at line 35 of file bmesh_intersect.h.
bool BM_mesh_intersect | ( | BMesh * | bm, |
struct BMLoop *(*) | looptris[3], | ||
int | looptris_tot, | ||
int(*)(BMFace *f, void *user_data) | test_fn, | ||
void * | user_data, | ||
bool | use_self, | ||
bool | use_separate, | ||
bool | use_dissolve, | ||
bool | use_island_connect, | ||
bool | use_partial_connect, | ||
bool | use_edge_tag, | ||
int | boolean_mode, | ||
float | eps | ||
) |
Intersect tessellated faces leaving the resulting edges tagged.
test_fn | Return value: -1: skip, 0: tree_a, 1: tree_b (use_self == false) |
boolean_mode | -1: no-boolean, 0: intersection... see BMESH_ISECT_BOOLEAN_ISECT. |
Definition at line 936 of file bmesh_intersect.c.
References BLI_assert, BLI_bvhtree_balance(), BLI_bvhtree_free(), BLI_bvhtree_insert(), BLI_bvhtree_new(), BLI_bvhtree_overlap_ex(), BLI_ghash_free(), BLI_ghash_int_new(), BLI_ghash_len(), BLI_ghash_new(), BLI_ghash_ptr_new(), BLI_ghashIterator_getKey(), BLI_ghashIterator_getValue(), BLI_ghashutil_inthash_v4_cmp, BLI_ghashutil_inthash_v4_p, BLI_gset_add(), BLI_gset_free(), BLI_gset_haskey(), BLI_gset_insert(), BLI_gset_len(), BLI_gset_ptr_new(), BLI_gset_remove(), BLI_gsetIterator_getKey(), BLI_memarena_clear(), BLI_memarena_free(), BLI_memarena_new(), BLI_MEMARENA_STD_BUFSIZE, bm, ISectState::bm, BM_DISK_EDGE_NEXT, BM_EDGE, BM_edge_exists(), BM_edge_kill(), BM_edge_other_vert(), BM_edge_split(), BM_EDGES_OF_MESH, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_elem_index_get, BM_ELEM_TAG, BM_FACE, BM_face_calc_point_in_face(), BM_face_kill_loose(), BM_face_normal_flip(), bm_isect_tri_tri(), BM_ITER_MESH_MUTABLE, bm_loop_filter_fn(), BM_mesh_calc_face_groups(), BM_mesh_edgesplit(), BM_mesh_elem_hflag_disable_all(), BM_mesh_elem_index_ensure(), BM_mesh_elem_table_ensure(), BM_select_history_clear(), BM_VERT, BM_vert_collapse_edge(), BM_vert_in_edge(), BM_vert_is_edge_pair(), BM_vert_kill(), bm_vert_other_edge(), BM_vert_pair_share_face_check(), BM_vert_splice(), BM_vert_splice_check_double(), BMESH_ISECT_BOOLEAN_DIFFERENCE, BMESH_ISECT_BOOLEAN_ISECT, BMESH_ISECT_BOOLEAN_NONE, BMESH_ISECT_BOOLEAN_UNION, BVH_OVERLAP_RETURN_PAIRS, BVH_OVERLAP_USE_THREADING, clamp_f(), BMVert::co, copy_v3_v3(), KDL::cos(), BMVert::e, e, ISectState::edge_verts, edge_verts_sort(), ISectState::edgetri_cache, ELEM, eps, ISectEpsilon::eps, ISectEpsilon::eps2x, ISectEpsilon::eps2x_sq, ISectEpsilon::eps_margin, ISectEpsilon::eps_margin_sq, ISectEpsilon::eps_sq, ISectState::epsilon, BMLoop::f, ISectState::face_edges, face_edges_split(), faces, BMesh::ftable, GHASH_ITER, GSET_ITER, isect_bvhtree_point_v3(), BMEdge::l, BMFace::len, len_squared_v3v3(), line_point_factor_v3(), LinkBase::list, LinkBase::list_len, BMFace::mat_nr, ISectState::mem_arena, MEM_freeN, MEM_mallocN, node, NULL, POINTER_AS_INT, BMLoop::radial_next, STACK_DECLARE, STACK_INIT, STACK_PUSH_RET, STACK_SIZE, SWAP, LoopFilterWrap::test_fn, BMesh::totface, UNLIKELY, UNPACK2, UNPACK3, UNUSED_VARS, UNUSED_VARS_NDEBUG, USE_NET, USE_SPLICE, user_data, v, ISectState::vert_dissolve, void, and ISectState::wire_edges.
Referenced by BMD_mesh_intersection(), edbm_intersect_boolean_exec(), and edbm_intersect_exec().