[Bf-blender-cvs] [4faf9bfbe9d] blender2.8: Mesh versions of DerivedMesh access API calls

Campbell Barton noreply at git.blender.org
Fri Jun 1 14:02:07 CEST 2018


Commit: 4faf9bfbe9d1502d32a62738ebb488710a43c27a
Author: Campbell Barton
Date:   Fri Jun 1 12:34:50 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB4faf9bfbe9d1502d32a62738ebb488710a43c27a

Mesh versions of DerivedMesh access API calls

Add mesh_get_eval_final & mesh_get_eval_deform

Note: these will eventually need to be renamed & moved into BKE.

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

M	source/blender/blenkernel/BKE_DerivedMesh.h
M	source/blender/blenkernel/intern/DerivedMesh.c

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

diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index 71c1d64eb27..205899a8e18 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -534,9 +534,15 @@ void mesh_get_mapped_verts_coords(DerivedMesh *dm, float (*r_cos)[3], const int
 DerivedMesh *mesh_get_derived_final(
         struct Depsgraph *depsgraph, struct Scene *scene,
         struct Object *ob, CustomDataMask dataMask);
+struct Mesh *mesh_get_eval_final(
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, CustomDataMask dataMask);
+
 DerivedMesh *mesh_get_derived_deform(
         struct Depsgraph *depsgraph, struct Scene *scene,
         struct Object *ob, CustomDataMask dataMask);
+struct Mesh *mesh_get_eval_deform(
+        struct Depsgraph *depsgraph, struct Scene *scene,
+        struct Object *ob, CustomDataMask dataMask);
 
 DerivedMesh *mesh_create_derived_for_modifier(
         struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob,
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index a3dee4bb795..59739c857da 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -3108,6 +3108,7 @@ void makeDerivedMesh(
 
 /***/
 
+/* Deprecated DM, use: 'mesh_get_eval_final'. */
 DerivedMesh *mesh_get_derived_final(
         struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask)
 {
@@ -3127,7 +3128,27 @@ DerivedMesh *mesh_get_derived_final(
 	if (ob->derivedFinal) { BLI_assert(!(ob->derivedFinal->dirty & DM_DIRTY_NORMALS)); }
 	return ob->derivedFinal;
 }
+Mesh *mesh_get_eval_final(
+        struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask)
+{
+	/* if there's no evaluated mesh or the last data mask used doesn't include
+	 * the data we need, rebuild the derived mesh
+	 */
+	bool need_mapping;
+	dataMask |= object_get_datamask(depsgraph, ob, &need_mapping);
+
+	if (!ob->derivedFinal ||
+	    ((dataMask & ob->lastDataMask) != dataMask) ||
+	    (need_mapping != ob->lastNeedMapping))
+	{
+		mesh_build_data(depsgraph, scene, ob, dataMask, false, need_mapping);
+	}
+
+	if (ob->runtime.mesh_eval) { BLI_assert(!(ob->runtime.mesh_eval->runtime.cd_dirty_vert & CD_MASK_NORMAL)); }
+	return ob->runtime.mesh_eval;
+}
 
+/* Deprecated DM, use: 'mesh_get_eval_deform' instead. */
 DerivedMesh *mesh_get_derived_deform(struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask)
 {
 	/* if there's no derived mesh or the last data mask used doesn't include
@@ -3146,6 +3167,25 @@ DerivedMesh *mesh_get_derived_deform(struct Depsgraph *depsgraph, Scene *scene,
 
 	return ob->derivedDeform;
 }
+Mesh *mesh_get_eval_deform(struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask)
+{
+	/* if there's no derived mesh or the last data mask used doesn't include
+	 * the data we need, rebuild the derived mesh
+	 */
+	bool need_mapping;
+
+	dataMask |= object_get_datamask(depsgraph, ob, &need_mapping);
+
+	if (!ob->runtime.mesh_deform_eval ||
+	    ((dataMask & ob->lastDataMask) != dataMask) ||
+	    (need_mapping != ob->lastNeedMapping))
+	{
+		mesh_build_data(depsgraph, scene, ob, dataMask, false, need_mapping);
+	}
+
+	return ob->runtime.mesh_deform_eval;
+}
+
 
 DerivedMesh *mesh_create_derived_render(struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask)
 {



More information about the Bf-blender-cvs mailing list