29#include "RNA_prototypes.hh"
65 input->corner_verts_stride =
sizeof(int);
87static void *dualcon_alloc_output(
int totvert,
int totquad)
96 output->vert_positions =
output->mesh->vert_positions_for_write().data();
97 output->face_offsets =
output->mesh->face_offsets_for_write().data();
98 output->corner_verts =
output->mesh->corner_verts_for_write().data();
103static void dualcon_add_vert(
void *output_v,
const float co[3])
105 DualConOutput *
output =
static_cast<DualConOutput *
>(output_v);
113static void dualcon_add_quad(
void *output_v,
const int vert_indices[4])
115 DualConOutput *
output =
static_cast<DualConOutput *
>(output_v);
123 for (
i = 0;
i < 4;
i++) {
148 if (rmd->
scale == 0.0f) {
159 init_dualcon_mesh(&
input, mesh);
185 std::scoped_lock
lock(dualcon_mutex);
187 dualcon_alloc_output,
223#ifdef WITH_MOD_REMESH
249 row = &layout->
row(
false);
258 layout->
label(
RPT_(
"Built without Remesh modifier"), ICON_NONE);
270 "RemeshModifierData",
void BKE_mesh_copy_parameters_for_eval(Mesh *me_dst, const Mesh *me_src)
Mesh * BKE_mesh_new_nomain(int verts_num, int edges_num, int faces_num, int corners_num)
Mesh * BKE_mesh_remesh_voxel(const Mesh *mesh, float voxel_size, float adaptivity, float isovalue, const Object *object, ModifierData *modifier_data)
int BKE_mesh_runtime_corner_tris_len(const Mesh *mesh)
void BKE_modifier_copydata_generic(const ModifierData *md, ModifierData *md_dst, int flag)
@ eModifierTypeFlag_AcceptsCVs
@ eModifierTypeFlag_SupportsEditmode
@ eModifierTypeFlag_AcceptsMesh
void BKE_modifier_set_error(const Object *ob, ModifierData *md, const char *format,...) ATTR_PRINTF_FORMAT(3
MINLINE void copy_v3_v3(float r[3], const float a[3])
#define UNUSED_VARS_NDEBUG(...)
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define MEMCPY_STRUCT_AFTER(struct_dst, struct_src, member)
#define DNA_struct_default_get(struct_name)
@ MOD_REMESH_SMOOTH_SHADING
@ MOD_REMESH_SHARP_FEATURES
Read Guarded memory(de)allocation.
static void init_data(ModifierData *md)
static void panel_register(ARegionType *region_type)
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 void panel_register(ARegionType *region_type)
static void panel_draw(const bContext *, Panel *panel)
static Mesh * modify_mesh(ModifierData *, const ModifierEvalContext *, Mesh *mesh)
ModifierTypeInfo modifierType_Remesh
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)
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
void * dualcon(const DualConInput *input_mesh, DualConAllocOutput alloc_output, DualConAddVert add_vert, DualConAddQuad add_quad, DualConFlags flags, DualConMode mode, float threshold, float hermite_num, float scale, int depth)
unsigned int(* DualConTri)[3]
unsigned int * DualConCornerVerts
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
void mesh_smooth_set(Mesh &mesh, bool use_smooth, bool keep_sharp_edges=false)
void mesh_calc_edges(Mesh &mesh, bool keep_existing_edges, bool select_new_edges)
void debug_randomize_mesh_order(Mesh *mesh)
VecBase< int32_t, 3 > int3
VecBase< float, 3 > float3
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
int RNA_enum_get(PointerRNA *ptr, const char *name)
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)