[Bf-blender-cvs] [66b1cd45fb5] blender2.8: Added BKE_mesh_ensure_normals()

Sybren A. Stüvel noreply at git.blender.org
Tue May 8 10:47:14 CEST 2018


Commit: 66b1cd45fb50a13caea40ea25ae41f0edf16d35e
Author: Sybren A. Stüvel
Date:   Tue May 8 10:06:37 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB66b1cd45fb50a13caea40ea25ae41f0edf16d35e

Added BKE_mesh_ensure_normals()

This calls BKE_mesh_calc_normals() only if the mesh vertex normals are
marked as dirty.

===================================================================

M	source/blender/blenkernel/BKE_mesh.h
M	source/blender/blenkernel/intern/mesh_evaluate.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index 41b2b875d9a..b26aae6d585 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -202,6 +202,7 @@ void BKE_mesh_calc_normals_poly(
         int numLoops, int numPolys, float (*r_polyNors)[3],
         const bool only_face_normals);
 void BKE_mesh_calc_normals(struct Mesh *me);
+void BKE_mesh_ensure_normals(struct Mesh *me);
 void BKE_mesh_calc_normals_tessface(
         struct MVert *mverts, int numVerts,
         const struct MFace *mfaces, int numFaces,
diff --git a/source/blender/blenkernel/intern/mesh_evaluate.c b/source/blender/blenkernel/intern/mesh_evaluate.c
index 7c71eeaf069..068be0ef304 100644
--- a/source/blender/blenkernel/intern/mesh_evaluate.c
+++ b/source/blender/blenkernel/intern/mesh_evaluate.c
@@ -332,6 +332,15 @@ void BKE_mesh_calc_normals_poly(
 	MEM_freeN(lnors_weighted);
 }
 
+void BKE_mesh_ensure_normals(Mesh *mesh)
+{
+	if (mesh->runtime.cd_dirty_vert & CD_MASK_NORMAL) {
+		BKE_mesh_calc_normals(mesh);
+	}
+	BLI_assert((mesh->runtime.cd_dirty_vert & CD_MASK_NORMAL) == 0);
+}
+
+/* Note that this does not update the CD_NORMAL layer, but does update the normals in the CD_MVERT layer. */
 void BKE_mesh_calc_normals(Mesh *mesh)
 {
 #ifdef DEBUG_TIME



More information about the Bf-blender-cvs mailing list