Optional offset for fluid cache frame reading.
authorLukas Toenne <lukas.toenne@googlemail.com>
Wed, 1 Feb 2012 15:58:26 +0000 (15:58 +0000)
committerLukas Toenne <lukas.toenne@googlemail.com>
Wed, 1 Feb 2012 15:58:26 +0000 (15:58 +0000)
This was a request by Daniel Salazar. It adds a new frame offset variable to fluid sim settings, which can be used to display baked fluid sims at different times. Eventually this could be replaced by real NLA strips for cached data, but until then this is a simple way to have more flexible cache result usage.

Not strictly a BCon3 patch, but after IRC discussion with Genscher, ZanQdo and kaito decided to commit it anyway, since it's a small feature and makes fluid sim a bit more usable. Similar patch for point cache (particles, smoke, cloth) is being worked on as well.

release/scripts/startup/bl_ui/properties_physics_fluid.py
source/blender/makesdna/DNA_object_fluidsim.h
source/blender/makesrna/intern/rna_fluidsim.c
source/blender/modifiers/intern/MOD_fluidsim_util.c

index 114d74f1060d5b7ef95a47d15fc043ab1d6bba1e..363b0f20428e0b1922f2debeb8f5d77f0e722a41 100644 (file)
@@ -85,6 +85,7 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
             col.label()
             col.prop(fluid, "use_speed_vectors")
             col.prop(fluid, "use_reverse_frames")
+            col.prop(fluid, "frame_offset", text="Offset")
 
             layout.prop(fluid, "filepath", text="")
 
index 90e6e97bc159ff88ec37fc2740229595582a3cb6..0651f0760961d7dc5b9964b4a34f294527cb88c1 100644 (file)
@@ -74,6 +74,9 @@ typedef struct FluidsimSettings {
        float animStart, animEnd;
        /* bake start end time (in blender frames) */
        int bakeStart, bakeEnd;
+       /* offset for baked frames */
+       int frameOffset;
+       int pad;
        /* g star param (LBM compressibility) */
        float gstar;
        /* activate refinement? */
index 99a84fc8b39ac80b547b0765516c7ab29da3fd70..c17f23bb3a07f12b2074459ee3e941432ff92f0c 100644 (file)
@@ -335,6 +335,11 @@ static void rna_def_fluidsim_domain(BlenderRNA *brna)
        RNA_def_property_range(prop, 0, 100);
        RNA_def_property_ui_text(prop, "End Time", "Simulation time of the last blender frame (in seconds)");
        
+       prop= RNA_def_property(srna, "frame_offset", PROP_INT, PROP_NONE);
+       RNA_def_property_int_sdna(prop, NULL, "frameOffset");
+       RNA_def_property_ui_text(prop, "Cache Offset", "Offset when reading baked cache");
+       RNA_def_property_update(prop, NC_OBJECT, "rna_fluid_update");
+       
        prop= RNA_def_property(srna, "simulation_scale", PROP_FLOAT, PROP_NONE);
        RNA_def_property_float_sdna(prop, NULL, "realsize");
        RNA_def_property_range(prop, 0.001, 10);
index b62a497a10c1b43c7bb179f8382499f996d76339..38909a2671a85a55aeac1fb903e12f9af3c2ccdc 100644 (file)
@@ -475,6 +475,9 @@ static DerivedMesh *fluidsim_read_cache(Object *ob, DerivedMesh *orgdm, Fluidsim
                break;
        }
 
+       /* offset baked frame */
+       curFrame += fss->frameOffset;
+
        BLI_path_abs(targetFile, modifier_path_relbase(ob));
        BLI_path_frame(targetFile, curFrame, 0); // fixed #frame-no