Blender
V3.3
|
#include "MEM_guardedalloc.h"
#include "BLI_array.h"
#include "BLI_math.h"
#include "BLI_stack.h"
#include "bmesh.h"
#include "bmesh_tools.h"
#include "intern/bmesh_operators_private.h"
Go to the source code of this file.
Macros | |
#define | FACE_MARK 1 |
#define | FACE_ORIG 2 |
#define | FACE_NEW 4 |
#define | FACE_TAG 8 |
#define | EDGE_MARK 1 |
#define | EDGE_TAG 2 |
#define | EDGE_ISGC 8 |
#define | VERT_MARK 1 |
#define | VERT_MARK_PAIR 4 |
#define | VERT_TAG 2 |
#define | VERT_ISGC 8 |
#define | VERT_MARK_TEAR 16 |
#define | EDGE_MARK 1 |
#define | EDGE_COLLAPSE 2 |
Functions | |
static bool UNUSED_FUNCTION() | check_hole_in_region (BMesh *bm, BMFace *f) |
static void | bm_face_split (BMesh *bm, const short oflag, bool use_edge_delete) |
void | bmo_dissolve_faces_exec (BMesh *bm, BMOperator *op) |
void | bmo_dissolve_edges_exec (BMesh *bm, BMOperator *op) |
void | bmo_dissolve_verts_exec (BMesh *bm, BMOperator *op) |
void | bmo_dissolve_limit_exec (BMesh *bm, BMOperator *op) |
static void | bm_mesh_edge_collapse_flagged (BMesh *bm, const int flag, const short oflag) |
void | bmo_dissolve_degenerate_exec (BMesh *bm, BMOperator *op) |
Removes isolated geometry regions without creating holes in the mesh.
Definition in file bmo_dissolve.c.
#define EDGE_COLLAPSE 2 |
Definition at line 500 of file bmo_dissolve.c.
#define EDGE_ISGC 8 |
Definition at line 29 of file bmo_dissolve.c.
#define EDGE_MARK 1 |
Definition at line 499 of file bmo_dissolve.c.
#define EDGE_MARK 1 |
Definition at line 499 of file bmo_dissolve.c.
#define EDGE_TAG 2 |
Definition at line 28 of file bmo_dissolve.c.
#define FACE_MARK 1 |
Definition at line 22 of file bmo_dissolve.c.
#define FACE_NEW 4 |
Definition at line 24 of file bmo_dissolve.c.
#define FACE_ORIG 2 |
Definition at line 23 of file bmo_dissolve.c.
#define FACE_TAG 8 |
Definition at line 25 of file bmo_dissolve.c.
#define VERT_ISGC 8 |
Definition at line 34 of file bmo_dissolve.c.
#define VERT_MARK 1 |
Definition at line 31 of file bmo_dissolve.c.
#define VERT_MARK_PAIR 4 |
Definition at line 32 of file bmo_dissolve.c.
#define VERT_MARK_TEAR 16 |
Definition at line 35 of file bmo_dissolve.c.
#define VERT_TAG 2 |
Definition at line 33 of file bmo_dissolve.c.
Definition at line 70 of file bmo_dissolve.c.
References BLI_stack_free(), BLI_stack_is_empty(), BLI_stack_new, BLI_stack_pop(), BLI_stack_push(), bm, BM_edge_kill(), BM_face_split(), BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_VERT, BM_vert_is_edge_pair(), BM_VERTS_OF_MESH, BMO_vert_flag_test, BMVert::e, BMLoop::f, l, BMFace::len, BMLoop::next, NULL, oflag, BMLoop::prev, BMLoop::v, and v.
Referenced by bmo_dissolve_edges_exec(), and bmo_dissolve_verts_exec().
Definition at line 502 of file bmo_dissolve.c.
References bm, BMO_op_callf(), and oflag.
Referenced by bmo_dissolve_degenerate_exec().
void bmo_dissolve_degenerate_exec | ( | BMesh * | bm, |
BMOperator * | op | ||
) |
Definition at line 507 of file bmo_dissolve.c.
References BLI_assert, bm, BM_EDGE, BM_edge_calc_length_squared(), BM_edge_split(), BM_EDGES_OF_MESH, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_TAG, BM_face_split(), BM_ITER_MESH, bm_mesh_edge_collapse_flagged(), BMO_edge_flag_enable, BMO_edge_flag_test, BMO_slot_buffer_flag_enable(), BMO_slot_float_get(), BMVert::co, BMLoop::e, e, EDGE_COLLAPSE, EDGE_MARK, BMLoop::f, fabsf, BMOperator::flag, BMFace::len, len_v3v3(), min_ff(), BMLoop::next, normalize_v3(), NULL, BMLoop::prev, BMLoop::radial_next, reset, BMOperator::slots_in, sub_v3_v3v3(), BMLoop::v, and void.
void bmo_dissolve_edges_exec | ( | BMesh * | bm, |
BMOperator * | op | ||
) |
Definition at line 258 of file bmo_dissolve.c.
References BMesh::act_face, bm, BM_EDGE, BM_edge_face_pair(), BM_edge_kill(), BM_edge_loop_pair(), BM_EDGES_OF_MESH, BM_EDGES_OF_VERT, BM_face_find_double(), BM_FACE_FIRST_LOOP, BM_face_kill(), bm_face_split(), BM_faces_join_pair(), BM_ITER_ELEM, BM_ITER_MESH, BM_ITER_MESH_MUTABLE, BM_vert_collapse_edge(), BM_vert_is_edge_pair(), BM_vert_kill(), BM_VERTS_OF_MESH, BMO_edge_flag_enable, BMO_edge_flag_test, BMO_ITER, BMO_slot_bool_get(), BMO_slot_buffer_flag_enable(), BMO_vert_flag_enable, BMO_vert_flag_set, BMO_vert_flag_test, BMVert::e, BMLoop::e, e, EDGE_ISGC, EDGE_TAG, l_b, BMLoop::next, NULL, BMOperator::slots_in, BMLoop::v, v, VERT_ISGC, VERT_MARK, and VERT_TAG.
void bmo_dissolve_faces_exec | ( | BMesh * | bm, |
BMOperator * | op | ||
) |
Definition at line 113 of file bmo_dissolve.c.
References BMesh::act_face, BLI_array_append, BLI_array_append_ret, BLI_array_clear, BLI_array_declare, BLI_array_free, BLI_array_len, BLI_assert, bm, BM_FACE, BM_faces_join(), BM_ITER_MESH, BM_ITER_MESH_MUTABLE, BM_vert_collapse_edge(), BM_vert_is_edge_pair(), BM_VERTS_OF_MESH, BMO_ERROR_FATAL, BMO_error_occurred_at_level(), BMO_face_flag_disable, BMO_face_flag_enable, BMO_face_flag_test, BMO_ITER, BMO_op_callf(), BMO_slot_bool_get(), BMO_slot_buffer_flag_enable(), BMO_slot_buffer_from_enabled_flag(), BMO_vert_flag_set, BMO_vert_flag_test, BMW_begin(), BMW_end(), BMW_FLAG_NOP, BMW_init(), BMW_ISLAND_MANIFOLD, BMW_MASK_NOP, BMW_NIL_LAY, BMW_step(), DEL_FACES, BMVert::e, FACE_MARK, FACE_NEW, FACE_ORIG, FACE_TAG, faces, BMOperator::flag, MEM_freeN, NULL, BMOperator::slots_in, BMOperator::slots_out, BMesh::totface, v, and VERT_MARK.
void bmo_dissolve_limit_exec | ( | BMesh * | bm, |
BMOperator * | op | ||
) |
Definition at line 477 of file bmo_dissolve.c.
References bm, BM_FACE, BM_mesh_decimate_dissolve_ex(), BMO_SLOT_AS_BUFFER, BMO_slot_bool_get(), BMO_slot_buffer_from_enabled_flag(), BMO_slot_float_get(), BMO_slot_get(), BMO_slot_int_get(), FACE_NEW, BMOpSlot::len, M_PI_2, min_ff(), BMOperator::slots_in, and BMOperator::slots_out.
void bmo_dissolve_verts_exec | ( | BMesh * | bm, |
BMOperator * | op | ||
) |
Definition at line 359 of file bmo_dissolve.c.
References BMesh::act_face, bm, BM_DISK_EDGE_NEXT, BM_edge_is_boundary(), BM_edge_is_wire(), BM_edge_kill(), BM_edge_loop_pair(), BM_EDGES_OF_MESH, BM_EDGES_OF_VERT, BM_face_find_double(), BM_face_kill(), bm_face_split(), BM_faces_join_pair(), BM_ITER_ELEM, BM_ITER_MESH_MUTABLE, BM_LOOPS_OF_VERT, BM_VERT, BM_vert_collapse_edge(), BM_vert_is_edge_pair(), BM_vert_kill(), BM_VERTS_OF_MESH, BMO_edge_flag_enable, BMO_edge_flag_test, BMO_ITER, BMO_slot_bool_get(), BMO_vert_flag_enable, BMO_vert_flag_test, BMVert::e, BMLoop::e, e, EDGE_ISGC, l_b, BMLoop::next, NULL, BMOperator::slots_in, BMLoop::v, v, VERT_ISGC, VERT_MARK, VERT_MARK_PAIR, and VERT_MARK_TEAR.
|
static |
Definition at line 37 of file bmo_dissolve.c.
References bm, BM_ITER_ELEM, BM_LOOPS_OF_FACE, BMO_edge_flag_test, BMO_face_flag_test, BMW_begin(), BMW_end(), BMW_FLAG_NOP, BMW_init(), BMW_ISLAND, BMW_MASK_NOP, BMW_NIL_LAY, BMW_step(), BMLoop::e, EDGE_MARK, BMLoop::f, FACE_MARK, and BMLoop::radial_next.