diff options
author | Daniel Genrich <daniel.genrich@gmx.net> | 2008-03-12 04:42:39 +0300 |
---|---|---|
committer | Daniel Genrich <daniel.genrich@gmx.net> | 2008-03-12 04:42:39 +0300 |
commit | 33a6bf610eb66ef6c306d5b8759043960edc8052 (patch) | |
tree | 87874c4b39e97060b845be1eafe74f64bbd88ec9 /source/blender/blenkernel/intern/cloth.c | |
parent | 3c561ec2165f201deaa910f981e0dd116f36e64e (diff) |
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
Diffstat (limited to 'source/blender/blenkernel/intern/cloth.c')
-rw-r--r-- | source/blender/blenkernel/intern/cloth.c | 23 |
1 files changed, 14 insertions, 9 deletions
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; } |