[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29729] trunk/blender/source/blender: Partial cleanup of timing system, with some guidance from Joshua:

Matt Ebb matt at mke3.net
Sun Jun 27 07:39:57 CEST 2010


Revision: 29729
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29729
Author:   broken
Date:     2010-06-27 07:39:55 +0200 (Sun, 27 Jun 2010)

Log Message:
-----------
Partial cleanup of timing system, with some guidance from Joshua:

* Fractional frames support has been changed to use a new var, scene->r.subframe. 
This is a 0.0-1.0 float representing a subframe interval, used in generating a final float 
frame number to evaluate animation system etc.
* Changed frame_to_float() and some instances of bsystem_time() into a convenience function:
float BKE_curframe(scene) which retrieves the floating point current frame, after subframe
and frame length corrections.
* Removed blur_offs and field_offs globals. These are now stored in render, used to 
generate a scene->r.subframe before render database processing.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_scene.h
    trunk/blender/source/blender/blenkernel/intern/action.c
    trunk/blender/source/blender/blenkernel/intern/object.c
    trunk/blender/source/blender/blenkernel/intern/particle_system.c
    trunk/blender/source/blender/blenkernel/intern/scene.c
    trunk/blender/source/blender/editors/animation/anim_ops.c
    trunk/blender/source/blender/editors/include/ED_keyframing.h
    trunk/blender/source/blender/editors/screen/screen_ops.c
    trunk/blender/source/blender/editors/space_action/action_edit.c
    trunk/blender/source/blender/editors/space_graph/graph_edit.c
    trunk/blender/source/blender/editors/space_graph/graph_ops.c
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
    trunk/blender/source/blender/makesdna/DNA_scene_types.h
    trunk/blender/source/blender/modifiers/intern/MOD_build.c
    trunk/blender/source/blender/modifiers/intern/MOD_collision.c
    trunk/blender/source/blender/modifiers/intern/MOD_explode.c
    trunk/blender/source/blender/modifiers/intern/MOD_wave.c
    trunk/blender/source/blender/render/intern/include/render_types.h
    trunk/blender/source/blender/render/intern/source/convertblender.c
    trunk/blender/source/blender/render/intern/source/pipeline.c
    trunk/blender/source/blender/render/intern/source/pointdensity.c
    trunk/blender/source/blender/render/intern/source/texture.c

Modified: trunk/blender/source/blender/blenkernel/BKE_scene.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_scene.h	2010-06-27 05:20:45 UTC (rev 29728)
+++ trunk/blender/source/blender/blenkernel/BKE_scene.h	2010-06-27 05:39:55 UTC (rev 29729)
@@ -80,6 +80,8 @@
 /* checks for cycle, returns 1 if it's all OK */
 int scene_check_setscene(struct Scene *sce);
 
+float BKE_curframe(struct Scene *scene);
+
 void scene_update_tagged(struct Scene *sce);
 void scene_update_for_newframe(struct Scene *sce, unsigned int lay);
 

Modified: trunk/blender/source/blender/blenkernel/intern/action.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/action.c	2010-06-27 05:20:45 UTC (rev 29728)
+++ trunk/blender/source/blender/blenkernel/intern/action.c	2010-06-27 05:39:55 UTC (rev 29729)
@@ -1418,7 +1418,7 @@
 	bActionStrip *strip, *striplast=NULL, *stripfirst=NULL;
 	float striptime, frametime, length, actlength;
 	float blendfac, stripframe;
