[Bf-blender-cvs] [f4ce6d02cde] blender2.8: Fluidsim: ported from DerivedMesh to Mesh

Sybren A. Stüvel noreply at git.blender.org
Thu Jul 5 12:23:45 CEST 2018


Commit: f4ce6d02cde816c3c681702d97a75617b8e9a598
Author: Sybren A. Stüvel
Date:   Thu Jul 5 11:08:05 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBf4ce6d02cde816c3c681702d97a75617b8e9a598

Fluidsim: ported from DerivedMesh to Mesh

Also removed a bunch of unnecessary #include statements from fluidsim.c.

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

M	source/blender/blenkernel/BKE_DerivedMesh.h
M	source/blender/blenkernel/BKE_mesh_runtime.h
M	source/blender/blenkernel/intern/DerivedMesh.c
M	source/blender/blenkernel/intern/fluidsim.c
M	source/blender/modifiers/intern/MOD_fluidsim.c
M	source/blender/modifiers/intern/MOD_fluidsim_util.c
M	source/blender/modifiers/intern/MOD_fluidsim_util.h

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

diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index 3099875c145..e497e84b7e0 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -530,10 +530,6 @@ DerivedMesh *getEditDerivedBMesh(
         struct BMEditMesh *em, struct Object *ob, CustomDataMask data_mask,
         float (*vertexCos)[3]);
 
