[Bf-blender-cvs] [8e97a13] alembic_pointcache: Reverted changes to the Mesh Cache modifier, this functionality is now being implemented in the new Point Cache modifier instead.

Lukas Tönne noreply at git.blender.org
Tue Nov 4 09:43:32 CET 2014


Commit: 8e97a13d3dadcb61fee74b989abc43ec3bab4ddb
Author: Lukas Tönne
Date:   Tue Nov 4 09:41:33 2014 +0100
Branches: alembic_pointcache
https://developer.blender.org/rB8e97a13d3dadcb61fee74b989abc43ec3bab4ddb

Reverted changes to the Mesh Cache modifier, this functionality is now
being implemented in the new Point Cache modifier instead.

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

M	release/scripts/startup/bl_ui/properties_data_modifier.py
M	source/blender/blenloader/intern/readfile.c
M	source/blender/blenloader/intern/versioning_270.c
M	source/blender/blenloader/intern/writefile.c
M	source/blender/makesdna/DNA_modifier_types.h
M	source/blender/makesrna/intern/rna_modifier.c
M	source/blender/modifiers/intern/MOD_meshcache.c
M	source/blender/pointcache/PTC_api.cpp
M	source/blender/pointcache/PTC_api.h
M	source/blender/pointcache/intern/mesh.cpp
M	source/blender/pointcache/intern/mesh.h

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

diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index c91e99a..f33c7d8 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -170,17 +170,9 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
         sub.prop(md, "seed")
 
     def MESH_CACHE(self, layout, ob, md):
-        has_export = md.cache_format in {'ALEMBIC_HDF5'}
-
         layout.prop(md, "cache_format")
         layout.prop(md, "filepath")
 
-        if has_export:
-            col = layout.column()
-            col.context_pointer_set("point_cache", md.point_cache)
-            col.context_pointer_set("point_cache_user", md)
-            col.operator("PTCACHE_OT_export")
-
         layout.label(text="Evaluation:")
         layout.prop(md, "factor", slider=True)
         layout.prop(md, "deform_mode")
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 6d76936..b89673d 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -4784,10 +4784,10 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb)
 			}
 			lmd->cache_system = NULL;
 		}
-		else if (md->type == eModifierType_MeshCache) {
-			MeshCacheModifierData *mcmd = (MeshCacheModifierData *)md;
+		else if (md->type == eModifierType_PointCache) {
+			PointCacheModifierData *pcmd = (PointCacheModifierData *)md;
 
-			mcmd->point_cache = newdataadr(fd, mcmd->point_cache);
+			pcmd->point_cache = newdataadr(fd, pcmd->point_cache);
 		}
 	}
 }
diff --git a/source/blender/blenloader/intern/versioning_270.c b/source/blender/blenloader/intern/versioning_270.c
index 22e99d8..a6d7ad3 100644
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@ -510,18 +510,4 @@ void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *main)
 				do_versions_pointcache(&sce->id, rbw->pointcache);
 		}
 	}
-
-	if (!DNA_struct_elem_find(fd->filesdna, "MeshCacheModifierData", "PointCache", "point_cache")) {
-		Object *ob;
-		ModifierData *md;
-
-		for (ob = main->object.first; ob; ob = ob->id.next) {
-			for (md = ob->modifiers.first; md; md = md->next) {
-				if (md->type == eModifierType_MeshCache) {
-					MeshCacheModifierData *mcmd = (MeshCacheModifierData *)md;
-					mcmd->point_cache = BKE_ptcache_new();
-				}
-			}
-		}
-	}
 }
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index e8689cd..fa7f2d6 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -1545,10 +1545,10 @@ static void write_modifiers(WriteData *wd, ListBase *modbase)
 
 			writedata(wd, DATA, sizeof(float)*lmd->total_verts * 3, lmd->vertexco);
 		}
