[Bf-blender-cvs] [1873771] alembic: Make sure the frame values for cache modifier evaluation are initialized correctly.

Lukas Tönne noreply at git.blender.org
Tue Apr 7 16:38:59 CEST 2015


Commit: 187377194088b35b6cf2dd9f432543536c8185c9
Author: Lukas Tönne
Date:   Tue Apr 7 16:37:57 2015 +0200
Branches: alembic
https://developer.blender.org/rB187377194088b35b6cf2dd9f432543536c8185c9

Make sure the frame values for cache modifier evaluation are initialized
correctly.

Also skip empty frames in hair simulation (this includes the first
frame).

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

M	source/blender/blenkernel/intern/cache_library.c
M	source/blender/editors/io/io_cache_library.c

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

diff --git a/source/blender/blenkernel/intern/cache_library.c b/source/blender/blenkernel/intern/cache_library.c
index d658a55..c4ea218 100644
--- a/source/blender/blenkernel/intern/cache_library.c
+++ b/source/blender/blenkernel/intern/cache_library.c
@@ -595,7 +595,13 @@ static void hairsim_free(HairSimCacheModifier *hsmd)
 
 static void hairsim_process(HairSimCacheModifier *hsmd, CacheProcessContext *ctx, CacheProcessData *data, int frame, int frame_prev)
 {
-	struct DupliCacheIterator *iter = BKE_dupli_cache_iter_new(data->dupcache);
+	struct DupliCacheIterator *iter;
+	
+	/* skip first step and potential backward steps */
+	if (frame <= frame_prev)
+		return;
+	
+	iter = BKE_dupli_cache_iter_new(data->dupcache);
 	for (; BKE_dupli_cache_iter_valid(iter); BKE_dupli_cache_iter_next(iter)) {
 		DupliObjectData *data = BKE_dupli_cache_iter_get(iter);
 		DupliObjectDataStrands *link;
diff --git a/source/blender/editors/io/io_cache_library.c b/source/blender/editors/io/io_cache_library.c
index b66da00..4f14efa 100644
--- a/source/blender/editors/io/io_cache_library.c
+++ b/source/blender/editors/io/io_cache_library.c
@@ -266,7 +266,7 @@ static void cache_library_bake_do(CacheLibraryBakeJob *data)
 	/* === frame loop === */
 	
 	cache_library_bake_set_progress(data, 0.0f);
-	for (frame = start_frame; frame <= end_frame; frame_prev = frame++) {
+	for (frame = frame_prev = start_frame; frame <= end_frame; frame_prev = frame++) {
 		scene->r.cfra = frame;
 		BKE_scene_update_for_newframe(&data->eval_ctx, data->bmain, scene, scene->lay);




More information about the Bf-blender-cvs mailing list