Blender V4.3
bmesh_decimate_dissolve.cc File Reference
#include "MEM_guardedalloc.h"
#include "BLI_heap.h"
#include "BLI_math_geom.h"
#include "BLI_math_rotation.h"
#include "BLI_math_vector.h"
#include "BKE_customdata.hh"
#include "bmesh.hh"
#include "bmesh_decimate.hh"

Go to the source code of this file.

Classes

struct  DelimitData
 

Macros

#define USE_DEGENERATE_CHECK
 
#define COST_INVALID   FLT_MAX
 
#define UNIT_TO_ANGLE   DEG2RADF(90.0f)
 
#define ANGLE_TO_UNIT   (1.0f / UNIT_TO_ANGLE)
 

Functions

static bool bm_edge_is_delimiter (const BMEdge *e, const BMO_Delimit delimit, const DelimitData *delimit_data)
 
static bool bm_vert_is_delimiter (const BMVert *v, const BMO_Delimit delimit, const DelimitData *delimit_data)
 
static float bm_vert_edge_face_angle (BMVert *v, const BMO_Delimit delimit, const DelimitData *delimit_data)
 
static bool bm_edge_is_contiguous_loop_cd_all (const BMEdge *e, const DelimitData *delimit_data)
 
static float bm_edge_calc_dissolve_error (const BMEdge *e, const BMO_Delimit delimit, const DelimitData *delimit_data)
 
static void mul_v2_m3v3_center (float r[2], const float m[3][3], const float a[3], const float center[3])
 
static bool bm_loop_collapse_is_degenerate (BMLoop *l_ear)
 
static bool bm_vert_collapse_is_degenerate (BMVert *v)
 
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)
 

Detailed Description

BMesh decimator that dissolves flat areas into polygons (ngons).

Definition in file bmesh_decimate_dissolve.cc.

Macro Definition Documentation

◆ ANGLE_TO_UNIT

#define ANGLE_TO_UNIT   (1.0f / UNIT_TO_ANGLE)

Referenced by bm_vert_edge_face_angle().

◆ COST_INVALID

#define COST_INVALID   FLT_MAX

◆ UNIT_TO_ANGLE

#define UNIT_TO_ANGLE   DEG2RADF(90.0f)

Referenced by bm_vert_edge_face_angle().

◆ USE_DEGENERATE_CHECK

#define USE_DEGENERATE_CHECK

Definition at line 24 of file bmesh_decimate_dissolve.cc.

Referenced by BM_mesh_decimate_dissolve_ex().

Function Documentation

◆ bm_edge_calc_dissolve_error()

static float bm_edge_calc_dissolve_error ( const BMEdge * e,
const BMO_Delimit delimit,
const DelimitData * delimit_data )
static

◆ bm_edge_is_contiguous_loop_cd_all()

static bool bm_edge_is_contiguous_loop_cd_all ( const BMEdge * e,
const DelimitData * delimit_data )
static

◆ bm_edge_is_delimiter()

◆ bm_loop_collapse_is_degenerate()

◆ 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_vert_collapse_is_degenerate()

◆ bm_vert_edge_face_angle()

static float bm_vert_edge_face_angle ( BMVert * v,
const BMO_Delimit delimit,
const DelimitData * delimit_data )
static

◆ bm_vert_is_delimiter()

static bool bm_vert_is_delimiter ( const BMVert * v,
const BMO_Delimit delimit,
const DelimitData * delimit_data )
static

◆ mul_v2_m3v3_center()

static void mul_v2_m3v3_center ( float r[2],
const float m[3][3],
const float a[3],
const float center[3] )
static

Definition at line 164 of file bmesh_decimate_dissolve.cc.

References BLI_assert, and sub_v3_v3v3().

Referenced by bm_loop_collapse_is_degenerate().