-		else if (md->type==eModifierType_MeshCache) {
-			MeshCacheModifierData *mcmd = (MeshCacheModifierData *)md;
+		else if (md->type==eModifierType_PointCache) {
+			PointCacheModifierData *pcmd = (PointCacheModifierData *)md;
 
-			writestruct(wd, DATA, "PointCache", 1, mcmd->point_cache);
+			writestruct(wd, DATA, "PointCache", 1, pcmd->point_cache);
 		}
 	}
 }
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h
index 8555e28..63c2f05 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -1301,13 +1301,11 @@ typedef struct MeshCacheModifierData {
 	float eval_factor;
 
 	char filepath[1024];  /* FILE_MAX */
-	struct PointCache *point_cache;
 } MeshCacheModifierData;
 
 enum {
 	MOD_MESHCACHE_TYPE_MDD  = 1,
 	MOD_MESHCACHE_TYPE_PC2  = 2,
-	MOD_MESHCACHE_TYPE_ALEMBIC_HDF5 = 3,
 };
 
 enum {
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c
index 994809f..5c63b95 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -3406,7 +3406,6 @@ static void rna_def_modifier_meshcache(BlenderRNA *brna)
 	static EnumPropertyItem prop_format_type_items[] = {
 		{MOD_MESHCACHE_TYPE_MDD, "MDD", 0, "MDD ", ""},
 		{MOD_MESHCACHE_TYPE_PC2, "PC2", 0, "PC2", ""},
-		{MOD_MESHCACHE_TYPE_ALEMBIC_HDF5, "ALEMBIC_HDF5", 0, "Alembic/HDF5", ""},
 		{0, NULL, 0, NULL, NULL}
 	};
 
@@ -3498,13 +3497,6 @@ static void rna_def_modifier_meshcache(BlenderRNA *brna)
 	RNA_def_property_ui_text(prop, "Influence", "Influence of the deformation");
 	RNA_def_property_update(prop, 0, "rna_Modifier_update");
 
-	/* pointcache */
-	prop = RNA_def_property(srna, "point_cache", PROP_POINTER, PROP_NONE);
-	RNA_def_property_flag(prop, PROP_NEVER_NULL);
-	RNA_def_property_pointer_sdna(prop, NULL, "point_cache");
-	RNA_def_property_struct_type(prop, "PointCache");
-	RNA_def_property_ui_text(prop, "Point Cache", "");
-
 	/* -------------------------------------------------------------------- */
 	/* Axis Conversion */
 	prop = RNA_def_property(srna, "forward_axis", PROP_ENUM, PROP_NONE);
diff --git a/source/blender/modifiers/intern/MOD_meshcache.c b/source/blender/modifiers/intern/MOD_meshcache.c
index 496911e..925d969 100644
--- a/source/blender/modifiers/intern/MOD_meshcache.c
+++ b/source/blender/modifiers/intern/MOD_meshcache.c
@@ -36,15 +36,11 @@
 #include "BLI_path_util.h"
 #include "BLI_math.h"
 
-#include "BKE_cdderivedmesh.h"
 #include "BKE_DerivedMesh.h"
 #include "BKE_scene.h"
 #include "BKE_global.h"
 #include "BKE_mesh.h"
 #include "BKE_main.h"
-#include "BKE_pointcache.h"
-
-#include "PTC_api.h"
 
 #include "MEM_guardedalloc.h"
 
@@ -54,16 +50,12 @@
 
 #include "MOD_util.h"
 
-struct BMEditMesh;
-
 static void initData(ModifierData *md)
 {
 	MeshCacheModifierData *mcmd = (MeshCacheModifierData *)md;
 
 	mcmd->flag = 0;
 	mcmd->type = MOD_MESHCACHE_TYPE_MDD;
-	mcmd->point_cache = BKE_ptcache_new();
-
 	mcmd->interp = MOD_MESHCACHE_INTERP_LINEAR;
 	mcmd->frame_scale = 1.0f;
 
@@ -76,18 +68,11 @@ static void initData(ModifierData *md)
 
 static void copyData(ModifierData *md, ModifierData *target)
 {
+#if 0
 	MeshCacheModifierData *mcmd = (MeshCacheModifierData *)md;
 	MeshCacheModifierData *tmcmd = (MeshCacheModifierData *)target;
-
+#endif
 	modifier_copyData_generic(md, target);
-
-	tmcmd->point_cache = BKE_ptcache_copy(mcmd->point_cache, false);
-}
-
-static void freeData(ModifierData *md)
-{
-	MeshCacheModifierData *mcmd = (MeshCacheModifierData *)md;
-	BKE_ptcache_free(mcmd->point_cache);
 }
 
 static bool dependsOnTime(ModifierData *md)
@@ -105,60 +90,96 @@ static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
 }
 
 
-static DerivedMesh *MOD_meshcache_read_alembic_times(struct PTCReader *reader, const char UNUSED(interp),
-                                                     const float time, const float UNUSED(fps), const char UNUSED(time_mode),
-                                                     const char **err_str)
+static void meshcache_do(
+        MeshCacheModifierData *mcmd, Object *ob, DerivedMesh *UNUSED(dm),
+        float (*vertexCos_Real)[3], int numVerts)
 {
-	DerivedMesh *result;
-	
-	if (PTC_read_sample(reader, time) == PTC_READ_SAMPLE_INVALID) {
-		*err_str = "Cannot read Alembic cache file";
-		return false;
-	}
-	
-	result = PTC_reader_mesh_cache_acquire_result(reader);
-	
-	return result;
-}
+	const bool use_factor = mcmd->factor < 1.0f;
+	float (*vertexCos_Store)[3] = (use_factor || (mcmd->deform_mode == MOD_MESHCACHE_DEFORM_INTEGRATE)) ?
+	                              MEM_mallocN(sizeof(*vertexCos_Store) * numVerts, __func__) : NULL;
+	float (*vertexCos)[3] = vertexCos_Store ? vertexCos_Store : vertexCos_Real;
 
-static DerivedMesh *meshcache_read_deform_cache(MeshCacheModifierData *mcmd, Object *ob, DerivedMesh *dm, float time, const char **err_str)
-{
 	Scene *scene = mcmd->modifier.scene;
-	const bool use_factor = mcmd->factor < 1.0f;
 	const float fps = FPS;
-	
-	float (*vertexCos_Real)[3], (*vertexCos_Store)[3], (*vertexCos)[3];
-	int numVerts = dm->getNumVerts(dm);
-	DerivedMesh *finaldm = NULL;
-	
+
 	char filepath[FILE_MAX];
+	const char *err_str = NULL;
 	bool ok;
-	
-	vertexCos_Real = MEM_mallocN(sizeof(*vertexCos_Real) * numVerts, __func__);
-	dm->getVertCos(dm, vertexCos_Real);
-
-	vertexCos_Store = (use_factor || (mcmd->deform_mode == MOD_MESHCACHE_DEFORM_INTEGRATE)) ?
-	                   MEM_mallocN(sizeof(*vertexCos_Store) * numVerts, __func__) : NULL;
-	vertexCos = vertexCos_Store ? vertexCos_Store : vertexCos_Real;
-	
+
+	float time;
+
+
+	/* -------------------------------------------------------------------- */
+	/* Interpret Time (the reading functions also do some of this ) */
+	if (mcmd->play_mode == MOD_MESHCACHE_PLAY_CFEA) {
+		const float cfra = BKE_scene_frame_get(scene);
+
+		switch (mcmd->time_mode) {
+			case MOD_MESHCACHE_TIME_FRAME:
+			{
+				time = cfra;
+				break;
+			}
+			case MOD_MESHCACHE_TIME_SECONDS:
+			{
+				time = cfra / fps;
+				break;
+			}
+			case MOD_MESHCACHE_TIME_FACTOR:
+			default:
+			{
+				time = cfra / fps;
+				break;
+			}
+		}
+
+		/* apply offset and scale */
+		time = (mcmd->frame_scale * time) - mcmd->frame_start;
+	}
+	else {  /*  if (mcmd->play_mode == MOD_MESHCACHE_PLAY_EVAL) { */
+		switch (mcmd->time_mode) {
+			case MOD_MESHCACHE_TIME_FRAME:
+			{
+				time = mcmd->eval_frame;
+				break;
+			}
+			case MOD_MESHCACHE_TIME_SECONDS:
+			{
+				time = mcmd->eval_time;
+				break;
+			}
+			case MOD_MESHCACHE_TIME_FACTOR:
+			default:
+			{
+				time = mcmd->eval_factor;
+				break;
+			}
+		}
+	}
+
+
+	/* -------------------------------------------------------------------- */
+	/* Read the File (or error out when the file is bad) */
+
 	/* would be nice if we could avoid doing this _every_ frame */
 	BLI_strncpy(filepath, mcmd->filepath, sizeof(filepath));
 	BLI_path_abs(filepath, ID_BLEND_PATH(G.main, (ID *)ob));
-	
+
 	switch (mcmd->type) {
 		case MOD_MESHCACHE_TYPE_MDD:
 			ok = MOD_meshcache_read_mdd_times(filepath, vertexCos, numVerts,
-			                                  mcmd->interp, time, fps, mcmd->time_mode, err_str);
+			                                  mcmd->in

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list