diff options
Diffstat (limited to 'source/blender/blenkernel/BKE_mesh.h')
-rw-r--r-- | source/blender/blenkernel/BKE_mesh.h | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h index a84f6058d67..2373bb289cd 100644 --- a/source/blender/blenkernel/BKE_mesh.h +++ b/source/blender/blenkernel/BKE_mesh.h @@ -70,6 +70,13 @@ struct Mesh *BKE_mesh_from_bmesh_for_eval_nomain(struct BMesh *bm, const struct Mesh *me_settings); /** + * Add original index (#CD_ORIGINDEX) layers if they don't already exist. This is meant to be used + * when creating an evaluated mesh from an original edit mode mesh, to allow mapping from the + * evaluated vertices to the originals. + */ +void BKE_mesh_ensure_default_orig_index_customdata(struct Mesh *mesh); + +/** * Find the index of the loop in 'poly' which references vertex, * returns -1 if not found */ @@ -332,8 +339,7 @@ int BKE_mesh_tessface_calc_ex(struct CustomData *fdata, struct MVert *mvert, int totface, int totloop, - int totpoly, - bool do_face_nor_copy); + int totpoly); void BKE_mesh_tessface_calc(struct Mesh *mesh); /** @@ -399,6 +405,9 @@ void BKE_mesh_assert_normals_dirty_or_calculated(const struct Mesh *mesh); * \note In order to clear the dirty flag, this function should be followed by a call to * #BKE_mesh_vertex_normals_clear_dirty. This is separate so that normals are still tagged dirty * while they are being assigned. + * + * \warning The memory returned by this function is not initialized if it was not previously + * allocated. */ float (*BKE_mesh_vertex_normals_for_write(struct Mesh *mesh))[3]; @@ -409,10 +418,24 @@ float (*BKE_mesh_vertex_normals_for_write(struct Mesh *mesh))[3]; * \note In order to clear the dirty flag, this function should be followed by a call to * #BKE_mesh_poly_normals_clear_dirty. This is separate so that normals are still tagged dirty * while they are being assigned. + * + * \warning The memory returned by this function is not initialized if it was not previously + * allocated. */ float (*BKE_mesh_poly_normals_for_write(struct Mesh *mesh))[3]; /** + * Free any cached vertex or poly normals. Face corner (loop) normals are also derived data, + * but are not handled with the same method yet, so they are not included. It's important that this + * is called after the mesh changes size, since otherwise cached normal arrays might not be large + * enough (though it may be called indirectly by other functions). + * + * \note Normally it's preferred to call #BKE_mesh_normals_tag_dirty instead, + * but this can be used in specific situations to reset a mesh or reduce memory usage. + */ +void BKE_mesh_clear_derived_normals(struct Mesh *mesh); + +/** * Mark the mesh's vertex normals non-dirty, for when they are calculated or assigned manually. */ void BKE_mesh_vertex_normals_clear_dirty(struct Mesh *mesh); @@ -919,7 +942,7 @@ void BKE_mesh_calc_relative_deform(const struct MPoly *mpoly, const float (*vert_cos_org)[3], float (*vert_cos_new)[3]); -/* *** mesh_validate.c *** */ +/* *** mesh_validate.cc *** */ /** * Validates and corrects a Mesh. |