From 33a6bf610eb66ef6c306d5b8759043960edc8052 Mon Sep 17 00:00:00 2001 From: Daniel Genrich Date: Wed, 12 Mar 2008 01:42:39 +0000 Subject: Cloth bugfix for 1. reset of cloth sim during render with vector blur when cache was not protected, 2. fix of bad vector blur for cloth, put fluidsim like function in to get real speed vectors --- source/blender/blenkernel/intern/cloth.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'source/blender/blenkernel/intern/cloth.c') diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c index b0f8cc9c330..d7dc96abfac 100644 --- a/source/blender/blenkernel/intern/cloth.c +++ b/source/blender/blenkernel/intern/cloth.c @@ -738,20 +738,21 @@ DerivedMesh *clothModifier_do(ClothModifierData *clmd,Object *ob, DerivedMesh *d /* jump to a non-existing frame makes sim reset if cache is not protected */ if(!(clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_CCACHE_PROTECT)) { - /* - clmd->sim_parms->flags |= CLOTH_SIMSETTINGS_FLAG_RESET; - */ - clmd->sim_parms->flags |= CLOTH_SIMSETTINGS_FLAG_CCACHE_FFREE; - cloth_clear_cache(ob, clmd, 0); - - cloth_write_cache(ob, clmd, framenr); + /* prevent freeing when used with vectorblur */ + if(!useRenderParams) + { + clmd->sim_parms->flags |= CLOTH_SIMSETTINGS_FLAG_CCACHE_FFREE; + cloth_clear_cache(ob, clmd, 0); + + cloth_write_cache(ob, clmd, framenr); + } } } } else { if(G.rt > 0) - printf("dt > 1.0 || dt < 0.0, %f\n", framenr); + printf("dt > 1.0 || dt < 0.0, %f, st: %f, ct: %f\n", framenr, clmd->sim_parms->sim_time, current_time); if(cloth_read_cache(ob, clmd, framenr)) { cloth_to_object (ob, clmd, result); @@ -761,7 +762,11 @@ DerivedMesh *clothModifier_do(ClothModifierData *clmd,Object *ob, DerivedMesh *d { /* jump to a non-existing frame makes sim reset if cache is not protected */ if(!(clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_CCACHE_PROTECT)) - clmd->sim_parms->flags |= CLOTH_SIMSETTINGS_FLAG_RESET; + { + /* prevent freeing when used with vectorblur */ + if(!useRenderParams) + clmd->sim_parms->flags |= CLOTH_SIMSETTINGS_FLAG_RESET; + } } clmd->sim_parms->sim_time = current_time; } -- cgit v1.2.3