Blender  V3.3
Enumerations | Functions
bmesh_intersect.h File Reference

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)
 

Enumeration Type Documentation

◆ anonymous enum

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.

Function Documentation

◆ BM_mesh_intersect()

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.

Parameters
test_fnReturn value: -1: skip, 0: tree_a, 1: tree_b (use_self == false)
boolean_mode-1: no-boolean, 0: intersection... see BMESH_ISECT_BOOLEAN_ISECT.
Returns
true if the mesh is changed (intersections cut or faces removed from boolean).

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().