diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-08-21 23:28:35 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-08-21 23:48:10 +0300 |
commit | 189aa32a3ac0e949275d16ffb19576a1306d1780 (patch) | |
tree | ff75826925b4b26f6b4aa8928fe3c5d3c799a98f /source/blender | |
parent | 4a2d1953f3ca3e1160a3ce767df15e481658bdf6 (diff) |
Cleanup: vertex coordinate access, naming & minor changes
This also splits vertex access and allocation so it's possible
to copy coordinates into an existing array without allocating it.
Diffstat (limited to 'source/blender')
35 files changed, 219 insertions, 216 deletions
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index bc115fec35a..c866809b7c0 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -393,7 +393,7 @@ struct Mesh *editbmesh_get_eval_cage_and_final(struct Depsgraph *depsgraph, const struct CustomData_MeshMasks *dataMask, struct Mesh **r_final); -float (*editbmesh_get_vertex_cos(struct BMEditMesh *em, int *r_numVerts))[3]; +float (*editbmesh_vert_coords_alloc(struct BMEditMesh *em, int *r_vert_len))[3]; bool editbmesh_modifier_is_enabled(struct Scene *scene, struct ModifierData *md, bool has_prev_mesh); diff --git a/source/blender/blenkernel/BKE_curve.h b/source/blender/blenkernel/BKE_curve.h index dff38f6b609..623d0df1618 100644 --- a/source/blender/blenkernel/BKE_curve.h +++ b/source/blender/blenkernel/BKE_curve.h @@ -124,11 +124,15 @@ void BKE_curve_nurb_vert_active_set(struct Curve *cu, const struct Nurb *nu, con bool BKE_curve_nurb_vert_active_get(struct Curve *cu, struct Nurb **r_nu, void **r_vert); void BKE_curve_nurb_vert_active_validate(struct Curve *cu); -float (*BKE_curve_nurbs_vertexCos_get(struct ListBase *lb, int *r_numVerts))[3]; -void BK_curve_nurbs_vertexCos_apply(struct ListBase *lb, const float (*vertexCos)[3]); +float (*BKE_curve_nurbs_vert_coords_alloc(struct ListBase *lb, int *r_vert_len))[3]; +void BKE_curve_nurbs_vert_coords_get(struct ListBase *lb, float (*vert_coords)[3], int vert_len); -float (*BKE_curve_nurbs_keyVertexCos_get(struct ListBase *lb, float *key))[3]; -void BKE_curve_nurbs_keyVertexTilts_apply(struct ListBase *lb, float *key); +void BK_curve_nurbs_vert_coords_apply(struct ListBase *lb, const float (*vert_coords)[3]); + +float (*BKE_curve_nurbs_key_vert_coords_alloc(struct ListBase *lb, + float *key, + int *r_vert_len))[3]; +void BKE_curve_nurbs_key_vert_tilts_apply(struct ListBase *lb, float *key); void BKE_curve_editNurb_keyIndex_delCV(struct GHash *keyindex, const void *cv); void BKE_curve_editNurb_keyIndex_free(struct GHash **keyindex); diff --git a/source/blender/blenkernel/BKE_editmesh.h b/source/blender/blenkernel/BKE_editmesh.h index b7280c702d2..6e4132cbc35 100644 --- a/source/blender/blenkernel/BKE_editmesh.h +++ b/source/blender/blenkernel/BKE_editmesh.h @@ -88,7 +88,7 @@ void BKE_editmesh_free(BMEditMesh *em); void BKE_editmesh_color_free(BMEditMesh *em); void BKE_editmesh_color_ensure(BMEditMesh *em, const char htype); -float (*BKE_editmesh_vertexCos_get_orco(BMEditMesh *em, int *r_numVerts))[3]; +float (*BKE_editmesh_vert_coords_alloc_orco(BMEditMesh *em, int *r_vert_len))[3]; void BKE_editmesh_lnorspace_update(BMEditMesh *em); void BKE_editmesh_ensure_autosmooth(BMEditMesh *em); @@ -98,7 +98,7 @@ void BKE_editmesh_statvis_calc(BMEditMesh *em, struct EditMeshData *emd, const struct MeshStatVis *statvis); -float (*BKE_editmesh_vertexCos_get( - struct Depsgraph *depsgraph, struct BMEditMesh *em, struct Scene *scene, int *r_numVerts))[3]; +float (*BKE_editmesh_vert_coords_alloc( + struct Depsgraph *depsgraph, struct BMEditMesh *em, struct Scene *scene, int *r_vert_len))[3]; #endif /* __BKE_EDITMESH_H__ */ diff --git a/source/blender/blenkernel/BKE_lattice.h b/source/blender/blenkernel/BKE_lattice.h index 24594da13c6..fbb98b290f0 100644 --- a/source/blender/blenkernel/BKE_lattice.h +++ b/source/blender/blenkernel/BKE_lattice.h @@ -58,7 +58,7 @@ void outside_lattice(struct Lattice *lt); void curve_deform_verts(struct Object *cuOb, struct Object *target, - float (*vertexCos)[3], + float (*vert_coords)[3], int numVerts, struct MDeformVert *dvert, const int defgrp_index, @@ -73,14 +73,14 @@ void curve_deform_vector(struct Object *cuOb, void lattice_deform_verts(struct Object *laOb, struct Object *target, struct Mesh *mesh, - float (*vertexCos)[3], + float (*vert_coords)[3], int numVerts, const char *vgroup, float influence); void armature_deform_verts(struct Object *armOb, struct Object *target, const struct Mesh *mesh, - float (*vertexCos)[3], + float (*vert_coords)[3], float (*defMats)[3][3], int numVerts, int deformflag, @@ -88,8 +88,8 @@ void armature_deform_verts(struct Object *armOb, const char *defgrp_name, struct bGPDstroke *gps); -float (*BKE_lattice_vertexcos_get(const struct Lattice *lt, int *r_numVerts))[3]; -void BKE_lattice_vertexcos_apply(struct Lattice *lt, const float (*vertexCos)[3]); +float (*BKE_lattice_vert_coords_alloc(const struct Lattice *lt, int *r_vert_len))[3]; +void BKE_lattice_vert_coords_apply(struct Lattice *lt, const float (*vert_coords)[3]); void BKE_lattice_modifiers_calc(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob); diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h index 3de52239d84..b2ae7a6dac0 100644 --- a/source/blender/blenkernel/BKE_mesh.h +++ b/source/blender/blenkernel/BKE_mesh.h @@ -208,8 +208,6 @@ bool BKE_mesh_uv_cdlayer_rename(struct Mesh *me, const char *new_name, bool do_tessface); -float (*BKE_mesh_vertexCos_get(const struct Mesh *me, int *r_numVerts))[3]; - void BKE_mesh_split_faces(struct Mesh *mesh, bool free_loop_normals); /* Create new mesh from the given object at its current state. @@ -268,8 +266,11 @@ void BKE_mesh_mselect_active_set(struct Mesh *me, int index, int type); void BKE_mesh_count_selected_items(const struct Mesh *mesh, int r_count[3]); -void BKE_mesh_apply_vert_coords(struct Mesh *mesh, const float (*vertCoords)[3]); -void BKE_mesh_apply_vert_normals(struct Mesh *mesh, const short (*vertNormals)[3]); +float (*BKE_mesh_vert_coords_alloc(const struct Mesh *mesh, int *r_vert_len))[3]; +void BKE_mesh_vert_coords_get(const struct Mesh *mesh, float (*vert_coords)[3]); + +void BKE_mesh_vert_coords_apply(struct Mesh *mesh, const float (*vert_coords)[3]); +void BKE_mesh_vert_normals_apply(struct Mesh *mesh, const short (*vertNormals)[3]); /* *** mesh_evaluate.c *** */ diff --git a/source/blender/blenkernel/BKE_pbvh.h b/source/blender/blenkernel/BKE_pbvh.h index d34ff424e05..245345d9f1d 100644 --- a/source/blender/blenkernel/BKE_pbvh.h +++ b/source/blender/blenkernel/BKE_pbvh.h @@ -278,9 +278,9 @@ float *BKE_pbvh_node_layer_disp_get(PBVH *pbvh, PBVHNode *node); void BKE_pbvh_node_layer_disp_free(PBVHNode *node); /* vertex deformer */ -float (*BKE_pbvh_get_vertCos(struct PBVH *pbvh))[3]; -void BKE_pbvh_apply_vertCos(struct PBVH *pbvh, const float (*vertCos)[3], const int totvert); -bool BKE_pbvh_isDeformed(struct PBVH *pbvh); +float (*BKE_pbvh_vert_coords_alloc(struct PBVH *pbvh))[3]; +void BKE_pbvh_vert_coords_apply(struct PBVH *pbvh, const float (*vertCos)[3], const int totvert); +bool BKE_pbvh_is_deformed(struct PBVH *pbvh); /* Vertex Iterator */ diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index f752542133e..165df2381da 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -889,7 +889,7 @@ static Mesh *create_orco_mesh(Object *ob, Mesh *me, BMEditMesh *em, int layer) orco = get_orco_coords(ob, em, layer, &free); if (orco) { - BKE_mesh_apply_vert_coords(mesh, orco); + BKE_mesh_vert_coords_apply(mesh, orco); if (free) { MEM_freeN(orco); } @@ -909,10 +909,10 @@ static void add_orco_mesh(Object *ob, BMEditMesh *em, Mesh *mesh, Mesh *mesh_orc free = 1; if (mesh_orco->totvert == totvert) { - orco = BKE_mesh_vertexCos_get(mesh_orco, NULL); + orco = BKE_mesh_vert_coords_alloc(mesh_orco, NULL); } else { - orco = BKE_mesh_vertexCos_get(mesh, NULL); + orco = BKE_mesh_vert_coords_alloc(mesh, NULL); } } else { @@ -1208,14 +1208,14 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph, if (mti->type == eModifierTypeType_OnlyDeform && !sculpt_dyntopo) { if (!deformed_verts) { - deformed_verts = BKE_mesh_vertexCos_get(mesh_input, &num_deformed_verts); + deformed_verts = BKE_mesh_vert_coords_alloc(mesh_input, &num_deformed_verts); } else if (isPrevDeform && mti->dependsOnNormals && mti->dependsOnNormals(md)) { if (mesh_final == NULL) { mesh_final = BKE_mesh_copy_for_eval(mesh_input, true); ASSERT_IS_VALID_MESH(mesh_final); } - BKE_mesh_apply_vert_coords(mesh_final, deformed_verts); + BKE_mesh_vert_coords_apply(mesh_final, deformed_verts); } modwrap_deformVerts(md, &mectx, mesh_final, deformed_verts, num_deformed_verts); @@ -1239,7 +1239,7 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph, mesh_deform = BKE_mesh_copy_for_eval(mesh_input, true); if (deformed_verts) { - BKE_mesh_apply_vert_coords(mesh_deform, deformed_verts); + BKE_mesh_vert_coords_apply(mesh_deform, deformed_verts); } } } @@ -1322,10 +1322,10 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph, /* Deforming a mesh, read the vertex locations * out of the mesh and deform them. Once done with this * run of deformers verts will be written back. */ - deformed_verts = BKE_mesh_vertexCos_get(mesh_final, &num_deformed_verts); + deformed_verts = BKE_mesh_vert_coords_alloc(mesh_final, &num_deformed_verts); } else { - deformed_verts = BKE_mesh_vertexCos_get(mesh_input, &num_deformed_verts); + deformed_verts = BKE_mesh_vert_coords_alloc(mesh_input, &num_deformed_verts); } } /* if this is not the last modifier in the stack then recalculate the normals @@ -1333,7 +1333,7 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph, else if (isPrevDeform && mti->dependsOnNormals && mti->dependsOnNormals(md)) { /* XXX, this covers bug #23673, but we may need normal calc for other types */ if (mesh_final) { - BKE_mesh_apply_vert_coords(mesh_final, deformed_verts); + BKE_mesh_vert_coords_apply(mesh_final, deformed_verts); } } @@ -1352,7 +1352,7 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph, /* apply vertex coordinates or build a Mesh as necessary */ if (mesh_final) { if (deformed_verts) { - BKE_mesh_apply_vert_coords(mesh_final, deformed_verts); + BKE_mesh_vert_coords_apply(mesh_final, deformed_verts); } } else { @@ -1360,7 +1360,7 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph, ASSERT_IS_VALID_MESH(mesh_final); if (deformed_verts) { - BKE_mesh_apply_vert_coords(mesh_final, deformed_verts); + BKE_mesh_vert_coords_apply(mesh_final, deformed_verts); } /* Initialize original indices the first time we evaluate a @@ -1539,7 +1539,7 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph, } } if (deformed_verts) { - BKE_mesh_apply_vert_coords(mesh_final, deformed_verts); + BKE_mesh_vert_coords_apply(mesh_final, deformed_verts); MEM_freeN(deformed_verts); deformed_verts = NULL; } @@ -1599,14 +1599,14 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph, } } -float (*editbmesh_get_vertex_cos(BMEditMesh *em, int *r_numVerts))[3] +float (*editbmesh_vert_coords_alloc(BMEditMesh *em, int *r_vert_len))[3] { BMIter iter; BMVert *eve; float(*cos)[3]; int i; - *r_numVerts = em->bm->totvert; + *r_vert_len = em->bm->totvert; cos = MEM_malloc_arrayN(em->bm->totvert, 3 * sizeof(float), "vertexcos"); @@ -1778,10 +1778,10 @@ static void editbmesh_calc_modifiers(struct Depsgraph *depsgraph, /* Deforming a derived mesh, read the vertex locations * out of the mesh and deform them. Once done with this * run of deformers verts will be written back. */ - deformed_verts = BKE_mesh_vertexCos_get(mesh_final, &num_deformed_verts); + deformed_verts = BKE_mesh_vert_coords_alloc(mesh_final, &num_deformed_verts); } else { - deformed_verts = editbmesh_get_vertex_cos(em_input, &num_deformed_verts); + deformed_verts = editbmesh_vert_coords_alloc(em_input, &num_deformed_verts); } } else if (isPrevDeform && mti->dependsOnNormals && mti->dependsOnNormals(md)) { @@ -1791,7 +1791,7 @@ static void editbmesh_calc_modifiers(struct Depsgraph *depsgraph, mesh_copy_autosmooth(mesh_final, mesh_input); } BLI_assert(deformed_verts != NULL); - BKE_mesh_apply_vert_coords(mesh_final, deformed_verts); + BKE_mesh_vert_coords_apply(mesh_final, deformed_verts); } if (mti->deformVertsEM) { @@ -1811,7 +1811,7 @@ static void editbmesh_calc_modifiers(struct Depsgraph *depsgraph, BKE_id_free(NULL, mesh_final); } mesh_final = mesh_tmp; - BKE_mesh_apply_vert_coords(mesh_final, deformed_verts); + BKE_mesh_vert_coords_apply(mesh_final, deformed_verts); } else if (mesh_final == mesh_cage) { /* 'me' may be changed by this modifier, so we need to copy it. */ @@ -1825,7 +1825,7 @@ static void editbmesh_calc_modifiers(struct Depsgraph *depsgraph, mesh_copy_autosmooth(mesh_final, mesh_input); if (deformed_verts) { - BKE_mesh_apply_vert_coords(mesh_final, deformed_verts); + BKE_mesh_vert_coords_apply(mesh_final, deformed_verts); } } @@ -1895,7 +1895,7 @@ static void editbmesh_calc_modifiers(struct Depsgraph *depsgraph, if (r_cage && i == cageIndex) { if (mesh_final && deformed_verts) { mesh_cage = BKE_mesh_copy_for_eval(mesh_final, false); - BKE_mesh_apply_vert_coords(mesh_cage, deformed_verts); + BKE_mesh_vert_coords_apply(mesh_cage, deformed_verts); } else if (mesh_final) { mesh_cage = mesh_final; @@ -1927,7 +1927,7 @@ static void editbmesh_calc_modifiers(struct Depsgraph *depsgraph, BKE_id_free(NULL, mesh_final); } mesh_final = mesh_tmp; - BKE_mesh_apply_vert_coords(mesh_final, deformed_verts); + BKE_mesh_vert_coords_apply(mesh_final, deformed_verts); } } else if (!deformed_verts && mesh_cage) { diff --git a/source/blender/blenkernel/intern/crazyspace.c b/source/blender/blenkernel/intern/crazyspace.c index 09bbc6c0d13..fcbebd24b4a 100644 --- a/source/blender/blenkernel/intern/crazyspace.c +++ b/source/blender/blenkernel/intern/crazyspace.c @@ -293,7 +293,7 @@ int BKE_crazyspace_get_first_deform_matrices_editbmesh(struct Depsgraph *depsgra BLI_linklist_free((LinkNode *)datamasks, NULL); me = BKE_mesh_from_editmesh_with_coords_thin_wrap(em, &data_mask, NULL); - deformedVerts = editbmesh_get_vertex_cos(em, &numVerts); + deformedVerts = editbmesh_vert_coords_alloc(em, &numVerts); defmats = MEM_mallocN(sizeof(*defmats) * numVerts, "defmats"); for (a = 0; a < numVerts; a++) { @@ -383,7 +383,7 @@ int BKE_sculpt_get_first_deform_matrices(struct Depsgraph *depsgraph, * state. */ Mesh *me = object_eval.data; me_eval = BKE_mesh_copy_for_eval(me, true); - deformedVerts = BKE_mesh_vertexCos_get(me, &numVerts); + deformedVerts = BKE_mesh_vert_coords_alloc(me, &numVerts); defmats = MEM_callocN(sizeof(*defmats) * numVerts, "defmats"); for (a = 0; a < numVerts; a++) { @@ -485,7 +485,7 @@ void BKE_crazyspace_build_sculpt(struct Depsgraph *depsgraph, int a, numVerts; Mesh *mesh = (Mesh *)object->data; - *deformcos = BKE_mesh_vertexCos_get(mesh, &numVerts); + *deformcos = BKE_mesh_vert_coords_alloc(mesh, &numVerts); *deformmats = MEM_callocN(sizeof(*(*deformmats)) * numVerts, "defmats"); for (a = 0; a < numVerts; a++) { diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index 5ec0483d637..24a9d5dc199 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -4606,18 +4606,13 @@ void BKE_nurb_direction_switch(Nurb *nu) } } -float (*BKE_curve_nurbs_vertexCos_get(ListBase *lb, int *r_numVerts))[3] +void BKE_curve_nurbs_vert_coords_get(ListBase *lb, float (*vert_coords)[3], int vert_len) { - int i, numVerts = *r_numVerts = BKE_nurbList_verts_count(lb); - float *co, (*cos)[3] = MEM_malloc_arrayN(numVerts, sizeof(*cos), "cu_vcos"); - Nurb *nu; - - co = cos[0]; - for (nu = lb->first; nu; nu = nu->next) { + float *co = vert_coords[0]; + for (Nurb *nu = lb->first; nu; nu = nu->next) { if (nu->type == CU_BEZIER) { BezTriple *bezt = nu->bezt; - - for (i = 0; i < nu->pntsu; i++, bezt++) { + for (int i = 0; i < nu->pntsu; i++, bezt++) { copy_v3_v3(co, bezt->vec[0]); co += 3; copy_v3_v3(co, bezt->vec[1]); @@ -4628,28 +4623,33 @@ float (*BKE_curve_nurbs_vertexCos_get(ListBase *lb, int *r_numVerts))[3] } else { BPoint *bp = nu->bp; - - for (i = 0; i < nu->pntsu * nu->pntsv; i++, bp++) { + for (int i = 0; i < nu->pntsu * nu->pntsv; i++, bp++) { copy_v3_v3(co, bp->vec); co += 3; } } } + BLI_assert(co == vert_coords[vert_len]); +} - return cos; +float (*BKE_curve_nurbs_vert_coords_alloc(ListBase *lb, int *r_vert_len))[3] +{ + const int vert_len = BKE_nurbList_verts_count(lb); + float(*vert_coords)[3] = MEM_malloc_arrayN(vert_len, sizeof(*vert_coords), __func__); + BKE_curve_nurbs_vert_coords_get(lb, vert_coords, vert_len); + *r_vert_len = vert_len; + return vert_coords; } -void BK_curve_nurbs_vertexCos_apply(ListBase *lb, const float (*vertexCos)[3]) +void BK_curve_nurbs_vert_coords_apply(ListBase *lb, const float (*vert_coords)[3]) { - const float *co = vertexCos[0]; - Nurb *nu; - int i; + const float *co = vert_coords[0]; - for (nu = lb->first; nu; nu = nu->next) { + for (Nurb *nu = lb->first; nu; nu = nu->next) { if (nu->type == CU_BEZIER) { BezTriple *bezt = nu->bezt; - for (i = 0; i < nu->pntsu; i++, bezt++) { + for (int i = 0; i < nu->pntsu; i++, bezt++) { copy_v3_v3(bezt->vec[0], co); co += 3; copy_v3_v3(bezt->vec[1], co); @@ -4661,7 +4661,7 @@ void BK_curve_nurbs_vertexCos_apply(ListBase *lb, const float (*vertexCos)[3]) else { BPoint *bp = nu->bp; - for (i = 0; i < nu->pntsu * nu->pntsv; i++, bp++) { + for (int i = 0; i < nu->pntsu * nu->pntsv; i++, bp++) { copy_v3_v3(bp->vec, co); co += 3; } @@ -4671,18 +4671,17 @@ void BK_curve_nurbs_vertexCos_apply(ListBase *lb, const float (*vertexCos)[3]) } } -float (*BKE_curve_nurbs_keyVertexCos_get(ListBase *lb, float *key))[3] +float (*BKE_curve_nurbs_key_vert_coords_alloc(ListBase *lb, float *key, int *r_vert_len))[3] { - int i, numVerts = BKE_nurbList_verts_count(lb); - float *co, (*cos)[3] = MEM_malloc_arrayN(numVerts, sizeof(*cos), "cu_vcos"); - Nurb *nu; + int vert_len = BKE_nurbList_verts_count(lb); + float(*cos)[3] = MEM_malloc_arrayN(vert_len, sizeof(*cos), __func__); - co = cos[0]; - for (nu = lb->first; nu; nu = nu->next) { + float *co = cos[0]; + for (Nurb *nu = lb->first; nu; nu = nu->next) { if (nu->type == CU_BEZIER) { BezTriple *bezt = nu->bezt; - for (i = 0; i < nu->pntsu; i++, bezt++) { + for (int i = 0; i < nu->pntsu; i++, bezt++) { copy_v3_v3(co, &key[0]); co += 3; copy_v3_v3(co, &key[3]); @@ -4695,18 +4694,18 @@ float (*BKE_curve_nurbs_keyVertexCos_get(ListBase *lb, float *key))[3] else { BPoint *bp = nu->bp; - for (i = 0; i < nu->pntsu * nu->pntsv; i++, bp++) { + for (int i = 0; i < nu->pntsu * nu->pntsv; i++, bp++) { copy_v3_v3(co, key); co += 3; key += KEYELEM_FLOAT_LEN_BPOINT; } } } - + *r_vert_len = vert_len; return cos; } -void BKE_curve_nurbs_keyVertexTilts_apply(ListBase *lb, float *key) +void BKE_curve_nurbs_key_vert_tilts_apply(ListBase *lb, float *key) { Nurb *nu; int i; diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index 83a10344b96..d2a62b3c2f8 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -892,8 +892,7 @@ static void curve_calc_modifiers_pre( * tilts, which is passed through in the modifier stack. * this is also the reason curves do not use a virtual * shape key modifier yet. */ - deformedVerts = BKE_curve_nurbs_keyVertexCos_get(nurb, keyVerts); - numVerts = BKE_nurbList_verts_count(nurb); + deformedVerts = BKE_curve_nurbs_key_vert_coords_alloc(nurb, keyVerts, &numVerts); } } @@ -909,7 +908,7 @@ static void curve_calc_modifiers_pre( } if (!deformedVerts) { - deformedVerts = BKE_curve_nurbs_vertexCos_get(nurb, &numVerts); + deformedVerts = BKE_curve_nurbs_vert_coords_alloc(nurb, &numVerts); } mti->deformVerts(md, &mectx, NULL, deformedVerts, numVerts); @@ -921,11 +920,11 @@ static void curve_calc_modifiers_pre( } if (deformedVerts) { - BK_curve_nurbs_vertexCos_apply(nurb, deformedVerts); + BK_curve_nurbs_vert_coords_apply(nurb, deformedVerts); MEM_freeN(deformedVerts); } if (keyVerts) { /* these are not passed through modifier stack */ - BKE_curve_nurbs_keyVertexTilts_apply(nurb, keyVerts); + BKE_curve_nurbs_key_vert_tilts_apply(nurb, keyVerts); } if (keyVerts) { @@ -933,18 +932,18 @@ static void curve_calc_modifiers_pre( } } -static float (*displist_get_allverts(ListBase *dispbase, int *totvert))[3] +static float (*displist_vert_coords_alloc(ListBase *dispbase, int *r_vert_len))[3] { DispList *dl; float(*allverts)[3], *fp; - *totvert = 0; + *r_vert_len = 0; for (dl = dispbase->first; dl; dl = dl->next) { - *totvert += (dl->type == DL_INDEX3) ? dl->nr : dl->parts * dl->nr; + *r_vert_len += (dl->type == DL_INDEX3) ? dl->nr : dl->parts * dl->nr; } - allverts = MEM_mallocN((*totvert) * sizeof(float) * 3, "displist_get_allverts allverts"); + allverts = MEM_mallocN((*r_vert_len) * sizeof(float) * 3, "displist_vert_coords_alloc allverts"); fp = (float *)allverts; for (dl = dispbase->first; dl; dl = dl->next) { int offs = 3 * ((dl->type == DL_INDEX3) ? dl->nr : dl->parts * dl->nr); @@ -955,7 +954,7 @@ static float (*displist_get_allverts(ListBase *dispbase, int *totvert))[3] return allverts; } -static void displist_apply_allverts(ListBase *dispbase, float (*allverts)[3]) +static void displist_vert_coords_apply(ListBase *dispbase, float (*allverts)[3]) { DispList *dl; const float *fp; @@ -1027,7 +1026,7 @@ static void curve_calc_modifiers_post(Depsgraph *depsgraph, * we need to create a Mesh for each curve that uses modifiers. */ if (modified == NULL /* && need_normal */) { if (vertCos != NULL) { - displist_apply_allverts(dispbase, vertCos); + displist_vert_coords_apply(dispbase, vertCos); } if (ELEM(ob->type, OB_CURVE, OB_FONT) && (cu->flag & CU_DEFORM_FILL)) { @@ -1041,7 +1040,7 @@ static void curve_calc_modifiers_post(Depsgraph *depsgraph, (mti->type == eModifierTypeType_DeformOrConstruct && !modified)) { if (modified) { if (!vertCos) { - vertCos = BKE_mesh_vertexCos_get(modified, &totvert); + vertCos = BKE_mesh_vert_coords_alloc(modified, &totvert); } if (need_normal) { BKE_mesh_ensure_normals(modified); @@ -1050,7 +1049,7 @@ static void curve_calc_modifiers_post(Depsgraph *depsgraph, } else { if (!vertCos) { - vertCos = displist_get_allverts(dispbase, &totvert); + vertCos = displist_vert_coords_alloc(dispbase, &totvert); } mti->deformVerts(md, &mectx_deform, NULL, vertCos, totvert); } @@ -1071,12 +1070,12 @@ static void curve_calc_modifiers_post(Depsgraph *depsgraph, BKE_id_free(NULL, modified); modified = temp_mesh; - BKE_mesh_apply_vert_coords(modified, vertCos); + BKE_mesh_vert_coords_apply(modified, vertCos); } } else { if (vertCos) { - displist_apply_allverts(dispbase, vertCos); + displist_vert_coords_apply(dispbase, vertCos); } if (ELEM(ob->type, OB_CURVE, OB_FONT) && (cu->flag & CU_DEFORM_FILL)) { @@ -1115,13 +1114,13 @@ static void curve_calc_modifiers_post(Depsgraph *depsgraph, BKE_id_free(NULL, modified); modified = temp_mesh; - BKE_mesh_apply_vert_coords(modified, vertCos); + BKE_mesh_vert_coords_apply(modified, vertCos); BKE_mesh_calc_normals_mapping_simple(modified); MEM_freeN(vertCos); } else { - displist_apply_allverts(dispbase, vertCos); + displist_vert_coords_apply(dispbase, vertCos); MEM_freeN(vertCos); vertCos = NULL; } diff --git a/source/blender/blenkernel/intern/editderivedmesh.c b/source/blender/blenkernel/intern/editderivedmesh.c index 06f297b23e0..2df3d2f0fe9 100644 --- a/source/blender/blenkernel/intern/editderivedmesh.c +++ b/source/blender/blenkernel/intern/editderivedmesh.c @@ -517,8 +517,8 @@ static void cage_mapped_verts_callback(void *userData, } } -float (*BKE_editmesh_vertexCos_get( - struct Depsgraph *depsgraph, BMEditMesh *em, Scene *scene, int *r_numVerts))[3] +float (*BKE_editmesh_vert_coords_alloc( + struct Depsgraph *depsgraph, BMEditMesh *em, Scene *scene, int *r_vert_len))[3] { Mesh *cage; BLI_bitmap *visit_bitmap; @@ -540,8 +540,8 @@ float (*BKE_editmesh_vertexCos_get( MEM_freeN(visit_bitmap); - if (r_numVerts) { - *r_numVerts = em->bm->totvert; + if (r_vert_len) { + *r_vert_len = em->bm->totvert; } return cos_cage; diff --git a/source/blender/blenkernel/intern/editmesh.c b/source/blender/blenkernel/intern/editmesh.c index 1c3f6a56629..4f4aeab721b 100644 --- a/source/blender/blenkernel/intern/editmesh.c +++ b/source/blender/blenkernel/intern/editmesh.c @@ -209,7 +209,7 @@ void BKE_editmesh_color_ensure(BMEditMesh *em, const char htype) } } -float (*BKE_editmesh_vertexCos_get_orco(BMEditMesh *em, int *r_numVerts))[3] +float (*BKE_editmesh_vert_coords_alloc_orco(BMEditMesh *em, int *r_vert_len))[3] { BMIter iter; BMVert *eve; @@ -222,7 +222,7 @@ float (*BKE_editmesh_vertexCos_get_orco(BMEditMesh *em, int *r_numVerts))[3] copy_v3_v3(orco[i], eve->co); } - *r_numVerts = em->bm->totvert; + *r_vert_len = em->bm->totvert; return orco; } diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c index 3000a8abc08..64ba02db30d 100644 --- a/source/blender/blenkernel/intern/lattice.c +++ b/source/blender/blenkernel/intern/lattice.c @@ -139,7 +139,7 @@ void BKE_lattice_resize(Lattice *lt, int uNew, int vNew, int wNew, Object *ltOb) BPoint *bp; int i, u, v, w; float fu, fv, fw, uc, vc, wc, du = 0.0, dv = 0.0, dw = 0.0; - float *co, (*vertexCos)[3] = NULL; + float *co, (*vert_coords)[3] = NULL; /* vertex weight groups are just freed all for now */ if (lt->dvert) { @@ -159,7 +159,7 @@ void BKE_lattice_resize(Lattice *lt, int uNew, int vNew, int wNew, Object *ltOb) } } - vertexCos = MEM_mallocN(sizeof(*vertexCos) * uNew * vNew * wNew, "tmp_vcos"); + vert_coords = MEM_mallocN(sizeof(*vert_coords) * uNew * vNew * wNew, "tmp_vcos"); calc_lat_fudu(lt->flag, uNew, &fu, &du); calc_lat_fudu(lt->flag, vNew, &fv, &dv); @@ -187,7 +187,7 @@ void BKE_lattice_resize(Lattice *lt, int uNew, int vNew, int wNew, Object *ltOb) } } - co = vertexCos[0]; + co = vert_coords[0]; for (w = 0, wc = fw; w < wNew; w++, wc += dw) { for (v = 0, vc = fv; v < vNew; v++, vc += dv) { for (u = 0, uc = fu; u < uNew; u++, co += 3, uc += du) { @@ -212,7 +212,7 @@ void BKE_lattice_resize(Lattice *lt, int uNew, int vNew, int wNew, Object *ltOb) copy_m4_m4(mat, ltOb->obmat); unit_m4(ltOb->obmat); - lattice_deform_verts(ltOb, NULL, NULL, vertexCos, uNew * vNew * wNew, NULL, 1.0f); + lattice_deform_verts(ltOb, NULL, NULL, vert_coords, uNew * vNew * wNew, NULL, 1.0f); copy_m4_m4(ltOb->obmat, mat); lt->typeu = typeu; @@ -238,10 +238,10 @@ void BKE_lattice_resize(Lattice *lt, int uNew, int vNew, int wNew, Object *ltOb) bp = lt->def; for (i = 0; i < lt->pntsu * lt->pntsv * lt->pntsw; i++, bp++) { - copy_v3_v3(bp->vec, vertexCos[i]); + copy_v3_v3(bp->vec, vert_coords[i]); } - MEM_freeN(vertexCos); + MEM_freeN(vert_coords); } void BKE_lattice_init(Lattice *lt) @@ -747,7 +747,7 @@ static bool calc_curve_deform( void curve_deform_verts(Object *cuOb, Object *target, - float (*vertexCos)[3], + float (*vert_coords)[3], int numVerts, MDeformVert *dvert, const int defgrp_index, @@ -786,11 +786,11 @@ void curve_deform_verts(Object *cuOb, const float weight = defvert_find_weight(dvert_iter, defgrp_index); if (weight > 0.0f) { - mul_m4_v3(cd.curvespace, vertexCos[a]); - copy_v3_v3(vec, vertexCos[a]); + mul_m4_v3(cd.curvespace, vert_coords[a]); + copy_v3_v3(vec, vert_coords[a]); calc_curve_deform(cuOb, vec, defaxis, &cd, NULL); - interp_v3_v3v3(vertexCos[a], vertexCos[a], vec, weight); - mul_m4_v3(cd.objectspace, vertexCos[a]); + interp_v3_v3v3(vert_coords[a], vert_coords[a], vec, weight); + mul_m4_v3(cd.objectspace, vert_coords[a]); } } } @@ -800,8 +800,8 @@ void curve_deform_verts(Object *cuOb, for (a = 0, dvert_iter = dvert; a < numVerts; a++, dvert_iter++) { if (defvert_find_weight(dvert_iter, defgrp_index) > 0.0f) { - mul_m4_v3(cd.curvespace, vertexCos[a]); - minmax_v3v3_v3(cd.dmin, cd.dmax, vertexCos[a]); + mul_m4_v3(cd.curvespace, vert_coords[a]); + minmax_v3v3_v3(cd.dmin, cd.dmax, vert_coords[a]); } } @@ -810,10 +810,10 @@ void curve_deform_verts(Object *cuOb, if (weight > 0.0f) { /* already in 'cd.curvespace', prev for loop */ - copy_v3_v3(vec, vertexCos[a]); + copy_v3_v3(vec, vert_coords[a]); calc_curve_deform(cuOb, vec, defaxis, &cd, NULL); - interp_v3_v3v3(vertexCos[a], vertexCos[a], vec, weight); - mul_m4_v3(cd.objectspace, vertexCos[a]); + interp_v3_v3v3(vert_coords[a], vert_coords[a], vec, weight); + mul_m4_v3(cd.objectspace, vert_coords[a]); } } } @@ -821,9 +821,9 @@ void curve_deform_verts(Object *cuOb, else { if (cu->flag & CU_DEFORM_BOUNDS_OFF) { for (a = 0; a < numVerts; a++) { - mul_m4_v3(cd.curvespace, vertexCos[a]); - calc_curve_deform(cuOb, vertexCos[a], defaxis, &cd, NULL); - mul_m4_v3(cd.objectspace, vertexCos[a]); + mul_m4_v3(cd.curvespace, vert_coords[a]); + calc_curve_deform(cuOb, vert_coords[a], defaxis, &cd, NULL); + mul_m4_v3(cd.objectspace, vert_coords[a]); } } else { @@ -831,14 +831,14 @@ void curve_deform_verts(Object *cuOb, INIT_MINMAX(cd.dmin, cd.dmax); for (a = 0; a < numVerts; a++) { - mul_m4_v3(cd.curvespace, vertexCos[a]); - minmax_v3v3_v3(cd.dmin, cd.dmax, vertexCos[a]); + mul_m4_v3(cd.curvespace, vert_coords[a]); + minmax_v3v3_v3(cd.dmin, cd.dmax, vert_coords[a]); } for (a = 0; a < numVerts; a++) { /* already in 'cd.curvespace', prev for loop */ - calc_curve_deform(cuOb, vertexCos[a], defaxis, &cd, NULL); - mul_m4_v3(cd.objectspace, vertexCos[a]); + calc_curve_deform(cuOb, vert_coords[a], defaxis, &cd, NULL); + mul_m4_v3(cd.objectspace, vert_coords[a]); } } } @@ -881,7 +881,7 @@ void curve_deform_vector( typedef struct LatticeDeformUserdata { LatticeDeformData *lattice_deform_data; - float (*vertexCos)[3]; + float (*vert_coords)[3]; MDeformVert *dvert; int defgrp_index; float fac; @@ -896,18 +896,18 @@ static void lattice_deform_vert_task(void *__restrict userdata, if (data->dvert != NULL) { const float weight = defvert_find_weight(data->dvert + index, data->defgrp_index); if (weight > 0.0f) { - calc_latt_deform(data->lattice_deform_data, data->vertexCos[index], weight * data->fac); + calc_latt_deform(data->lattice_deform_data, data->vert_coords[index], weight * data->fac); } } else { - calc_latt_deform(data->lattice_deform_data, data->vertexCos[index], data->fac); + calc_latt_deform(data->lattice_deform_data, data->vert_coords[index], data->fac); } } void lattice_deform_verts(Object *laOb, Object *target, Mesh *mesh, - float (*vertexCos)[3], + float (*vert_coords)[3], int numVerts, const char *vgroup, float fac) @@ -942,11 +942,13 @@ void lattice_deform_verts(Object *laOb, } } - LatticeDeformUserdata data = {.lattice_deform_data = lattice_deform_data, - .vertexCos = vertexCos, - .dvert = dvert, - .defgrp_index = defgrp_index, - .fac = fac}; + LatticeDeformUserdata data = { + .lattice_deform_data = lattice_deform_data, + .vert_coords = vert_coords, + .dvert = dvert, + .defgrp_index = defgrp_index, + .fac = fac, + }; TaskParallelSettings settings; BLI_parallel_range_settings_defaults(&settings); @@ -1055,31 +1057,30 @@ void outside_lattice(Lattice *lt) } } -float (*BKE_lattice_vertexcos_get(const Lattice *lt, int *r_numVerts))[3] +float (*BKE_lattice_vert_coords_alloc(const Lattice *lt, int *r_vert_len))[3] { - int i, numVerts; - float(*vertexCos)[3]; + int vert_len; + float(*vert_coords)[3]; if (lt->editlatt) { lt = lt->editlatt->latt; } - numVerts = *r_numVerts = lt->pntsu * lt->pntsv * lt->pntsw; + vert_len = *r_vert_len = lt->pntsu * lt->pntsv * lt->pntsw; - vertexCos = MEM_mallocN(sizeof(*vertexCos) * numVerts, "lt_vcos"); + vert_coords = MEM_mallocN(sizeof(*vert_coords) * vert_len, __func__); - for (i = 0; i < numVerts; i++) { - copy_v3_v3(vertexCos[i], lt->def[i].vec); + for (int i = 0; i < vert_len; i++) { + copy_v3_v3(vert_coords[i], lt->def[i].vec); } - return vertexCos; + return vert_coords; } -void BKE_lattice_vertexcos_apply(Lattice *lt, const float (*vertexCos)[3]) +void BKE_lattice_vert_coords_apply(Lattice *lt, const float (*vert_coords)[3]) { - int i, numVerts = lt->pntsu * lt->pntsv * lt->pntsw; - - for (i = 0; i < numVerts; i++) { - copy_v3_v3(lt->def[i].vec, vertexCos[i]); + const int vert_len = lt->pntsu * lt->pntsv * lt->pntsw; + for (int i = 0; i < vert_len; i++) { + copy_v3_v3(lt->def[i].vec, vert_coords[i]); } } @@ -1091,7 +1092,7 @@ void BKE_lattice_modifiers_calc(struct Depsgraph *depsgraph, Scene *scene, Objec Object *ob_orig = DEG_get_original_object(ob); VirtualModifierData virtualModifierData; ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData); - float(*vertexCos)[3] = NULL; + float(*vert_coords)[3] = NULL; int numVerts, editmode = (lt->editlatt != NULL); const ModifierEvalContext mectx = {depsgraph, ob, 0}; @@ -1121,29 +1122,29 @@ void BKE_lattice_modifiers_calc(struct Depsgraph *depsgraph, Scene *scene, Objec continue; } - if (!vertexCos) { - vertexCos = BKE_lattice_vertexcos_get(ob_orig->data, &numVerts); + if (!vert_coords) { + vert_coords = BKE_lattice_vert_coords_alloc(ob_orig->data, &numVerts); } - mti->deformVerts(md, &mectx, NULL, vertexCos, numVerts); + mti->deformVerts(md, &mectx, NULL, vert_coords, numVerts); } if (ob->id.tag & LIB_TAG_COPIED_ON_WRITE) { - if (vertexCos) { - BKE_lattice_vertexcos_apply(ob->data, vertexCos); - MEM_freeN(vertexCos); + if (vert_coords) { + BKE_lattice_vert_coords_apply(ob->data, vert_coords); + MEM_freeN(vert_coords); } } else { /* Displist won't do anything; this is just for posterity's sake until we remove it. */ - if (!vertexCos) { - vertexCos = BKE_lattice_vertexcos_get(ob_orig->data, &numVerts); + if (!vert_coords) { + vert_coords = BKE_lattice_vert_coords_alloc(ob_orig->data, &numVerts); } DispList *dl = MEM_callocN(sizeof(*dl), "lt_dl"); dl->type = DL_VERTS; dl->parts = 1; dl->nr = numVerts; - dl->verts = (float *)vertexCos; + dl->verts = (float *)vert_coords; BLI_addtail(&ob->runtime.curve_cache->disp, dl); } diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index 0811b3cef3b..9c5ae9b8ca6 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -801,7 +801,7 @@ Mesh *BKE_mesh_from_editmesh_with_coords_thin_wrap(BMEditMesh *em, me->runtime.is_original = true; if (vertexCos) { /* We will own this array in the future. */ - BKE_mesh_apply_vert_coords(me, vertexCos); + BKE_mesh_vert_coords_apply(me, vertexCos); MEM_freeN(vertexCos); me->runtime.is_original = false; } @@ -1302,25 +1302,6 @@ void BKE_mesh_smooth_flag_set(Object *meshOb, int enableSmooth) } /** - * Return a newly MEM_malloc'd array of all the mesh vertex locations - * \note \a r_verts_len may be NULL - */ -float (*BKE_mesh_vertexCos_get(const Mesh *me, int *r_verts_len))[3] -{ - int i, verts_len = me->totvert; - float(*cos)[3] = MEM_malloc_arrayN(verts_len, sizeof(*cos), "vertexcos1"); - - if (r_verts_len) { - *r_verts_len = verts_len; - } - for (i = 0; i < verts_len; i++) { - copy_v3_v3(cos[i], me->mvert[i].co); - } - - return cos; -} - -/** * Find the index of the loop in 'poly' which references vertex, * returns -1 if not found */ @@ -1665,24 +1646,42 @@ void BKE_mesh_count_selected_items(const Mesh *mesh, int r_count[3]) /* We could support faces in paint modes. */ } -void BKE_mesh_apply_vert_coords(Mesh *mesh, const float (*vertCoords)[3]) +void BKE_mesh_vert_coords_get(const Mesh *mesh, float (*vert_coords)[3]) +{ + const MVert *mv = mesh->mvert; + for (int i = 0; i < mesh->totvert; i++, mv++) { + copy_v3_v3(vert_coords[i], mv->co); + } +} + +float (*BKE_mesh_vert_coords_alloc(const Mesh *mesh, int *r_vert_len))[3] +{ + float(*vert_coords)[3] = MEM_mallocN(sizeof(float[3]) * mesh->totvert, __func__); + BKE_mesh_vert_coords_get(mesh, vert_coords); + if (r_vert_len) { + *r_vert_len = mesh->totvert; + } + return vert_coords; +} + +void BKE_mesh_vert_coords_apply(Mesh *mesh, const float (*vert_coords)[3]) { /* This will just return the pointer if it wasn't a referenced layer. */ MVert *mv = CustomData_duplicate_referenced_layer(&mesh->vdata, CD_MVERT, mesh->totvert); mesh->mvert = mv; for (int i = 0; i < mesh->totvert; i++, mv++) { - copy_v3_v3(mv->co, vertCoords[i]); + copy_v3_v3(mv->co, vert_coords[i]); } mesh->runtime.cd_dirty_vert |= CD_MASK_NORMAL; } -void BKE_mesh_apply_vert_normals(Mesh *mesh, const short (*vertNormals)[3]) +void BKE_mesh_vert_normals_apply(Mesh *mesh, const short (*vert_normals)[3]) { /* This will just return the pointer if it wasn't a referenced layer. */ MVert *mv = CustomData_duplicate_referenced_layer(&mesh->vdata, CD_MVERT, mesh->totvert); mesh->mvert = mv; for (int i = 0; i < mesh->totvert; i++, mv++) { - copy_v3_v3_short(mv->no, vertNormals[i]); + copy_v3_v3_short(mv->no, vert_normals[i]); } mesh->runtime.cd_dirty_vert &= ~CD_MASK_NORMAL; } diff --git a/source/blender/blenkernel/intern/mesh_convert.c b/source/blender/blenkernel/intern/mesh_convert.c index 3a2ba078dce..aa51856167d 100644 --- a/source/blender/blenkernel/intern/mesh_convert.c +++ b/source/blender/blenkernel/intern/mesh_convert.c @@ -1341,11 +1341,11 @@ Mesh *BKE_mesh_create_derived_for_modifier(struct Depsgraph *depsgraph, if (mti->type == eModifierTypeType_OnlyDeform) { int numVerts; - float(*deformedVerts)[3] = BKE_mesh_vertexCos_get(me, &numVerts); + float(*deformedVerts)[3] = BKE_mesh_vert_coords_alloc(me, &numVerts); BKE_id_copy_ex(NULL, &me->id, (ID **)&result, LIB_ID_COPY_LOCALIZE); mti->deformVerts(md_eval, &mectx, result, deformedVerts, numVerts); - BKE_mesh_apply_vert_coords(result, deformedVerts); + BKE_mesh_vert_coords_apply(result, deformedVerts); if (build_shapekey_layers) { add_shapekey_layers(result, me); diff --git a/source/blender/blenkernel/intern/mesh_remap.c b/source/blender/blenkernel/intern/mesh_remap.c index db158ca8fb2..789502fdbd1 100644 --- a/source/blender/blenkernel/intern/mesh_remap.c +++ b/source/blender/blenkernel/intern/mesh_remap.c @@ -291,7 +291,7 @@ void BKE_mesh_remap_find_best_match_from_mesh(const MVert *verts_dst, float best_match = FLT_MAX, match; const int numverts_src = me_src->totvert; - float(*vcos_src)[3] = BKE_mesh_vertexCos_get(me_src, NULL); + float(*vcos_src)[3] = BKE_mesh_vert_coords_alloc(me_src, NULL); mesh_calc_eigen_matrix(NULL, (const float(*)[3])vcos_src, numverts_src, mat_src); mesh_calc_eigen_matrix(verts_dst, NULL, numverts_dst, mat_dst); @@ -548,7 +548,7 @@ void BKE_mesh_remap_calc_verts_from_mesh(const int mode, } else if (ELEM(mode, MREMAP_MODE_VERT_EDGE_NEAREST, MREMAP_MODE_VERT_EDGEINTERP_NEAREST)) { MEdge *edges_src = me_src->medge; - float(*vcos_src)[3] = BKE_mesh_vertexCos_get(me_src, NULL); + float(*vcos_src)[3] = BKE_mesh_vert_coords_alloc(me_src, NULL); BKE_bvhtree_from_mesh_get(&treedata, me_src, BVHTREE_FROM_EDGES, 2); nearest.index = -1; @@ -602,7 +602,7 @@ void BKE_mesh_remap_calc_verts_from_mesh(const int mode, MREMAP_MODE_VERT_POLYINTERP_VNORPROJ)) { MPoly *polys_src = me_src->mpoly; MLoop *loops_src = me_src->mloop; - float(*vcos_src)[3] = BKE_mesh_vertexCos_get(me_src, NULL); + float(*vcos_src)[3] = BKE_mesh_vert_coords_alloc(me_src, NULL); size_t tmp_buff_size = MREMAP_DEFAULT_BUFSIZE; float(*vcos)[3] = MEM_mallocN(sizeof(*vcos) * tmp_buff_size, __func__); @@ -752,7 +752,7 @@ void BKE_mesh_remap_calc_edges_from_mesh(const int mode, const int num_verts_src = me_src->totvert; const int num_edges_src = me_src->totedge; MEdge *edges_src = me_src->medge; - float(*vcos_src)[3] = BKE_mesh_vertexCos_get(me_src, NULL); + float(*vcos_src)[3] = BKE_mesh_vert_coords_alloc(me_src, NULL); MeshElemMap *vert_to_edge_src_map; int *vert_to_edge_src_map_mem; @@ -901,7 +901,7 @@ void BKE_mesh_remap_calc_edges_from_mesh(const int mode, MEdge *edges_src = me_src->medge; MPoly *polys_src = me_src->mpoly; MLoop *loops_src = me_src->mloop; - float(*vcos_src)[3] = BKE_mesh_vertexCos_get(me_src, NULL); + float(*vcos_src)[3] = BKE_mesh_vert_coords_alloc(me_src, NULL); BKE_bvhtree_from_mesh_get(&treedata, me_src, BVHTREE_FROM_LOOPTRI, 2); @@ -1350,7 +1350,7 @@ void BKE_mesh_remap_calc_loops_from_mesh(const int mode, size_t islands_res_buff_size = MREMAP_DEFAULT_BUFSIZE; if (!use_from_vert) { - vcos_src = BKE_mesh_vertexCos_get(me_src, NULL); + vcos_src = BKE_mesh_vert_coords_alloc(me_src, NULL); vcos_interp = MEM_mallocN(sizeof(*vcos_interp) * buff_size_interp, __func__); indices_interp = MEM_mallocN(sizeof(*indices_interp) * buff_size_interp, __func__); diff --git a/source/blender/blenkernel/intern/multires_reshape.c b/source/blender/blenkernel/intern/multires_reshape.c index d939267ac5a..9947b96105d 100644 --- a/source/blender/blenkernel/intern/multires_reshape.c +++ b/source/blender/blenkernel/intern/multires_reshape.c @@ -891,7 +891,7 @@ bool multiresModifier_reshapeFromObject(struct Depsgraph *depsgraph, Object *src_eval = DEG_get_evaluated_object(depsgraph, src); Mesh *src_mesh_eval = mesh_get_eval_final(depsgraph, scene_eval, src_eval, &CD_MASK_BAREMESH); int num_deformed_verts; - float(*deformed_verts)[3] = BKE_mesh_vertexCos_get(src_mesh_eval, &num_deformed_verts); + float(*deformed_verts)[3] = BKE_mesh_vert_coords_alloc(src_mesh_eval, &num_deformed_verts); bool result = multires_reshape_from_vertcos( depsgraph, dst, &reshape_mmd, deformed_verts, num_deformed_verts, false); MEM_freeN(deformed_verts); @@ -926,7 +926,7 @@ bool multiresModifier_reshapeFromDeformModifier(struct Depsgraph *depsgraph, * deformation modifiers will be applied though). */ Mesh *multires_mesh = BKE_multires_create_mesh(depsgraph, scene_eval, &highest_mmd, object); int num_deformed_verts; - float(*deformed_verts)[3] = BKE_mesh_vertexCos_get(multires_mesh, &num_deformed_verts); + float(*deformed_verts)[3] = BKE_mesh_vert_coords_alloc(multires_mesh, &num_deformed_verts); /* Apply deformation modifier on the multires, */ const ModifierEvalContext modifier_ctx = { .depsgraph = depsgraph, diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c index 4a41ffbfa8c..a46bb36c883 100644 --- a/source/blender/blenkernel/intern/paint.c +++ b/source/blender/blenkernel/intern/paint.c @@ -1222,10 +1222,10 @@ static void sculpt_update_object( BKE_sculptsession_free_deformMats(ss); ss->orig_cos = (ss->kb) ? BKE_keyblock_convert_to_vertcos(ob, ss->kb) : - BKE_mesh_vertexCos_get(me, NULL); + BKE_mesh_vert_coords_alloc(me, NULL); BKE_crazyspace_build_sculpt(depsgraph, scene, ob, &ss->deform_imats, &ss->deform_cos); - BKE_pbvh_apply_vertCos(ss->pbvh, ss->deform_cos, me->totvert); + BKE_pbvh_vert_coords_apply(ss->pbvh, ss->deform_cos, me->totvert); for (a = 0; a < me->totvert; ++a) { invert_m3(ss->deform_imats[a]); @@ -1242,14 +1242,14 @@ static void sculpt_update_object( /* if pbvh is deformed, key block is already applied to it */ if (ss->kb) { - bool pbvh_deformed = BKE_pbvh_isDeformed(ss->pbvh); + bool pbvh_deformed = BKE_pbvh_is_deformed(ss->pbvh); if (!pbvh_deformed || ss->deform_cos == NULL) { float(*vertCos)[3] = BKE_keyblock_convert_to_vertcos(ob, ss->kb); if (vertCos) { if (!pbvh_deformed) { /* apply shape keys coordinates to PBVH */ - BKE_pbvh_apply_vertCos(ss->pbvh, vertCos, me->totvert); + BKE_pbvh_vert_coords_apply(ss->pbvh, vertCos, me->totvert); } if (ss->deform_cos == NULL) { ss->deform_cos = vertCos; @@ -1477,8 +1477,8 @@ static PBVH *build_pbvh_from_regular_mesh(Object *ob, Mesh *me_eval_deform) const bool is_deformed = check_sculpt_object_deformed(ob, true); if (is_deformed && me_eval_deform != NULL) { int totvert; - float(*v_cos)[3] = BKE_mesh_vertexCos_get(me_eval_deform, &totvert); - BKE_pbvh_apply_vertCos(pbvh, v_cos, totvert); + float(*v_cos)[3] = BKE_mesh_vert_coords_alloc(me_eval_deform, &totvert); + BKE_pbvh_vert_coords_apply(pbvh, v_cos, totvert); MEM_freeN(v_cos); } diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 31484b59127..e328ae8952e 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -3490,10 +3490,10 @@ static void do_hair_dynamics(ParticleSimulationData *sim) psys->clmd->sim_parms->effector_weights = psys->part->effector_weights; BKE_id_copy_ex(NULL, &psys->hair_in_mesh->id, (ID **)&psys->hair_out_mesh, LIB_ID_COPY_LOCALIZE); - deformedVerts = BKE_mesh_vertexCos_get(psys->hair_out_mesh, NULL); + deformedVerts = BKE_mesh_vert_coords_alloc(psys->hair_out_mesh, NULL); clothModifier_do( psys->clmd, sim->depsgraph, sim->scene, sim->ob, psys->hair_in_mesh, deformedVerts); - BKE_mesh_apply_vert_coords(psys->hair_out_mesh, deformedVerts); + BKE_mesh_vert_coords_apply(psys->hair_out_mesh, deformedVerts); MEM_freeN(deformedVerts); diff --git a/source/blender/blenkernel/intern/pbvh.c b/source/blender/blenkernel/intern/pbvh.c index 81e4537964b..cea68a0c525 100644 --- a/source/blender/blenkernel/intern/pbvh.c +++ b/source/blender/blenkernel/intern/pbvh.c @@ -533,7 +533,7 @@ static void pbvh_build(PBVH *bvh, BB *cb, BBC *prim_bbc, int totprim) * Do a full rebuild with on Mesh data structure. * * \note Unlike mpoly/mloop/verts, looptri is **totally owned** by PBVH - * (which means it may rewrite it if needed, see #BKE_pbvh_apply_vertCos(). + * (which means it may rewrite it if needed, see #BKE_pbvh_vert_coords_apply(). */ void BKE_pbvh_build_mesh(PBVH *bvh, const MPoly *mpoly, @@ -2306,7 +2306,7 @@ void BKE_pbvh_node_layer_disp_free(PBVHNode *node) } } -float (*BKE_pbvh_get_vertCos(PBVH *pbvh))[3] +float (*BKE_pbvh_vert_coords_alloc(PBVH *pbvh))[3] { float(*vertCos)[3] = NULL; @@ -2324,7 +2324,7 @@ float (*BKE_pbvh_get_vertCos(PBVH *pbvh))[3] return vertCos; } -void BKE_pbvh_apply_vertCos(PBVH *pbvh, const float (*vertCos)[3], const int totvert) +void BKE_pbvh_vert_coords_apply(PBVH *pbvh, const float (*vertCos)[3], const int totvert) { if (totvert != pbvh->totvert) { BLI_assert(!"PBVH: Given deforming vcos number does not natch PBVH vertex number!"); @@ -2368,7 +2368,7 @@ void BKE_pbvh_apply_vertCos(PBVH *pbvh, const float (*vertCos)[3], const int tot } } -bool BKE_pbvh_isDeformed(PBVH *pbvh) +bool BKE_pbvh_is_deformed(PBVH *pbvh) { return pbvh->deformed; } diff --git a/source/blender/draw/intern/draw_cache_impl_displist.c b/source/blender/draw/intern/draw_cache_impl_displist.c index 90bbf996851..eef108b1f2f 100644 --- a/source/blender/draw/intern/draw_cache_impl_displist.c +++ b/source/blender/draw/intern/draw_cache_impl_displist.c @@ -66,7 +66,7 @@ static int dl_tri_len(const DispList *dl) return 0; } -/* see: displist_get_allverts */ +/* see: displist_vert_coords_alloc */ static int curve_render_surface_vert_len_get(const ListBase *lb) { int vert_len = 0; diff --git a/source/blender/editors/mesh/editmesh_knife.c b/source/blender/editors/mesh/editmesh_knife.c index ab1595997e5..61f9dc43c0f 100644 --- a/source/blender/editors/mesh/editmesh_knife.c +++ b/source/blender/editors/mesh/editmesh_knife.c @@ -2658,7 +2658,7 @@ static void knifetool_init_bmbvh(KnifeTool_OpData *kcd) Object *obedit_eval = (Object *)DEG_get_evaluated_id(kcd->vc.depsgraph, &kcd->em->ob->id); BMEditMesh *em_eval = BKE_editmesh_from_object(obedit_eval); - kcd->cagecos = (const float(*)[3])BKE_editmesh_vertexCos_get( + kcd->cagecos = (const float(*)[3])BKE_editmesh_vert_coords_alloc( kcd->vc.depsgraph, em_eval, scene_eval, NULL); kcd->bmbvh = BKE_bmbvh_new_from_editmesh( diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index 8818fd71190..8275a1eb5c4 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -714,9 +714,9 @@ static int modifier_apply_obdata( RPT_INFO, "Applied modifier only changed CV points, not tessellated/bevel vertices"); - vertexCos = BKE_curve_nurbs_vertexCos_get(&curve_eval->nurb, &numVerts); + vertexCos = BKE_curve_nurbs_vert_coords_alloc(&curve_eval->nurb, &numVerts); mti->deformVerts(md_eval, &mectx, NULL, vertexCos, numVerts); - BK_curve_nurbs_vertexCos_apply(&curve->nurb, vertexCos); + BK_curve_nurbs_vert_coords_apply(&curve->nurb, vertexCos); MEM_freeN(vertexCos); diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index bee39581ac2..08febfcc470 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -4349,7 +4349,7 @@ static void sculpt_update_keyblock(Object *ob) vertCos = ss->orig_cos; } else { - vertCos = BKE_pbvh_get_vertCos(ss->pbvh); + vertCos = BKE_pbvh_vert_coords_alloc(ss->pbvh); } if (vertCos) { diff --git a/source/blender/editors/sculpt_paint/sculpt_undo.c b/source/blender/editors/sculpt_paint/sculpt_undo.c index 3a3487227a3..cb8afd5d7fa 100644 --- a/source/blender/editors/sculpt_paint/sculpt_undo.c +++ b/source/blender/editors/sculpt_paint/sculpt_undo.c @@ -189,7 +189,7 @@ static bool sculpt_undo_restore_coords(bContext *C, Depsgraph *depsgraph, Sculpt /* pbvh uses it's own mvert array, so coords should be */ /* propagated to pbvh here */ - BKE_pbvh_apply_vertCos(ss->pbvh, vertCos, ss->kb->totelem); + BKE_pbvh_vert_coords_apply(ss->pbvh, vertCos, ss->kb->totelem); MEM_freeN(vertCos); } diff --git a/source/blender/modifiers/intern/MOD_cloth.c b/source/blender/modifiers/intern/MOD_cloth.c index 1a6d172d2f9..cc91e345c8f 100644 --- a/source/blender/modifiers/intern/MOD_cloth.c +++ b/source/blender/modifiers/intern/MOD_cloth.c @@ -114,7 +114,7 @@ static void deformVerts(ModifierData *md, } } - BKE_mesh_apply_vert_coords(mesh_src, vertexCos); + BKE_mesh_vert_coords_apply(mesh_src, vertexCos); clothModifier_do(clmd, ctx->depsgraph, scene, ctx->object, mesh_src, vertexCos); diff --git a/source/blender/modifiers/intern/MOD_collision.c b/source/blender/modifiers/intern/MOD_collision.c index 1bbc25643a1..3d43c6de88e 100644 --- a/source/blender/modifiers/intern/MOD_collision.c +++ b/source/blender/modifiers/intern/MOD_collision.c @@ -120,7 +120,7 @@ static void deformVerts(ModifierData *md, float current_time = 0; unsigned int mvert_num = 0; - BKE_mesh_apply_vert_coords(mesh_src, vertexCos); + BKE_mesh_vert_coords_apply(mesh_src, vertexCos); BKE_mesh_calc_normals(mesh_src); current_time = DEG_get_ctime(ctx->depsgraph); diff --git a/source/blender/modifiers/intern/MOD_correctivesmooth.c b/source/blender/modifiers/intern/MOD_correctivesmooth.c index be1580f0d70..a234f468e45 100644 --- a/source/blender/modifiers/intern/MOD_correctivesmooth.c +++ b/source/blender/modifiers/intern/MOD_correctivesmooth.c @@ -635,12 +635,12 @@ static void correctivesmooth_modifier_do(ModifierData *md, if (csmd->rest_source == MOD_CORRECTIVESMOOTH_RESTSOURCE_BIND) { /* caller needs to do sanity check here */ csmd->bind_coords_num = numVerts; - rest_coords = (const float(*)[3])csmd->bind_coords; + rest_coords = csmd->bind_coords; } else { int me_numVerts; - rest_coords = (const float(*)[3])((em) ? BKE_editmesh_vertexCos_get_orco(em, &me_numVerts) : - BKE_mesh_vertexCos_get(ob->data, &me_numVerts)); + rest_coords = em ? BKE_editmesh_vert_coords_alloc_orco(em, &me_numVerts) : + BKE_mesh_vert_coords_alloc(ob->data, &me_numVerts); BLI_assert((unsigned int)me_numVerts == numVerts); is_rest_coords_alloc = true; diff --git a/source/blender/modifiers/intern/MOD_fluidsim_util.c b/source/blender/modifiers/intern/MOD_fluidsim_util.c index 3083d89d555..587aa108fd1 100644 --- a/source/blender/modifiers/intern/MOD_fluidsim_util.c +++ b/source/blender/modifiers/intern/MOD_fluidsim_util.c @@ -290,7 +290,7 @@ static Mesh *fluidsim_read_obj(const char *filename, const MPoly *mp_example) gzclose(gzf); BKE_mesh_calc_edges(mesh, false, false); - BKE_mesh_apply_vert_normals(mesh, (short(*)[3])normals); + BKE_mesh_vert_normals_apply(mesh, (short(*)[3])normals); MEM_freeN(normals); // CDDM_calc_normals(result); diff --git a/source/blender/modifiers/intern/MOD_meshdeform.c b/source/blender/modifiers/intern/MOD_meshdeform.c index da261b4f835..a582e179983 100644 --- a/source/blender/modifiers/intern/MOD_meshdeform.c +++ b/source/blender/modifiers/intern/MOD_meshdeform.c @@ -401,7 +401,7 @@ static void meshdeformModifier_do(ModifierData *md, } /* setup deformation data */ - cagecos = BKE_mesh_vertexCos_get(cagemesh, NULL); + cagecos = BKE_mesh_vert_coords_alloc(cagemesh, NULL); bindcagecos = (float(*)[3])mmd->bindcagecos; /* We allocate 1 element extra to make it possible to diff --git a/source/blender/modifiers/intern/MOD_particlesystem.c b/source/blender/modifiers/intern/MOD_particlesystem.c index 021e61bd46d..a7c7c207cd6 100644 --- a/source/blender/modifiers/intern/MOD_particlesystem.c +++ b/source/blender/modifiers/intern/MOD_particlesystem.c @@ -152,7 +152,7 @@ static void deformVerts(ModifierData *md, /* make new mesh */ psmd->mesh_final = BKE_mesh_copy_for_eval(mesh_src, false); - BKE_mesh_apply_vert_coords(psmd->mesh_final, vertexCos); + BKE_mesh_vert_coords_apply(psmd->mesh_final, vertexCos); BKE_mesh_calc_normals(psmd->mesh_final); BKE_mesh_tessface_ensure(psmd->mesh_final); diff --git a/source/blender/modifiers/intern/MOD_surface.c b/source/blender/modifiers/intern/MOD_surface.c index dcc6371e024..840914aa313 100644 --- a/source/blender/modifiers/intern/MOD_surface.c +++ b/source/blender/modifiers/intern/MOD_surface.c @@ -130,7 +130,7 @@ static void deformVerts(ModifierData *md, float *vec; MVert *x, *v; - BKE_mesh_apply_vert_coords(surmd->mesh, vertexCos); + BKE_mesh_vert_coords_apply(surmd->mesh, vertexCos); BKE_mesh_calc_normals(surmd->mesh); numverts = surmd->mesh->totvert; diff --git a/source/blender/modifiers/intern/MOD_util.c b/source/blender/modifiers/intern/MOD_util.c index 998a2b1cd65..e7acbd3e32e 100644 --- a/source/blender/modifiers/intern/MOD_util.c +++ b/source/blender/modifiers/intern/MOD_util.c @@ -198,7 +198,7 @@ Mesh *MOD_deform_mesh_eval_get(Object *ob, /* TODO(sybren): after modifier conversion of DM to Mesh is done, check whether * we really need vertexCos here. */ if (vertexCos) { - BKE_mesh_apply_vert_coords(mesh, vertexCos); + BKE_mesh_vert_coords_apply(mesh, vertexCos); mesh->runtime.cd_dirty_vert |= CD_MASK_NORMAL; } diff --git a/source/blender/modifiers/intern/MOD_uvproject.c b/source/blender/modifiers/intern/MOD_uvproject.c index f9eb92cd132..5f1eae0297a 100644 --- a/source/blender/modifiers/intern/MOD_uvproject.c +++ b/source/blender/modifiers/intern/MOD_uvproject.c @@ -204,7 +204,7 @@ static Mesh *uvprojectModifier_do(UVProjectModifierData *umd, mloop_uv = CustomData_duplicate_referenced_layer_named( &mesh->ldata, CD_MLOOPUV, uvname, numLoops); - coords = BKE_mesh_vertexCos_get(mesh, &numVerts); + coords = BKE_mesh_vert_coords_alloc(mesh, &numVerts); /* convert coords to world space */ for (i = 0, co = coords; i < numVerts; ++i, ++co) { diff --git a/source/blender/modifiers/intern/MOD_weightvgproximity.c b/source/blender/modifiers/intern/MOD_weightvgproximity.c index 86d1b310d0c..95b15b4a924 100644 --- a/source/blender/modifiers/intern/MOD_weightvgproximity.c +++ b/source/blender/modifiers/intern/MOD_weightvgproximity.c @@ -492,7 +492,7 @@ static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mes /* Get our vertex coordinates. */ if (numIdx != numVerts) { - float(*tv_cos)[3] = BKE_mesh_vertexCos_get(mesh, NULL); + float(*tv_cos)[3] = BKE_mesh_vert_coords_alloc(mesh, NULL); v_cos = MEM_malloc_arrayN(numIdx, sizeof(float[3]), "WeightVGProximity Modifier, v_cos"); for (i = 0; i < numIdx; i++) { copy_v3_v3(v_cos[i], tv_cos[indices[i]]); @@ -500,7 +500,7 @@ static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mes MEM_freeN(tv_cos); } else { - v_cos = BKE_mesh_vertexCos_get(mesh, NULL); + v_cos = BKE_mesh_vert_coords_alloc(mesh, NULL); } /* Compute wanted distances. */ |