33 for (
int p = 0; p < totpoly; p++) {
42 mdisps[loop_index].
level = 1;
44 int prev_loop_index =
l - 1 >= 0 ? loop_index - 1 : loop_index + poly->
totloop - 1;
62 Mesh *coarse_mesh =
object->data;
67 const int new_top_level = mmd->
totlvl + 1;
74 if (new_top_level == 1) {
84 &reshape_context,
object, mmd, new_top_level)) {
typedef float(TangentPoint)[2]
CustomData interface, see also DNA_customdata_types.h.
bool CustomData_has_layer(const struct CustomData *data, int type)
void * CustomData_get_layer(const struct CustomData *data, int type)
void * CustomData_add_layer(struct CustomData *data, int type, eCDAllocType alloctype, void *layer, int totelem)
void BKE_mesh_calc_poly_center(const struct MPoly *mpoly, const struct MLoop *loopstart, const struct MVert *mvarray, float r_cent[3])
void multires_set_tot_level(struct Object *ob, struct MultiresModifierData *mmd, int lvl)
void multires_force_sculpt_rebuild(struct Object *object)
MINLINE void copy_v3_v3(float r[3], const float a[3])
void mid_v3_v3v3(float r[3], const float a[3], const float b[3])
Read Guarded memory(de)allocation.
ATTR_WARN_UNUSED_RESULT const BMLoop * l
void multires_reshape_context_free(MultiresReshapeContext *reshape_context)
void multires_reshape_ensure_grids(struct Mesh *mesh, int level)
bool multires_reshape_context_create_from_modifier(MultiresReshapeContext *reshape_context, struct Object *object, struct MultiresModifierData *mmd, int top_level)
void multires_reshape_object_grids_to_tangent_displacement(const MultiresReshapeContext *reshape_context)
static void multires_subdivide_create_object_space_linear_grids(Mesh *mesh)
void multires_subdivide_create_tangent_displacement_linear_grids(Object *object, MultiresModifierData *mmd)