Blender  V3.3
Classes | Macros | Functions
bmesh_decimate_dissolve.c File Reference
#include "MEM_guardedalloc.h"
#include "BLI_heap.h"
#include "BLI_math.h"
#include "BKE_customdata.h"
#include "bmesh.h"
#include "bmesh_decimate.h"

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 struct DelimitData *delimit_data)
 
static bool bm_vert_is_delimiter (const BMVert *v, const BMO_Delimit delimit, const struct DelimitData *delimit_data)
 
static float bm_vert_edge_face_angle (BMVert *v, const BMO_Delimit delimit, const struct DelimitData *delimit_data)
 
static bool bm_edge_is_contiguous_loop_cd_all (const BMEdge *e, const struct DelimitData *delimit_data)
 
static float bm_edge_calc_dissolve_error (const BMEdge *e, const BMO_Delimit delimit, const struct 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.c.

Macro Definition Documentation

◆ ANGLE_TO_UNIT

#define ANGLE_TO_UNIT   (1.0f / UNIT_TO_ANGLE)

◆ COST_INVALID

#define COST_INVALID   FLT_MAX

Definition at line 22 of file bmesh_decimate_dissolve.c.

◆ UNIT_TO_ANGLE

#define UNIT_TO_ANGLE   DEG2RADF(90.0f)

◆ USE_DEGENERATE_CHECK

#define USE_DEGENERATE_CHECK

Definition at line 20 of file bmesh_decimate_dissolve.c.

Function Documentation

◆ bm_edge_calc_dissolve_error()

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

◆ bm_edge_is_contiguous_loop_cd_all()

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

◆ bm_edge_is_delimiter()

static bool bm_edge_is_delimiter ( const BMEdge e,
const BMO_Delimit  delimit,
const struct DelimitData delimit_data 
)
static

◆ bm_loop_collapse_is_degenerate()

static bool bm_loop_collapse_is_degenerate ( BMLoop l_ear)
static

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

static bool bm_vert_collapse_is_degenerate ( BMVert v)
static

◆ bm_vert_edge_face_angle()

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

◆ bm_vert_is_delimiter()

static bool bm_vert_is_delimiter ( const BMVert v,
const BMO_Delimit  delimit,
const struct 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 160 of file bmesh_decimate_dissolve.c.

References Freestyle::a, BLI_assert, center, r, and sub_v3_v3v3().

Referenced by bm_loop_collapse_is_degenerate().