Blender  V2.93
Functions
bmesh_decimate.h File Reference

Go to the source code of this file.

Functions

void BM_mesh_decimate_collapse (BMesh *bm, const float factor, float *vweights, float vweight_factor, const bool do_triangulate, const int symmetry_axis, const float symmetry_eps)
 BM_mesh_decimate. More...
 
void BM_mesh_decimate_unsubdivide_ex (BMesh *bm, const int iterations, const bool tag_only)
 
void BM_mesh_decimate_unsubdivide (BMesh *bm, const int iterations)
 
void BM_mesh_decimate_dissolve_ex (BMesh *bm, const float angle_limit, const bool do_dissolve_boundaries, BMO_Delimit delimit, BMVert **vinput_arr, const int vinput_len, BMEdge **einput_arr, const int einput_len, const short oflag_out)
 
void BM_mesh_decimate_dissolve (BMesh *bm, const float angle_limit, const bool do_dissolve_boundaries, const BMO_Delimit delimit)
 

Function Documentation

◆ BM_mesh_decimate_collapse()

void BM_mesh_decimate_collapse ( BMesh bm,
const float  factor,
float vweights,
float  vweight_factor,
const bool  do_triangulate,
const int  symmetry_axis,
const float  symmetry_eps 
)

BM_mesh_decimate.

Parameters
bmThe mesh
factorface count multiplier [0 - 1]
vweightsOptional array of vertex aligned weights [0 - 1], a vertex group is the usual source for this.
symmetry_axisAxis of symmetry, -1 to disable mirror decimate.
symmetry_epsThreshold when matching mirror verts.
Note
  • 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.
  • edges sharing a vertex are ignored, so the pivot vertex isn't moved to one side.

Definition at line 1289 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, and BMesh::vdata.

Referenced by edbm_decimate_exec(), and modifyMesh().

◆ BM_mesh_decimate_dissolve()

void BM_mesh_decimate_dissolve ( BMesh bm,
const float  angle_limit,
const bool  do_dissolve_boundaries,
const BMO_Delimit  delimit 
)

◆ BM_mesh_decimate_dissolve_ex()

void BM_mesh_decimate_dissolve_ex ( BMesh bm,
const float  angle_limit,
const bool  do_dissolve_boundaries,
BMO_Delimit  delimit,
BMVert **  vinput_arr,
const int  vinput_len,
BMEdge **  einput_arr,
const int  einput_len,
const short  oflag_out 
)

◆ BM_mesh_decimate_unsubdivide()

void BM_mesh_decimate_unsubdivide ( BMesh bm,
const int  iterations 
)

Definition at line 347 of file bmesh_decimate_unsubdivide.c.

References bm, and BM_mesh_decimate_unsubdivide_ex().

Referenced by modifyMesh().

◆ BM_mesh_decimate_unsubdivide_ex()

void BM_mesh_decimate_unsubdivide_ex ( BMesh bm,
const int  iterations,
const bool  tag_only 
)