-DerivedMesh *mesh_create_derived_index_render(
-        struct Depsgraph *depsgraph, struct Scene *scene,
-        struct Object *ob, CustomDataMask dataMask, int index);
-
 /* same as above but wont use render settings */
 DerivedMesh *mesh_create_derived(struct Mesh *me, float (*vertCos)[3]);
 DerivedMesh *mesh_create_derived_view(
diff --git a/source/blender/blenkernel/BKE_mesh_runtime.h b/source/blender/blenkernel/BKE_mesh_runtime.h
index f894f72e648..8ff097eb61b 100644
--- a/source/blender/blenkernel/BKE_mesh_runtime.h
+++ b/source/blender/blenkernel/BKE_mesh_runtime.h
@@ -85,6 +85,15 @@ struct Mesh *mesh_get_eval_deform(
         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,
+        struct Object *ob, CustomDataMask dataMask, int index);
+#endif
+struct Mesh *mesh_create_eval_final_index_render(
+        struct Depsgraph *depsgraph, struct Scene *scene,
+        struct Object *ob, CustomDataMask dataMask, int index);
+
 void BKE_mesh_runtime_eval_to_meshkey(struct Mesh *me_deformed, struct Mesh *me, struct KeyBlock *kb);
 
 /* Temporary? A function to give a colorband to derivedmesh for vertexcolor ranges */
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 4aee616580e..4fe689523e0 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -3156,6 +3156,8 @@ DerivedMesh *mesh_create_derived_render(struct Depsgraph *depsgraph, Scene *scen
 	return final;
 }
 
+#ifdef USE_DERIVEDMESH
+/* Deprecated, use `mesh_create_eval_final_index_render` instead. */
 DerivedMesh *mesh_create_derived_index_render(struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask, int index)
 {
 	DerivedMesh *final;
@@ -3166,6 +3168,19 @@ DerivedMesh *mesh_create_derived_index_render(struct Depsgraph *depsgraph, Scene
 
 	return final;
 }
+#endif
+struct Mesh *mesh_create_eval_final_index_render(
+        struct Depsgraph *depsgraph, struct Scene *scene,
+        struct Object *ob, CustomDataMask dataMask, int index)
+{
+	Mesh *final;
+
+	mesh_calc_modifiers(
+	        depsgraph, scene, ob, NULL, 1, false, dataMask, index, false, false, false,
+	        NULL, &final);
+
+	return final;
+}
 
 DerivedMesh *mesh_create_derived_view(
         struct Depsgraph *depsgraph, Scene *scene,
diff --git a/source/blender/blenkernel/intern/fluidsim.c b/source/blender/blenkernel/intern/fluidsim.c
index 87bc819c34f..bf1532bab42 100644
--- a/source/blender/blenkernel/intern/fluidsim.c
+++ b/source/blender/blenkernel/intern/fluidsim.c
@@ -30,36 +30,21 @@
  */
 
 
-// headers for fluidsim bobj meshes
-#include <stdlib.h>
-#include <zlib.h>
-#include <string.h>
-#include <stdio.h>
-
 #include "MEM_guardedalloc.h"
 
 #include "DNA_mesh_types.h"
 #include "DNA_meshdata_types.h"
-#include "DNA_object_fluidsim_types.h"
-#include "DNA_object_force_types.h" // for pointcache
 #include "DNA_object_types.h"
-#include "DNA_particle_types.h"
-#include "DNA_scene_types.h"
 
 #include "BLI_math.h"
-#include "BLI_blenlib.h"
-#include "BLI_utildefines.h"
 
-#include "BKE_cdderivedmesh.h"
 #include "BKE_customdata.h"
-#include "BKE_DerivedMesh.h"
 #include "BKE_fluidsim.h"
-#include "BKE_modifier.h"
-#include "BKE_mesh.h"
+#include "BKE_library.h"
+#include "BKE_mesh_runtime.h"
 
 /* ************************* fluidsim bobj file handling **************************** */
 
-
 //-------------------------------------------------------------------------------
 // file handling
 //-------------------------------------------------------------------------------
@@ -69,7 +54,7 @@ void initElbeemMesh(struct Depsgraph *depsgraph, struct Scene *scene, struct Obj
                     int *numTriangles, int **triangles,
                     int useGlobalCoords, int modifierIndex)
 {
-	DerivedMesh *dm;
+	Mesh *mesh;
 	const MVert *mvert;
 	const MLoop *mloop;
 	const MLoopTri *looptri, *lt;
@@ -77,13 +62,13 @@ void initElbeemMesh(struct Depsgraph *depsgraph, struct Scene *scene, struct Obj
 	float *verts;
 	int *tris;
 
-	dm = mesh_create_derived_index_render(depsgraph, scene, ob, CD_MASK_BAREMESH, modifierIndex);
+	mesh = mesh_create_eval_final_index_render(depsgraph, scene, ob, CD_MASK_BAREMESH, modifierIndex);
 
-	mvert = dm->getVertArray(dm);
-	mloop = dm->getLoopArray(dm);
-	looptri = dm->getLoopTriArray(dm);
-	mvert_num = dm->getNumVerts(dm);
-	looptri_num = dm->getNumLoopTri(dm);
+	mvert = mesh->mvert;
+	mloop = mesh->mloop;
+	looptri = BKE_mesh_runtime_looptri_ensure(mesh);
+	mvert_num = mesh->totvert;
+	looptri_num = mesh->runtime.looptris.len;
 
 	*numVertices = mvert_num;
 	verts = MEM_mallocN(mvert_num * sizeof(float[3]), "elbeemmesh_vertices");
@@ -102,5 +87,5 @@ void initElbeemMesh(struct Depsgraph *depsgraph, struct Scene *scene, struct Obj
 	}
 	*triangles = tris;
 
-	dm->release(dm);
+	BKE_id_free(NULL, mesh);
 }
diff --git a/source/blender/modifiers/intern/MOD_fluidsim.c b/source/blender/modifiers/intern/MOD_fluidsim.c
index 6e322dc7016..bb87d0065fe 100644
--- a/source/blender/modifiers/intern/MOD_fluidsim.c
+++ b/source/blender/modifiers/intern/MOD_fluidsim.c
@@ -33,14 +33,13 @@
  */
 
 
+#include "DNA_mesh_types.h"
 #include "DNA_scene_types.h"
 #include "DNA_object_fluidsim_types.h"
 #include "DNA_object_types.h"
 
 #include "BLI_utildefines.h"
 
-
-#include "BKE_cdderivedmesh.h"
 #include "BKE_layer.h"
 #include "BKE_modifier.h"
 
@@ -80,25 +79,25 @@ static void copyData(const ModifierData *md, ModifierData *target, const int UNU
 
 
 
-static DerivedMesh *applyModifier(
+static Mesh *applyModifier(
         ModifierData *md, const ModifierEvalContext *ctx,
-        DerivedMesh *dm)
+        Mesh *mesh)
 {
 	FluidsimModifierData *fluidmd = (FluidsimModifierData *) md;
-	DerivedMesh *result = NULL;
+	Mesh *result = NULL;
 
 	/* check for alloc failing */
 	if (!fluidmd->fss) {
 		initData(md);
 
 		if (!fluidmd->fss) {
-			return dm;
+			return mesh;
 		}
 	}
 
-	result = fluidsimModifier_do(fluidmd, ctx, dm);
+	result = fluidsimModifier_do(fluidmd, ctx, mesh);
 
-	return result ? result : dm;
+	return result ? result : mesh;
 }
 
 static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
@@ -145,14 +144,14 @@ ModifierTypeInfo modifierType_Fluidsim = {
 	/* deformMatrices_DM */ NULL,
 	/* deformVertsEM_DM */  NULL,
 	/* deformMatricesEM_DM*/NULL,
-	/* applyModifier_DM */  applyModifier,
+	/* applyModifier_DM */  NULL,
 	/* applyModifierEM_DM */NULL,
 
 	/* deformVerts */       NULL,
 	/* deformMatrices */    NULL,
 	/* deformVertsEM */     NULL,
 	/* deformMatricesEM */  NULL,
-	/* applyModifier */     NULL,
+	/* applyModifier */     applyModifier,
 	/* applyModifierEM */   NULL,
 
 	/* initData */          initData,
diff --git a/source/blender/modifiers/intern/MOD_fluidsim_util.c b/source/blender/modifiers/intern/MOD_fluidsim_util.c
index ed5d08a95d4..963296f80f6 100644
--- a/source/blender/modifiers/intern/MOD_fluidsim_util.c
+++ b/source/blender/modifiers/intern/MOD_fluidsim_util.c
@@ -47,8 +47,8 @@
 #include "BLI_utildefines.h"
 
 #include "BKE_fluidsim.h" /* ensure definitions here match */
-#include "BKE_cdderivedmesh.h"
 #include "BKE_main.h"
+#include "BKE_mesh.h"
 #ifdef WITH_MOD_FLUID
 #  include "BKE_global.h"
 #endif
@@ -165,13 +165,13 @@ void fluidsim_free(FluidsimModifierData *fluidmd)
 
 #ifdef WITH_MOD_FLUID
 /* read .bobj.gz file into a fluidsimDerivedMesh struct */
-static DerivedMesh *fluidsim_read_obj(const char *filename, const MPoly *mp_example)
+static Mesh *fluidsim_read_obj(const char *filename, const MPoly *mp_example)
 {
 	int wri = 0, i;
 	int gotBytes;
 	gzFile gzf;
 	int numverts = 0, numfaces = 0;
-	DerivedMesh *dm = NULL;
+	Mesh *mesh = NULL;
 	MPoly *mp;
 	MLoop *ml;
 	MVert *mv;
@@ -220,9 +220,9 @@ static DerivedMesh *fluidsim_read_obj(const char *filename, const MPoly *mp_exam
 		return NULL;
 	}
 
-	dm = CDDM_new(numverts, 0, 0, numfaces * 3, numfaces);
+	mesh = BKE_mesh_new_nomain(numverts, 0, 0, numfaces * 3, numfaces);
 
-	if (!dm) {
+	if (!mesh) {
 		gzclose(gzf);
 		return NULL;
 	}
@@ -231,7 +231,7 @@ static DerivedMesh *fluidsim_read_obj(const char *filename, const MPoly *mp_exam
 	gotBytes = gzread(gzf, &wri, sizeof(wri));
 
 	/* read vertex position from file */
-	mv = CDDM_get_verts(dm);
+	mv = mesh->mvert;
 
 	for (i = 0; i < numverts; i++, mv++)
 		gotBytes = gzread(gzf, mv->co, sizeof(float) * 3);
@@ -239,16 +239,16 @@ static DerivedMesh *fluidsim_read_obj(const char *filename, const MPoly *mp_exam
 	/* should be the same as numverts */
 	gotBytes = gzread(gzf, &wri, sizeof(wri));
 	if (wri != numverts) {
-		if (dm)
-			dm->release(dm);
+		if (mesh)
+			BKE_id_free(NULL, mesh);
 		gzclose(gzf);
 		return NULL;
 	}
 
 	normals = MEM_calloc_arrayN(numverts, 3 * sizeof(short), "fluid_tmp_normals");
 	if (!normals) {
-		if (dm)
-			dm->release(dm);
+		if (mesh)
+			BKE_id_free(NULL, mesh);
 		gzclose(gzf);
 		return NULL;
 	}
@@ -264,16 +264,16 @@ static DerivedMesh *fluidsim_read_obj(const char *filename, const MPoly *mp_exam
 
 	if (wri != numfaces) {
 		printf("Fluidsim: error in reading data from file.\n");
-		if (dm)
-			dm->release(dm);
+		if (mesh)
+			BKE_id_free(NULL, mesh);
 		gzclose(gzf);
 		MEM_freeN(normals);
 		return NULL;
 	}
 
 	/* read triangles from file */
-	mp = CDDM_get_polys(dm);
-	ml = CDDM_get_loops(dm);
+	mp = mesh->mpoly;
+	ml = mesh->mloop;
 	for (i = 0; i < numfaces; i++, mp++, ml += 3) {
 		int face[3];
 
@@ -294,13 +294,12 @@ static DerivedMesh *fluidsim_read_obj(const char *filename, const MPoly *mp_exam
 
 	gzclose(gzf);
 
-	CDDM_calc_edges(dm);
-
-	

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list