[Bf-blender-cvs] [c43dbc2bc2a] blender2.8: Add modifier_deformVerts_ensure_normals, modifier_applyModifier_ensure_normals

Mai Lavelle noreply at git.blender.org
Wed May 16 12:08:31 CEST 2018


Commit: c43dbc2bc2a6b35095d18db7edcdd9be245c045c
Author: Mai Lavelle
Date:   Tue Apr 24 04:08:16 2018 -0400
Branches: blender2.8
https://developer.blender.org/rBc43dbc2bc2a6b35095d18db7edcdd9be245c045c

Add modifier_deformVerts_ensure_normals, modifier_applyModifier_ensure_normals

Same as `modwrap_deformVerts` and `modwrap_applyModifier` but for `Mesh`.

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

M	source/blender/blenkernel/BKE_modifier.h
M	source/blender/blenkernel/intern/modifier.c

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

diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h
index 0ca6aa14cd8..ab00b8174b5 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -498,6 +498,10 @@ void modifier_deformVerts(
         struct ModifierData *md, const struct ModifierEvalContext *ctx,
         struct Mesh *mesh, float (*vertexCos)[3], int numVerts);
 
+void modifier_deformVerts_ensure_normals(
+        struct ModifierData *md, const struct ModifierEvalContext *ctx,
+        struct Mesh *mesh, float (*vertexCos)[3], int numVerts);
+
 void modifier_deformMatrices(
         struct ModifierData *md, const struct ModifierEvalContext *ctx,
         struct Mesh *mesh, float (*vertexCos)[3], float (*defMats)[3][3], int numVerts);
@@ -516,6 +520,10 @@ struct Mesh *modifier_applyModifier(
         struct ModifierData *md, const struct ModifierEvalContext *ctx,
         struct Mesh *mesh);
 
+struct Mesh *modifier_applyModifier_ensure_normals(
+        struct ModifierData *md, const struct ModifierEvalContext *ctx,
+        struct Mesh *mesh);
+
 struct Mesh *modifier_applyModifierEM(
         struct ModifierData *md, const struct ModifierEvalContext *ctx,
         struct BMEditMesh *editData, struct Mesh *mesh);
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index cb97cee4547..b49df101fe6 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -901,6 +901,19 @@ void modifier_deformVerts(struct ModifierData *md, const ModifierEvalContext *ct
 	}
 }
 
+void modifier_deformVerts_ensure_normals(struct ModifierData *md, const ModifierEvalContext *ctx,
+	struct Mesh *mesh,
+	float (*vertexCos)[3], int numVerts)
+{
+	const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+	BLI_assert(!mesh || CustomData_has_layer(&mesh->pdata, CD_NORMAL) == false);
+
+	if (mesh && mti->dependsOnNormals && mti->dependsOnNormals(md)) {
+		BKE_mesh_calc_normals(mesh);
+	}
+	modifier_deformVerts(md, ctx, mesh, vertexCos, numVerts);
+}
+
 void modifier_deformMatrices(struct ModifierData *md, const ModifierEvalContext *ctx,
 	struct Mesh *mesh,
 	float (*vertexCos)[3], float (*defMats)[3][3], int numVerts)
@@ -993,6 +1006,18 @@ struct Mesh *modifier_applyModifier(struct ModifierData *md, const ModifierEvalC
 	}
 }
 
+struct Mesh *modifier_applyModifier_ensure_normals(struct ModifierData *md, const ModifierEvalContext *ctx,
+	struct Mesh *mesh)
+{
+	const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+	BLI_assert(CustomData_has_layer(&mesh->pdata, CD_NORMAL) == false);
+
+	if (mti->dependsOnNormals && mti->dependsOnNormals(md)) {
+		BKE_mesh_calc_normals(mesh);
+	}
+	return modifier_applyModifier(md, ctx, mesh);
+}
+
 struct Mesh *modifier_applyModifierEM(struct ModifierData *md, const ModifierEvalContext *ctx,
 	struct BMEditMesh *editData,
 	struct Mesh *mesh)



More information about the Bf-blender-cvs mailing list