[Bf-blender-cvs] [4b75003] alembic_pointcache: Fix for cache modifier linking and handling of the default case (no cachd modifier).

Lukas Tönne noreply at git.blender.org
Thu Feb 26 14:06:07 CET 2015


Commit: 4b7500353ac0a8b8991b8d91b06e97eb52ab1d43
Author: Lukas Tönne
Date:   Thu Feb 26 13:42:24 2015 +0100
Branches: alembic_pointcache
https://developer.blender.org/rB4b7500353ac0a8b8991b8d91b06e97eb52ab1d43

Fix for cache modifier linking and handling of the default case (no
cachd modifier).

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

M	source/blender/blenkernel/intern/DerivedMesh.c
M	source/blender/blenloader/intern/readfile.c

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

diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index d36cc3f..3be32ca 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -1560,13 +1560,17 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
 	
 	if (BKE_cache_read_derived_mesh(G.main, scene, scene->r.cfra, ob, &cachedm)) {
 		CacheModifierData *cmd = (CacheModifierData *)mesh_find_cache_modifier(scene, ob, required_mode);
-		firstmd = &cmd->modifier;
-		
-		/* use the cache result as output of the modifier
-		 * rather than as the final dm
-		 */
-		cmd->output_dm = cachedm;
-		cachedm = NULL;
+		if (cmd) {
+			firstmd = &cmd->modifier;
+			
+			/* use the cache result as output of the modifier
+			 * rather than as the final dm
+			 */
+			cmd->output_dm = cachedm;
+			cachedm = NULL;
+		}
+		else
+			firstmd = NULL;
 	}
 	else {
 		firstmd = mesh_find_start_modifier(scene, ob, &virtualModifierData, required_mode, useDeform);
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 1ca66ff..a80f56d 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -4928,6 +4928,12 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb)
 			}
 			lmd->cache_system = NULL;
 		}
+		else if (md->type == eModifierType_Cache) {
+			CacheModifierData *cmd = (CacheModifierData *)md;
+			
+			cmd->output_dm = NULL;
+			cmd->flag &= ~MOD_CACHE_USE_OUTPUT;
+		}
 	}
 }




More information about the Bf-blender-cvs mailing list