-	float scene_cfra= frame_to_float(scene, scene->r.cfra); 
+	float scene_cfra= BKE_curframe(scene);
 	int	doit, dostride;
 	
 	if(blocktype==ID_AR) {

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c	2010-06-27 05:20:45 UTC (rev 29728)
+++ trunk/blender/source/blender/blenkernel/intern/object.c	2010-06-27 05:39:55 UTC (rev 29729)
@@ -1605,20 +1605,8 @@
 
 /* there is also a timing calculation in drawobject() */
 
-float bluroffs= 0.0f, fieldoffs= 0.0f;
 int no_speed_curve= 0;
 
-/* ugly calls from render */
-void set_mblur_offs(float blur)
-{
-	bluroffs= blur;
-}
-
-void set_field_offs(float field)
-{
-	fieldoffs= field;
-}
-
 void disable_speed_curve(int val)
 {
 	no_speed_curve= val;
@@ -1628,11 +1616,9 @@
 /* ob can be NULL */
 float bsystem_time(struct Scene *scene, Object *ob, float cfra, float ofs)
 {
-	/* returns float ( see frame_to_float in ipo.c) */
+	/* returns float ( see BKE_curframe in scene.c) */
+	cfra += scene->r.subframe;
 	
-	/* bluroffs and fieldoffs are ugly globals that are set by render */
-	cfra+= bluroffs+fieldoffs;
-
 	/* global time */
 	if (scene)
 		cfra*= scene->r.framelen;	

Modified: trunk/blender/source/blender/blenkernel/intern/particle_system.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle_system.c	2010-06-27 05:20:45 UTC (rev 29728)
+++ trunk/blender/source/blender/blenkernel/intern/particle_system.c	2010-06-27 05:39:55 UTC (rev 29729)
@@ -3925,7 +3925,7 @@
 	if(!psys_check_enabled(ob, psys))
 		return;
 
-	cfra= bsystem_time(scene, ob, (float)scene->r.cfra, 0.0f);
+	cfra= BKE_curframe(scene);
 	sim.psmd= psys_get_modifier(ob, psys);
 
 	/* system was already updated from modifier stack */

Modified: trunk/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/scene.c	2010-06-27 05:20:45 UTC (rev 29728)
+++ trunk/blender/source/blender/blenkernel/intern/scene.c	2010-06-27 05:39:55 UTC (rev 29729)
@@ -879,22 +879,16 @@
 	return 1;
 }
 
-/* This (evil) function is needed to cope with two legacy Blender rendering features
-* mblur (motion blur that renders 'subframes' and blurs them together), and fields 
-* rendering. Thus, the use of ugly globals from object.c
-*/
-// BAD... EVIL... JUJU...!!!!
-// XXX moved here temporarily
-float frame_to_float (Scene *scene, int cfra)		/* see also bsystem_time in object.c */
+/* This function is needed to cope with fractional frames - including two Blender rendering features
+* mblur (motion blur that renders 'subframes' and blurs them together), and fields rendering. */
+
+/* see also bsystem_time in object.c */
+float BKE_curframe(Scene *scene)
 {
-	extern float bluroffs;	/* bad stuff borrowed from object.c */
-	extern float fieldoffs;
-	float ctime;
-	
-	ctime= (float)cfra;
-	ctime+= bluroffs+fieldoffs;
-	ctime*= scene->r.framelen;
-	
+	float ctime = scene->r.cfra;
+	ctime+= scene->r.subframe;
+	ctime*= scene->r.framelen;	
+
 	return ctime;
 }
 
@@ -929,7 +923,7 @@
 
 	/* recalc scene animation data here (for sequencer) */
 	{
-		float ctime = frame_to_float(scene, scene->r.cfra); 
+		float ctime = BKE_curframe(scene); 
 		AnimData *adt= BKE_animdata_from_id(&scene->id);
 
 		if(adt && (adt->recalc & ADT_RECALC_ANIM))
@@ -946,7 +940,7 @@
 /* applies changes right away, does all sets too */
 void scene_update_for_newframe(Scene *sce, unsigned int lay)
 {
-	float ctime = frame_to_float(sce, sce->r.cfra);
+	float ctime = BKE_curframe(sce);
 	Scene *sce_iter;
 	
 	/* clear animation overrides */

Modified: trunk/blender/source/blender/editors/animation/anim_ops.c
===================================================================
--- trunk/blender/source/blender/editors/animation/anim_ops.c	2010-06-27 05:20:45 UTC (rev 29728)
+++ trunk/blender/source/blender/editors/animation/anim_ops.c	2010-06-27 05:39:55 UTC (rev 29729)
@@ -69,6 +69,7 @@
 	/* set the new frame number */
 	CFRA= RNA_int_get(op->ptr, "frame");
 	FRAMENUMBER_MIN_CLAMP(CFRA);
+	SUBFRA = 0.f;
 	
 	/* do updates */
 	sound_seek_scene(C);

Modified: trunk/blender/source/blender/editors/include/ED_keyframing.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_keyframing.h	2010-06-27 05:20:45 UTC (rev 29728)
+++ trunk/blender/source/blender/editors/include/ED_keyframing.h	2010-06-27 05:39:55 UTC (rev 29729)
@@ -257,7 +257,7 @@
  * Checks whether a keyframe exists for the given ID-block one the given frame.
  *  - It is recommended to call this method over the other keyframe-checkers directly,
  * 	  in case some detail of the implementation changes...
- *	- frame: the value of this is quite often result of frame_to_float(CFRA)
+ *	- frame: the value of this is quite often result of BKE_curframe()
  */
 short id_frame_has_keyframe(struct ID *id, float frame, short filter);
 

Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c	2010-06-27 05:20:45 UTC (rev 29728)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c	2010-06-27 05:39:55 UTC (rev 29729)
@@ -1504,6 +1504,7 @@
 	delta = RNA_int_get(op->ptr, "delta");
 
 	CTX_data_scene(C)->r.cfra += delta;
+	CTX_data_scene(C)->r.subframe = 0.f;
 	
 	sound_seek_scene(C);
 

Modified: trunk/blender/source/blender/editors/space_action/action_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_action/action_edit.c	2010-06-27 05:20:45 UTC (rev 29728)
+++ trunk/blender/source/blender/editors/space_action/action_edit.c	2010-06-27 05:39:55 UTC (rev 29729)
@@ -1138,6 +1138,7 @@
 	if (ked.i1) {
 		Scene *scene= ac.scene;
 		CFRA= (int)floor((ked.f1 / ked.i1) + 0.5f);
+		SUBFRA= 0.f;
 	}
 	
 	/* set notifier that things have changed */

Modified: trunk/blender/source/blender/editors/space_graph/graph_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_graph/graph_edit.c	2010-06-27 05:20:45 UTC (rev 29728)
+++ trunk/blender/source/blender/editors/space_graph/graph_edit.c	2010-06-27 05:39:55 UTC (rev 29729)
@@ -1582,6 +1582,7 @@
 		
 		/* take the average values, rounding to the nearest int for the current frame */
 		CFRA= (int)floor((ked.f1 / ked.i1) + 0.5f);
+		SUBFRA= 0.f;
 		sipo->cursorVal= ked.f2 / (float)ked.i1;
 	}
 	

Modified: trunk/blender/source/blender/editors/space_graph/graph_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_graph/graph_ops.c	2010-06-27 05:20:45 UTC (rev 29728)
+++ trunk/blender/source/blender/editors/space_graph/graph_ops.c	2010-06-27 05:39:55 UTC (rev 29729)
@@ -71,6 +71,7 @@
 	 * NOTE: sync this part of the code with ANIM_OT_change_frame
 	 */
 	CFRA= RNA_int_get(op->ptr, "frame");
+	SUBFRA=0.f;
 	sound_seek_scene(C);
 	
 	/* set the cursor value */

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2010-06-27 05:20:45 UTC (rev 29728)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2010-06-27 05:39:55 UTC (rev 29729)
@@ -820,7 +820,7 @@
 		}
 		
 		/* colour depends on whether there is a keyframe */
-		if (id_frame_has_keyframe((ID *)ob, /*frame_to_float(scene, CFRA)*/(float)(CFRA), v3d->keyflags))
+		if (id_frame_has_keyframe((ID *)ob, /*BKE_curframe(scene)*/(float)(CFRA), v3d->keyflags))
 			UI_ThemeColor(TH_VERTEX_SELECT);
 		else
 			UI_ThemeColor(TH_TEXT_HI);

Modified: trunk/blender/source/blender/makesdna/DNA_scene_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_scene_types.h	2010-06-27 05:20:45 UTC (rev 29728)
+++ trunk/blender/source/blender/makesdna/DNA_scene_types.h	2010-06-27 05:39:55 UTC (rev 29729)
@@ -209,12 +209,12 @@
 	struct FFMpegCodecData ffcodecdata;
 	
 	int cfra, sfra, efra;	/* frames as in 'images' */
+	float subframe;			/* subframe offset from cfra, in 0.0-1.0 */
 	int psfra, pefra;		/* start+end frames of preview range */
 
 	int images, framapto;
 	short flag, threads;
 
-	float ctime;			/* use for calcutions */
 	float framelen, blurfac;
 
 	/** For UR edge rendering: give the edges this color */
@@ -1022,6 +1022,7 @@
 #define ID_NEW_US(a)	if( (a)->id.newid) {(a)= (void *)(a)->id.newid; (a)->id.us++;}
 #define ID_NEW_US2(a)	if( ((ID *)a)->newid) {(a)= ((ID *)a)->newid; ((ID *)a)->us++;}
 #define	CFRA			(scene->r.cfra)
+#define SUBFRA			(scene->r.subframe)
 #define	F_CFRA			((float)(scene->r.cfra))
 #define	SFRA			(scene->r.sfra)
 #define	EFRA			(scene->r.efra)

Modified: trunk/blender/source/blender/modifiers/intern/MOD_build.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_build.c	2010-06-27 05:20:45 UTC (rev 29728)
+++ trunk/blender/source/blender/modifiers/intern/MOD_build.c	2010-06-27 05:39:55 UTC (rev 29729)
@@ -41,6 +41,7 @@

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list