[Bf-blender-cvs] [54ecff1fca4] blender2.8: Mesh: remove derived mesh for nurbs conversion

Campbell Barton noreply at git.blender.org
Fri Oct 12 09:05:53 CEST 2018


Commit: 54ecff1fca4319fdfd30f3db644856fee493d7b4
Author: Campbell Barton
Date:   Fri Oct 12 18:05:26 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB54ecff1fca4319fdfd30f3db644856fee493d7b4

Mesh: remove derived mesh for nurbs conversion

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

M	source/blender/blenkernel/BKE_mesh_runtime.h
M	source/blender/blenkernel/intern/DerivedMesh.c
M	source/blender/blenkernel/intern/mesh_convert.c

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

diff --git a/source/blender/blenkernel/BKE_mesh_runtime.h b/source/blender/blenkernel/BKE_mesh_runtime.h
index 9132c3dae64..050d17771c9 100644
--- a/source/blender/blenkernel/BKE_mesh_runtime.h
+++ b/source/blender/blenkernel/BKE_mesh_runtime.h
@@ -87,6 +87,10 @@ struct Mesh *mesh_get_eval_deform(
         struct Depsgraph *depsgraph, struct Scene *scene,
         struct Object *ob, CustomDataMask dataMask);
 
+struct Mesh *mesh_create_eval_final_render(
+        struct Depsgraph *depsgraph, struct Scene *scene,
+        struct Object *ob, CustomDataMask dataMask);
+
 #ifdef USE_DERIVEDMESH
 struct DerivedMesh *mesh_create_derived_index_render(
         struct Depsgraph *depsgraph, struct Scene *scene,
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index d1f58b675b2..5a99978f00c 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -2410,6 +2410,8 @@ Mesh *mesh_get_eval_deform(struct Depsgraph *depsgraph, Scene *scene, Object *ob
 }
 
 
+#ifdef USE_DERIVEDMESH
+/* Deprecated, use `mesh_create_eval_final_render` instead. */
 DerivedMesh *mesh_create_derived_render(struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask)
 {
 	DerivedMesh *final;
@@ -2420,6 +2422,17 @@ DerivedMesh *mesh_create_derived_render(struct Depsgraph *depsgraph, Scene *scen
 
 	return final;
 }
+#endif
+Mesh *mesh_create_eval_final_render(struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask)
+{
+	Mesh *final;
+
+	mesh_calc_modifiers(
+	        depsgraph, scene, ob, NULL, 1, false, dataMask, -1, false, false,
+	        NULL, &final);
+
+	return final;
+}
 
 #ifdef USE_DERIVEDMESH
 /* Deprecated, use `mesh_create_eval_final_index_render` instead. */
diff --git a/source/blender/blenkernel/intern/mesh_convert.c b/source/blender/blenkernel/intern/mesh_convert.c
index 4d7d2e4b931..b64cb8a1d0f 100644
--- a/source/blender/blenkernel/intern/mesh_convert.c
+++ b/source/blender/blenkernel/intern/mesh_convert.c
@@ -549,7 +549,7 @@ void BKE_mesh_from_nurbs_displist(
         Main *bmain, Object *ob, ListBase *dispbase, const bool use_orco_uv, const char *obdata_name, bool temporary)
 {
 	Object *ob1;
-	DerivedMesh *dm = ob->derivedFinal;
+	Mesh *me_eval = ob->runtime.mesh_eval;
 	Mesh *me;
 	Curve *cu;
 	MVert *allvert = NULL;
@@ -561,7 +561,7 @@ void BKE_mesh_from_nurbs_displist(
 
 	cu = ob->data;
 
-	if (dm == NULL) {
+	if (me_eval == NULL) {
 		if (BKE_mesh_nurbs_displist_to_mdata(
 		            ob, dispbase, &allvert, &totvert,
 		            &alledge, &totedge, &allloop,
@@ -593,7 +593,8 @@ void BKE_mesh_from_nurbs_displist(
 	}
 	else {
 		me = BKE_mesh_add(bmain, obdata_name);
-		DM_to_mesh(dm, me, ob, CD_MASK_MESH, false);
+		ob->runtime.mesh_eval = NULL;
+		BKE_mesh_nomain_to_mesh(me_eval, me, ob, CD_MASK_MESH, false);
 	}
 
 	me->totcol = cu->totcol;
@@ -976,7 +977,7 @@ Mesh *BKE_mesh_new_from_object(
 			/* if not getting the original caged mesh, get final derived mesh */
 			else {
 				/* Make a dummy mesh, saves copying */
-				DerivedMesh *dm;
+				Mesh *me_eval;
 				/* CustomDataMask mask = CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL; */
 				CustomDataMask mask = CD_MASK_MESH; /* this seems more suitable, exporter,
 				                                     * for example, needs CD_MASK_MDEFORMVERT */
@@ -984,14 +985,15 @@ Mesh *BKE_mesh_new_from_object(
 				if (calc_undeformed)
 					mask |= CD_MASK_ORCO;
 
-				/* Write the display mesh into the dummy mesh */
-				if (render)
-					dm = mesh_create_derived_render(depsgraph, sce, ob, mask);
-				else
-					dm = mesh_create_derived_view(depsgraph, sce, ob, mask);
+				if (render) {
+					me_eval = mesh_create_eval_final_render(depsgraph, sce, ob, mask);
+				}
+				else {
+					me_eval = mesh_create_eval_final_view(depsgraph, sce, ob, mask);
+				}
 
 				tmpmesh = BKE_mesh_add(bmain, ((ID *)ob->data)->name + 2);
-				DM_to_mesh(dm, tmpmesh, ob, mask, true);
+				BKE_mesh_nomain_to_mesh(me_eval, tmpmesh, ob, mask, true);
 
 				/* Copy autosmooth settings from original mesh. */
 				Mesh *me = (Mesh *)ob->data;



More information about the Bf-blender-cvs mailing list