Blender Git Loki
Git Commits -> Revision 912c2f4
Revision 912c2f4 by Janne Karhu (master) June 27, 2009, 15:28 (GMT) |
Pointcache refresh part 2 * Based on what happens during simulation the cache is marked (also in cache panel, this could possibly be extended to 3d view as well) as: - exact (not marked) - outdated (simulation is not done completely with current settings) - non-exact (frames were skipped during simulation) * The parameter "cache step" effects the number of frames between saved cache frames. - This can save a lot of memory (or disk space) if absolutely frame accurate simulation is not required. - Speeds up the "quick caching" very much. - Frames between cached frames are interpolated from the cached frames. - Current default value of 10 frames works nicely with up/down-arrows (skip 10 frames forwards/backwards on timeline), but can be changed if wanted. * The caching can work in normal or "quick" mode: [Normal cache] - Basic: Calculate what even happens (settings change, big frame steps etc.) and cache results, if possible try to use "cache step" when saving cache frames. - Becomes non-exact: After larger than 1 frame steps. - Becomes outdated: After any change effecting the simulation other than frame steps. - Pros/cons: Freedom of doing anything and playing with particles, but exact results have to calculated from the beginning. [Quick cache] - Basic: Calculate simulation up to current frame automatically on changes with cache step sized jumps in simulation. With multiple "quick cached" simulations the smallest cache step is used. - Becomes non-exact: Always from frame 1 (unless cache step = 1). - Becomes outdated: Never. - Pros/cons: Not very accurate, but super fast! - Todo: Transform of any animated (non-autokeyed) object is locked! Probably needs some tinkering with anim sys overrides. * The simulation can be run forwards or backwards even if it's cache is outdated or non-exact, the following rules apply in these situations: - step forwards (to unknown) -> simulate from last exact frame, store result - step backwards (to known) -> result is interpolated from existing frames, store result, clear cache forwards if current frame is after last exact frame * "Calculate to current frame" runs the simulation from start to current frame with a frame steps of 1. - Baking does the same, but runs the simulation all the way to the end of simulation. - Rendering does this automatically if the simulation is outdated of non-exact, so all rendered simulations will always be updated and exact. * Every cache panel also holds buttons to "Bake all dynamics", "Free all dynamics" and "Update all dynamics to current frame". * Cloth simulation supports the new cache too. |
Commit Details:
Full Hash: 912c2f440b447aa8cae9f3e3a86acf51cd495e3d
SVN Revision: 21195
Parent Commit: 9becf3c
Lines Changed: +754, -324
19 Modified Paths:
/release/ui/buttons_particle.py (+17, -10) (Diff)
/release/ui/buttons_physic_cloth.py (+48, -0) (Diff)
/source/blender/blenkernel/BKE_cloth.h (+3, -2) (Diff)
/source/blender/blenkernel/BKE_particle.h (+0, -1) (Diff)
/source/blender/blenkernel/BKE_pointcache.h (+7, -6) (Diff)
/source/blender/blenkernel/intern/cloth.c (+103, -61) (Diff)
/source/blender/blenkernel/intern/implicit.c (+8, -2) (Diff)
/source/blender/blenkernel/intern/particle.c (+2, -25) (Diff)
/source/blender/blenkernel/intern/particle_system.c (+27, -30) (Diff)
/source/blender/blenkernel/intern/pointcache.c (+307, -168) (Diff)
/source/blender/blenloader/intern/readfile.c (+7, -6) (Diff)
/source/blender/blenloader/intern/writefile.c (+4, -1) (Diff)
/source/blender/editors/physics/ed_pointcache.c (+117, -5) (Diff)
/source/blender/editors/transform/transform_conversions.c (+6, -0) (Diff)
/source/blender/makesdna/DNA_object_force.h (+7, -2) (Diff)
/source/blender/makesrna/intern/rna_cloth.c (+43, -0) (Diff)
/source/blender/makesrna/intern/rna_object_force.c (+44, -5) (Diff)
/source/blender/render/intern/source/pipeline.c (+1, -0) (Diff)
/source/blender/windowmanager/intern/wm_event_system.c (+3, -0) (Diff)
/release/ui/buttons_physic_cloth.py (+48, -0) (Diff)
/source/blender/blenkernel/BKE_cloth.h (+3, -2) (Diff)
/source/blender/blenkernel/BKE_particle.h (+0, -1) (Diff)
/source/blender/blenkernel/BKE_pointcache.h (+7, -6) (Diff)
/source/blender/blenkernel/intern/cloth.c (+103, -61) (Diff)
/source/blender/blenkernel/intern/implicit.c (+8, -2) (Diff)
/source/blender/blenkernel/intern/particle.c (+2, -25) (Diff)
/source/blender/blenkernel/intern/particle_system.c (+27, -30) (Diff)
/source/blender/blenkernel/intern/pointcache.c (+307, -168) (Diff)
/source/blender/blenloader/intern/readfile.c (+7, -6) (Diff)
/source/blender/blenloader/intern/writefile.c (+4, -1) (Diff)
/source/blender/editors/physics/ed_pointcache.c (+117, -5) (Diff)
/source/blender/editors/transform/transform_conversions.c (+6, -0) (Diff)
/source/blender/makesdna/DNA_object_force.h (+7, -2) (Diff)
/source/blender/makesrna/intern/rna_cloth.c (+43, -0) (Diff)
/source/blender/makesrna/intern/rna_object_force.c (+44, -5) (Diff)
/source/blender/render/intern/source/pipeline.c (+1, -0) (Diff)
/source/blender/windowmanager/intern/wm_event_system.c (+3, -0) (Diff)