[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