29#include "RNA_prototypes.hh"
90 Mesh *mesh = meshData, *result =
nullptr;
92 bool calc_vert_normal;
93 bool calc_face_normal;
94 float *vweights =
nullptr;
108 calc_face_normal =
true;
109 calc_vert_normal =
true;
112 if (dmd->
iter == 0) {
115 calc_face_normal =
false;
116 calc_vert_normal =
false;
119 if (dmd->
angle == 0.0f) {
122 calc_face_normal =
true;
123 calc_vert_normal =
false;
142 const uint vert_tot = mesh->verts_num;
145 vweights =
static_cast<float *
>(
MEM_malloc_arrayN(vert_tot,
sizeof(
float), __func__));
148 for (i = 0; i < vert_tot; i++) {
153 for (i = 0; i < vert_tot; i++) {
164 convert_params.calc_vert_normal = calc_vert_normal;
175 const float symmetry_eps = 0.00002f;
264 uiItemL(layout, count_info, ICON_NONE);
277 "DecimateModifierData",
279 &RNA_DecimateModifier,
Mesh * BKE_mesh_from_bmesh_for_eval_nomain(BMesh *bm, const CustomData_MeshMasks *cd_mask_extra, const Mesh *me_settings)
BMesh * BKE_mesh_to_bmesh_ex(const Mesh *mesh, const BMeshCreateParams *create_params, const BMeshFromMeshParams *convert_params)
void BKE_modifier_copydata_generic(const ModifierData *md, ModifierData *md_dst, int flag)
@ eModifierTypeFlag_AcceptsCVs
@ eModifierTypeFlag_AcceptsMesh
ModifierData * BKE_modifiers_findby_name(const Object *ob, const char *name)
void BKE_modifier_set_error(const Object *ob, ModifierData *md, const char *format,...) ATTR_PRINTF_FORMAT(3
#define SNPRINTF(dst, format,...)
Platform independent time functions.
Utility defines for timing/benchmarks.
#define TIMEIT_START(var)
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define MEMCPY_STRUCT_AFTER(struct_dst, struct_src, member)
bool DEG_is_active(const Depsgraph *depsgraph)
Object * DEG_get_original_object(Object *object)
#define CD_MASK_ORIGINDEX
#define CD_MASK_MDEFORMVERT
#define DNA_struct_default_get(struct_name)
@ MOD_DECIM_FLAG_INVERT_VGROUP
@ MOD_DECIM_FLAG_SYMMETRY
@ MOD_DECIM_FLAG_TRIANGULATE
@ MOD_DECIM_FLAG_ALL_BOUNDARY_VERTS
@ MOD_DECIM_MODE_UNSUBDIV
@ MOD_DECIM_MODE_COLLAPSE
@ MOD_DECIM_MODE_DISSOLVE
struct DecimateModifierData DecimateModifierData
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
static void init_data(ModifierData *md)
static DecimateModifierData * getOriginalModifierData(const DecimateModifierData *dmd, const ModifierEvalContext *ctx)
static void panel_register(ARegionType *region_type)
ModifierTypeInfo modifierType_Decimate
static void updateFaceCount(const ModifierEvalContext *ctx, DecimateModifierData *dmd, int face_count)
static void panel_draw(const bContext *, Panel *panel)
static void required_data_mask(ModifierData *md, CustomData_MeshMasks *r_cddata_masks)
static Mesh * modify_mesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *meshData)
void modifier_panel_end(uiLayout *layout, PointerRNA *ptr)
PanelType * modifier_panel_register(ARegionType *region_type, ModifierType type, PanelDrawFn draw)
PointerRNA * modifier_panel_get_property_pointers(Panel *panel, PointerRNA *r_ob_ptr)
void modifier_vgroup_ui(uiLayout *layout, PointerRNA *ptr, PointerRNA *ob_ptr, const char *vgroup_prop, const char *invert_vgroup_prop, const char *text)
void MOD_get_vgroup(const Object *ob, const Mesh *mesh, const char *name, const MDeformVert **dvert, int *defgrp_index)
void uiLayoutSetActive(uiLayout *layout, bool active)
void uiItemL(uiLayout *layout, const char *name, int icon)
uiLayout * uiLayoutRow(uiLayout *layout, bool align)
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
uiLayout * uiLayoutRowWithHeading(uiLayout *layout, bool align, const char *heading)
void uiItemDecoratorR(uiLayout *layout, PointerRNA *ptr, const char *propname, int index)
void uiLayoutSetPropDecorate(uiLayout *layout, bool is_sep)
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
void uiItemR(uiLayout *layout, PointerRNA *ptr, const char *propname, eUI_Item_Flag flag, const char *name, int icon)
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.
void BM_mesh_decimate_unsubdivide(BMesh *bm, int iterations)
void BM_mesh_decimate_dissolve(BMesh *bm, float angle_limit, bool do_dissolve_boundaries, const BMO_Delimit delimit)
ATTR_WARN_UNUSED_RESULT BMesh * bm
void BM_mesh_free(BMesh *bm)
BMesh Free Mesh.
void *(* MEM_malloc_arrayN)(size_t len, size_t size, const char *str)
void MEM_freeN(void *vmemh)
void debug_randomize_mesh_order(Mesh *mesh)
int RNA_int_get(PointerRNA *ptr, const char *name)
int RNA_string_length(PointerRNA *ptr, const char *name)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
int RNA_enum_get(PointerRNA *ptr, const char *name)
struct BLI_mempool * vtoolflagpool
struct BLI_mempool * etoolflagpool
struct BLI_mempool * ftoolflagpool