Added additional (optional) subframe argument to RNA API function: scene.set_frame()
authorMatt Ebb <matt@mke3.net>
Tue, 10 Aug 2010 03:28:06 +0000 (03:28 +0000)
committerMatt Ebb <matt@mke3.net>
Tue, 10 Aug 2010 03:28:06 +0000 (03:28 +0000)
This is used to set the current frame to a floating point subframe state between 0.0 and 1.0
added to the integer frame. A main usage for this is retrieving geometry at sub-frame
intervals for use in multi-segment motion blur:

http://mke3.net/projects/3Delight_blender/renders/multisegment_blur.mov

Example:
scene.set_frame(5)
or
scene.set_frame(5, 0.25)

source/blender/makesrna/intern/rna_scene_api.c

index c3b60514d2a61b0df6696799fa2e81f500d5584d..8ec210f2046fde409964c8e0186ef4b8c2103bc0 100644 (file)
 
 
 
-static void rna_Scene_set_frame(Scene *scene, int frame)
+static void rna_Scene_set_frame(Scene *scene, int frame, float subframe)
 {
        scene->r.cfra= frame;
+       scene->r.subframe= subframe;
+       
        CLAMP(scene->r.cfra, MINAFRAME, MAXFRAME);
        scene_update_for_newframe(G.main, scene, (1<<20) - 1);
 
@@ -107,6 +109,7 @@ void RNA_api_scene(StructRNA *srna)
        RNA_def_function_ui_description(func, "Set scene frame updating all objects immediately.");
        parm= RNA_def_int(func, "frame", 0, MINAFRAME, MAXFRAME, "", "Frame number to set.", MINAFRAME, MAXFRAME);
        RNA_def_property_flag(parm, PROP_REQUIRED);
+       parm= RNA_def_float(func, "subframe", 0.0, 0.0, 1.0, "", "Sub-frame time, between 0.0 and 1.0", 0.0, 1.0);
 
        func= RNA_def_function(srna, "update", "rna_Scene_update_tagged");
        RNA_def_function_ui_description(func, "Update data tagged to be updated from previous access to data or operators.");