Blender
V3.3
|
Go to the source code of this file.
Functions | |
void | BM_mesh_decimate_collapse (BMesh *bm, float factor, float *vweights, float vweight_factor, bool do_triangulate, int symmetry_axis, float symmetry_eps) |
BM_mesh_decimate. More... | |
void | BM_mesh_decimate_unsubdivide_ex (BMesh *bm, int iterations, bool tag_only) |
void | BM_mesh_decimate_unsubdivide (BMesh *bm, int iterations) |
void | BM_mesh_decimate_dissolve_ex (BMesh *bm, float angle_limit, bool do_dissolve_boundaries, BMO_Delimit delimit, BMVert **vinput_arr, int vinput_len, BMEdge **einput_arr, int einput_len, short oflag_out) |
void | BM_mesh_decimate_dissolve (BMesh *bm, float angle_limit, bool do_dissolve_boundaries, const BMO_Delimit delimit) |
void BM_mesh_decimate_collapse | ( | BMesh * | bm, |
float | factor, | ||
float * | vweights, | ||
float | vweight_factor, | ||
bool | do_triangulate, | ||
int | symmetry_axis, | ||
float | symmetry_eps | ||
) |
BM_mesh_decimate.
bm | The mesh |
factor | face count multiplier [0 - 1] |
vweights | Optional array of vertex aligned weights [0 - 1], a vertex group is the usual source for this. |
symmetry_axis | Axis of symmetry, -1 to disable mirror decimate. |
symmetry_eps | Threshold when matching mirror verts. |
eheap_table[e_index_mirr]
is only removed from the heap at the last moment since its possible (in theory) for collapsing e
to remove e_mirr
.Definition at line 1264 of file bmesh_decimate_collapse.c.
References BLI_assert, BLI_heap_free(), BLI_heap_is_empty(), BLI_heap_new_ex(), BLI_heap_node_ptr(), BLI_heap_pop_min(), BLI_heap_remove(), BLI_heap_top_value(), bm, BM_ALL, bm_decim_build_edge_cost(), bm_decim_build_quadrics(), bm_decim_calc_target_co_fl(), bm_decim_edge_collapse(), bm_decim_invalid_edge_cost_single(), bm_decim_triangulate_begin(), bm_decim_triangulate_end(), bm_edge_collapse_is_degenerate_flip(), bm_edge_collapse_is_degenerate_topology(), BM_edge_share_vert_check(), bm_edge_symmetry_map(), BM_elem_index_get, CD_DO_EDGE, CD_DO_LOOP, CD_DO_VERT, COST_INVALID, CustomData_has_interp(), CustomData_has_math(), e, BMesh::edata, BMesh::elem_index_dirty, invalidate(), BMesh::ldata, LIKELY, MEM_callocN, MEM_freeN, MEM_mallocN, NULL, BMesh::totedge, BMesh::totface, BMesh::totvert, UNLIKELY, UNUSED_VARS, USE_SYMMETRY, BMesh::vdata, and void.
Referenced by edbm_decimate_exec(), and modifyMesh().
void BM_mesh_decimate_dissolve | ( | BMesh * | bm, |
float | angle_limit, | ||
bool | do_dissolve_boundaries, | ||
const BMO_Delimit | delimit | ||
) |
Definition at line 531 of file bmesh_decimate_dissolve.c.
References bm, BM_EDGES_OF_MESH, BM_iter_as_arrayN(), BM_mesh_decimate_dissolve_ex(), BM_VERTS_OF_MESH, MEM_freeN, and NULL.
Referenced by modifyMesh().
void BM_mesh_decimate_dissolve_ex | ( | BMesh * | bm, |
float | angle_limit, | ||
bool | do_dissolve_boundaries, | ||
BMO_Delimit | delimit, | ||
BMVert ** | vinput_arr, | ||
int | vinput_len, | ||
BMEdge ** | einput_arr, | ||
int | einput_len, | ||
short | oflag_out | ||
) |
Definition at line 274 of file bmesh_decimate_dissolve.c.
References BLI_heap_free(), BLI_heap_insert(), BLI_heap_is_empty(), BLI_heap_new_ex(), BLI_heap_node_ptr(), BLI_heap_node_value(), BLI_heap_node_value_update(), BLI_heap_remove(), BLI_heap_top(), bm, BM_EDGE, bm_edge_calc_dissolve_error(), BM_edge_is_manifold(), BM_edge_is_wire(), BM_edge_kill(), BM_EDGES_OF_MESH, BM_elem_flag_set, BM_elem_flag_test, BM_elem_index_get, BM_elem_index_set, BM_ELEM_TAG, BM_FACE_FIRST_LOOP, BM_face_normal_update(), BM_faces_join_pair(), BM_ITER_ELEM, BM_ITER_MESH, BM_ITER_MESH_INDEX, BM_mesh_elem_index_ensure(), BM_VERT, BM_vert_collapse_edge(), bm_vert_collapse_is_degenerate(), bm_vert_edge_face_angle(), BM_vert_is_edge_pair(), BM_vert_kill(), BM_VERTS_OF_EDGE, BM_VERTS_OF_MESH, BMO_DELIM_UV, BMO_face_flag_enable, DelimitData::cd_loop_offset, DelimitData::cd_loop_offset_end, DelimitData::cd_loop_size, DelimitData::cd_loop_type, CD_MLOOPUV, copy_vn_i(), cosf, COST_INVALID, CustomData_get_n_offset(), CustomData_number_of_layers(), CustomData_sizeof(), BMVert::e, BMLoop::e, e, BMesh::elem_index_dirty, BMLoop::f, BMEdge::l, BMesh::ldata, LIKELY, max_ii(), MEM_freeN, MEM_mallocN, BMLoop::next, NULL, BMLoop::prev, BMLoop::radial_next, BMesh::totedge, BMesh::totvert, UNLIKELY, USE_DEGENERATE_CHECK, BMLoop::v, v, BMEdge::v1, v1, BMEdge::v2, and v2.
Referenced by BM_mesh_decimate_dissolve(), and bmo_dissolve_limit_exec().
Definition at line 331 of file bmesh_decimate_unsubdivide.c.
References bm, and BM_mesh_decimate_unsubdivide_ex().
Referenced by modifyMesh().
tag_only | so we can call this from an operator |
Definition at line 157 of file bmesh_decimate_unsubdivide.c.
References BLI_assert, bm, BM_edge_other_vert(), BM_EDGES_OF_VERT, BM_elem_flag_enable, BM_elem_flag_test, BM_elem_index_get, BM_elem_index_set, BM_ELEM_TAG, BM_ITER_ELEM, BM_ITER_MESH, BM_ITER_MESH_MUTABLE, BM_VERT, bm_vert_dissolve_fan(), bm_vert_dissolve_fan_test(), BM_VERTS_OF_MESH, BMO_vert_flag_enable, BMO_vert_flag_test, BMW_begin(), BMW_BREADTH_FIRST, BMW_CONNECTED_VERTEX, BMW_current_depth(), BMW_end(), BMW_FLAG_NOP, BMW_init(), BMW_MASK_NOP, BMW_NIL_LAY, BMW_step(), BMVert::e, e, BMesh::elem_index_dirty, MEM_freeN, MEM_mallocN, NULL, offset, BMWalker::order, BMesh::totvert, v, VERT_INDEX_DO_COLLAPSE, VERT_INDEX_IGNORE, and VERT_INDEX_INIT.
Referenced by BM_mesh_decimate_unsubdivide(), and bmo_unsubdivide_exec().