Commit: 9b3fa880a5d567a45215c464764f089aa3e77347
Author: Campbell Barton
Date:   Fri Aug 28 01:25:23 2015 +1000
Branches: master
https://developer.blender.org/rB9b3fa880a5d567a45215c464764f089aa3e77347

Support subframe evaluation for scene strips

Useful when used with the speed effect.

===================================================================

M       source/blender/blenkernel/intern/sequencer.c

===================================================================

diff --git a/source/blender/blenkernel/intern/sequencer.c 
b/source/blender/blenkernel/intern/sequencer.c
index aa0e131..08e73b6 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -3083,8 +3083,8 @@ static ImBuf *seq_render_mask_strip(const SeqRenderData 
*context, Sequence *seq,
 static ImBuf *seq_render_scene_strip(const SeqRenderData *context, Sequence 
*seq, float nr, float cfra)
 {
        ImBuf *ibuf = NULL;
-       float frame;
-       float oldcfra;
+       double frame;
+       float oldcfra, oldsubframe;
        Object *camera;
        ListBase oldmarkers;
        
@@ -3137,13 +3137,15 @@ static ImBuf *seq_render_scene_strip(const 
SeqRenderData *context, Sequence *seq
        }
 
        scene = seq->scene;
-       frame = scene->r.sfra + nr + seq->anim_startofs;
+       frame = (double)scene->r.sfra + (double)nr + (double)seq->anim_startofs;
 
        // have_seq = (scene->r.scemode & R_DOSEQ) && scene->ed && 
scene->ed->seqbase.first);  /* UNUSED */
        have_comp = (scene->r.scemode & R_DOCOMP) && scene->use_nodes && 
scene->nodetree;
 
        oldcfra = scene->r.cfra;
-       scene->r.cfra = frame;
+       oldsubframe = scene->r.subframe;
+
+       BKE_scene_frame_set(scene, frame);
 
        if (seq->scene_camera) {
                camera = seq->scene_camera;
@@ -3159,6 +3161,7 @@ static ImBuf *seq_render_scene_strip(const SeqRenderData 
*context, Sequence *seq
 
        if (have_comp == false && camera == NULL) {
                scene->r.cfra = oldcfra;
+               scene->r.subframe = oldsubframe;
                return NULL;
        }
 
@@ -3273,6 +3276,7 @@ static ImBuf *seq_render_scene_strip(const SeqRenderData 
*context, Sequence *seq
        scene->r.scemode |= do_seq;
        
        scene->r.cfra = oldcfra;
+       scene->r.subframe = oldsubframe;
 
        if (frame != oldcfra) {
                BKE_scene_update_for_newframe(context->eval_ctx, 
context->bmain, scene, scene->lay);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to