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);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to