29#include "RNA_prototypes.hh"
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;
148 for (
i = 0;
i < vert_tot;
i++) {
153 for (
i = 0;
i < vert_tot;
i++) {
175 const float symmetry_eps = 0.00002f;
203 BLI_assert(
bm->vtoolflagpool ==
nullptr &&
bm->etoolflagpool ==
nullptr &&
204 bm->ftoolflagpool ==
nullptr);
238 row = &layout->
row(
true,
IFACE_(
"Symmetry"));
240 sub = &row->
row(
true);
242 sub = &sub->
row(
true);
250 sub = &layout->
row(
true);
264 layout->
label(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)
T * DEG_get_original(T *id)
#define CD_MASK_ORIGINDEX
#define CD_MASK_MDEFORMVERT
#define DNA_struct_default_get(struct_name)
@ MOD_DECIM_MODE_UNSUBDIV
@ MOD_DECIM_MODE_COLLAPSE
@ MOD_DECIM_MODE_DISSOLVE
@ MOD_DECIM_FLAG_INVERT_VGROUP
@ MOD_DECIM_FLAG_SYMMETRY
@ MOD_DECIM_FLAG_TRIANGULATE
@ MOD_DECIM_FLAG_ALL_BOUNDARY_VERTS
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
static void init_data(ModifierData *md)
static void panel_register(ARegionType *region_type)
static void required_data_mask(ModifierData *, CustomData_MeshMasks *r_cddata_masks)
static void panel_draw(const bContext *, Panel *panel)
static Mesh * modify_mesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
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_vgroup_ui(uiLayout *layout, PointerRNA *ptr, PointerRNA *ob_ptr, const StringRefNull vgroup_prop, const std::optional< StringRefNull > invert_vgroup_prop, const std::optional< StringRefNull > text)
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_error_message_draw(uiLayout *layout, PointerRNA *ptr)
void MOD_get_vgroup(const Object *ob, const Mesh *mesh, const char *name, const MDeformVert **dvert, int *defgrp_index)
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)
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 CustomData_MeshMasks cd_mask_extra
void use_property_decorate_set(bool is_sep)
void decorator(PointerRNA *ptr, PropertyRNA *prop, int index)
void label(blender::StringRef name, int icon)
uiLayout & column(bool align)
void active_set(bool active)
uiLayout & row(bool align)
void use_property_split_set(bool value)
void prop(PointerRNA *ptr, PropertyRNA *prop, int index, int value, eUI_Item_Flag flag, std::optional< blender::StringRef > name_opt, int icon, std::optional< blender::StringRef > placeholder=std::nullopt)