[Bf-blender-cvs] [d8a6c1d316f] blender2.8: Cleanup/simplification for BKE_modifier_get_evaluated_mesh_from_object

Bastien Montagne noreply at git.blender.org
Fri May 25 12:31:25 CEST 2018


Commit: d8a6c1d316f3abdb778c37b60951e54f3c407f29
Author: Bastien Montagne
Date:   Fri May 25 12:27:54 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBd8a6c1d316f3abdb778c37b60951e54f3c407f29

Cleanup/simplification for BKE_modifier_get_evaluated_mesh_from_object

* Added BKE_object_get_evaluated_mesh, which can also be used outside of
Modifier context.
* BKE_modifier_get_evaluated_mesh_from_object is now a dummy wrapper
around BKE_object_get_evaluated_mesh, we do not need anything special
anymore for RENDER quality option, since this is supposed to be handled
at depsgraph level... Maybe we can get rid of it at some point, but kind
of like the idea of keeping it for now, sounds more consitent.

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

M	source/blender/blenkernel/BKE_object.h
M	source/blender/blenkernel/intern/modifier.c
M	source/blender/blenkernel/intern/object.c

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

diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h
index 7dbdac1b835..db6c7aa9c4f 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -45,6 +45,7 @@ struct View3D;
 struct SoftBody;
 struct MovieClip;
 struct Main;
+struct Mesh;
 struct RigidBodyWorld;
 struct HookModifierData;
 struct ModifierData;
@@ -269,6 +270,8 @@ void BKE_object_sculpt_modifiers_changed(struct Object *ob);
 
 int BKE_object_obdata_texspace_get(struct Object *ob, short **r_texflag, float **r_loc, float **r_size, float **r_rot);
 
+struct Mesh *BKE_object_get_evaluated_mesh(const struct Depsgraph *depsgraph, struct Object *ob);
+
 int BKE_object_insert_ptcache(struct Object *ob);
 void BKE_object_delete_ptcache(struct Object *ob, int index);
 struct KeyBlock *BKE_object_shapekey_insert(struct Object *ob, const char *name, const bool from_mix);
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index 6201010d2aa..111968ba018 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -66,6 +66,7 @@
 #include "BKE_library_query.h"
 #include "BKE_mesh.h"
 #include "BKE_multires.h"
+#include "BKE_object.h"
 #include "BKE_DerivedMesh.h"
 
 /* may move these, only for modifier_path_relbase */
@@ -1216,14 +1217,8 @@ struct DerivedMesh *modifier_applyModifierEM_DM_deprecated(struct ModifierData *
  */
 Mesh *BKE_modifier_get_evaluated_mesh_from_object(const ModifierEvalContext *ctx, Object *ob)
 {
-	const ModifierApplyFlag flag = ctx->flag;
-	Object *ob_eval = DEG_get_evaluated_object(ctx->depsgraph, ob);
-
-	if (flag & MOD_APPLY_RENDER) {
-		/* TODO(sergey): Use proper derived render in the future. */
-		return ob_eval->mesh_evaluated;
-	}
-	else {
-		return ob_eval->mesh_evaluated;
-	}
+	/* Note: we do not care about RENDER setting here, since we get data from despgraph
+	 * (and render depsgraph shall be different from realtime one)
+	 */
+	return BKE_object_get_evaluated_mesh(ctx->depsgraph, ob);
 }
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 17da10203f0..e36e5277f0c 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -118,6 +118,7 @@
 #include "BKE_image.h"
 
 #include "DEG_depsgraph.h"
+#include "DEG_depsgraph_query.h"
 
 #include "DRW_engine.h"
 
@@ -2802,6 +2803,15 @@ int BKE_object_obdata_texspace_get(Object *ob, short **r_texflag, float **r_loc,
 	return 1;
 }
 
+/** Get evaluated mesh for given (main, original) object and depsgraph. */
+Mesh *BKE_object_get_evaluated_mesh(const Depsgraph *depsgraph, Object *ob)
+{
+	Object *ob_eval = DEG_get_evaluated_object(depsgraph, ob);
+
+	return ob_eval->mesh_evaluated;
+}
+
+
 static int pc_cmp(const void *a, const void *b)
 {
 	const LinkData *ad = a, *bd = b;



More information about the Bf-blender-cvs mailing list