[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