29#include "RNA_prototypes.hh"
60 input->co = (
DualConCo)mesh->vert_positions().data();
62 input->totco = mesh->verts_num;
64 input->mloop = (
DualConLoop)mesh->corner_verts().data();
65 input->loop_stride =
sizeof(
int);
67 input->corner_tris = (
DualConTri)mesh->corner_tris().data();
87static void *dualcon_alloc_output(
int totvert,
int totquad)
91 if (!(output = MEM_cnew<DualConOutput>(__func__))) {
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);
107 BLI_assert(output->curvert < output->mesh->verts_num);
109 copy_v3_v3(output->vert_positions[output->curvert], co);
113static void dualcon_add_quad(
void *output_v,
const int vert_indices[4])
115 DualConOutput *output =
static_cast<DualConOutput *
>(output_v);
116 Mesh *mesh = output->mesh;
119 BLI_assert(output->curface < mesh->faces_num);
122 output->face_offsets[output->curface] = output->curface * 4;
123 for (i = 0; i < 4; i++) {
124 output->corner_verts[output->curface * 4 + i] = vert_indices[i];
148 if (result ==
nullptr) {
154 init_dualcon_mesh(&input, mesh);
180 output =
static_cast<DualConOutput *
>(
dualcon(&input,
181 dualcon_alloc_output,
191 result = output->mesh;
198 bke::mesh_calc_edges(*result,
true,
false);
217#ifdef WITH_MOD_REMESH
252 uiItemL(layout,
RPT_(
"Built without Remesh modifier"), ICON_NONE);
264 "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)
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
MINLINE void copy_v3_v3(float r[3], const float a[3])
#define BLI_MUTEX_INITIALIZER
void BLI_mutex_lock(ThreadMutex *mutex)
void BLI_mutex_unlock(ThreadMutex *mutex)
pthread_mutex_t ThreadMutex
#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
struct RemeshModifierData RemeshModifierData
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 *, const ModifierEvalContext *, Mesh *mesh)
ModifierTypeInfo modifierType_Remesh
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 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 * uiLayoutColumn(uiLayout *layout, bool align)
void uiItemR(uiLayout *layout, PointerRNA *ptr, const char *propname, eUI_Item_Flag flag, const char *name, int icon)
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 * DualConLoop
unsigned int(* DualConTri)[3]
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
void MEM_freeN(void *vmemh)
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)