diff options
author | Lukas Tönne <lukas.toenne@gmail.com> | 2016-04-29 16:03:58 +0300 |
---|---|---|
committer | Lukas Tönne <lukas.toenne@gmail.com> | 2016-04-29 16:03:58 +0300 |
commit | ac30a04b2721e0c088f31486047372754cc40930 (patch) | |
tree | b2d6c68e789a92d8980e87b1eb96ed63e312a45f /source/blender/blenkernel/intern/cloth.c | |
parent | 181d095f5061476fe2225ea2ad69d3d73306c237 (diff) |
Removed point cache blenkernel code.
Diffstat (limited to 'source/blender/blenkernel/intern/cloth.c')
-rw-r--r-- | source/blender/blenkernel/intern/cloth.c | 78 |
1 files changed, 4 insertions, 74 deletions
diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c index fa37e324e49..9454ad62ed3 100644 --- a/source/blender/blenkernel/intern/cloth.c +++ b/source/blender/blenkernel/intern/cloth.c @@ -45,7 +45,6 @@ #include "BKE_effect.h" #include "BKE_global.h" #include "BKE_modifier.h" -#include "BKE_pointcache.h" #include "BPH_mass_spring.h" @@ -126,9 +125,6 @@ void cloth_init(ClothModifierData *clmd ) if (!clmd->sim_parms->effector_weights) clmd->sim_parms->effector_weights = BKE_add_effector_weights(NULL); - - if (clmd->point_cache) - clmd->point_cache->step = 1; } static BVHTree *bvhselftree_build_from_cloth (ClothModifierData *clmd, float epsilon) @@ -299,30 +295,16 @@ void bvhselftree_update_from_cloth(ClothModifierData *clmd, bool moving) } } -void cloth_clear_cache(Object *ob, ClothModifierData *clmd, float framenr) -{ - PTCacheID pid; - - BKE_ptcache_id_from_cloth(&pid, ob, clmd); - BKE_ptcache_id_clear(&pid, PTCACHE_CLEAR_AFTER, framenr); -} - static int do_init_cloth(Object *ob, ClothModifierData *clmd, DerivedMesh *result, int framenr) { - PointCache *cache; - - cache= clmd->point_cache; - /* initialize simulation data if it didn't exist already */ if (clmd->clothObject == NULL) { if (!cloth_from_object(ob, clmd, result, framenr, 1)) { - BKE_ptcache_invalidate(cache); modifier_setError(&(clmd->modifier), "Can't initialize cloth"); return 0; } if (clmd->clothObject == NULL) { - BKE_ptcache_invalidate(cache); modifier_setError(&(clmd->modifier), "Null cloth object"); return 0; } @@ -385,27 +367,14 @@ static int do_step_cloth(Object *ob, ClothModifierData *clmd, DerivedMesh *resul ************************************************/ void clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob, DerivedMesh *dm, float (*vertexCos)[3]) { - PointCache *cache; - PTCacheID pid; - float timescale; - int framenr, startframe, endframe; - int cache_result; + int framenr = scene->r.cfra, startframe = scene->r.sfra, endframe = scene->r.efra; clmd->scene= scene; /* nice to pass on later :) */ - framenr= (int)scene->r.cfra; - cache= clmd->point_cache; - BKE_ptcache_id_from_cloth(&pid, ob, clmd); - BKE_ptcache_id_time(&pid, scene, framenr, &startframe, &endframe, ×cale); - clmd->sim_parms->timescale= timescale; + clmd->sim_parms->timescale= 1.0f; if (clmd->sim_parms->reset || (clmd->clothObject && dm->getNumVerts(dm) != clmd->clothObject->mvert_num)) { clmd->sim_parms->reset = 0; - cache->flag |= PTCACHE_OUTDATED; - BKE_ptcache_id_reset(scene, &pid, PTCACHE_RESET_OUTDATED); - BKE_ptcache_validate(cache, 0); - cache->last_exact= 0; - cache->flag &= ~PTCACHE_REDO_NEEDED; } // unused in the moment, calculated separately in implicit.c @@ -413,7 +382,6 @@ void clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob, Derived /* simulation is only active during a specific period */ if (framenr < startframe) { - BKE_ptcache_invalidate(cache); return; } else if (framenr > endframe) { @@ -425,56 +393,18 @@ void clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob, Derived return; if (framenr == startframe) { - BKE_ptcache_id_reset(scene, &pid, PTCACHE_RESET_OUTDATED); do_init_cloth(ob, clmd, dm, framenr); - BKE_ptcache_validate(cache, framenr); - cache->flag &= ~PTCACHE_REDO_NEEDED; - clmd->clothObject->last_frame= framenr; - return; - } - - /* try to read from cache */ - cache_result = BKE_ptcache_read(&pid, (float)framenr+scene->r.subframe); - - if (cache_result == PTCACHE_READ_EXACT || cache_result == PTCACHE_READ_INTERPOLATED) { - BKE_cloth_solver_set_positions(clmd); - cloth_to_object (ob, clmd, vertexCos); - - BKE_ptcache_validate(cache, framenr); - - if (cache_result == PTCACHE_READ_INTERPOLATED && cache->flag & PTCACHE_REDO_NEEDED) - BKE_ptcache_write(&pid, framenr); - clmd->clothObject->last_frame= framenr; - - return; - } - else if (cache_result==PTCACHE_READ_OLD) { - BKE_cloth_solver_set_positions(clmd); - } - else if ( /*ob->id.lib ||*/ (cache->flag & PTCACHE_BAKED)) { /* 2.4x disabled lib, but this can be used in some cases, testing further - campbell */ - /* if baked and nothing in cache, do nothing */ - BKE_ptcache_invalidate(cache); return; } if (framenr!=clmd->clothObject->last_frame+1) return; - /* if on second frame, write cache for first frame */ - if (cache->simframe == startframe && (cache->flag & PTCACHE_OUTDATED || cache->last_exact==0)) - BKE_ptcache_write(&pid, startframe); - - clmd->sim_parms->timescale *= framenr - cache->simframe; + clmd->sim_parms->timescale *= 1.0f; /* do simulation */ - BKE_ptcache_validate(cache, framenr); - - if (!do_step_cloth(ob, clmd, dm, framenr)) { - BKE_ptcache_invalidate(cache); - } - else - BKE_ptcache_write(&pid, framenr); + do_step_cloth(ob, clmd, dm, framenr); cloth_to_object (ob, clmd, vertexCos); clmd->clothObject->last_frame= framenr; |