== Sequencer ==
Broad back SCENE-rendering. (Hopefully did everything right) Still missing: UI part (one can't select a scene, neither on add nor in N-keys dialog...)
This commit is contained in:
@@ -47,6 +47,7 @@
|
|||||||
#include "BKE_fcurve.h"
|
#include "BKE_fcurve.h"
|
||||||
#include "BKE_utildefines.h"
|
#include "BKE_utildefines.h"
|
||||||
#include "RNA_access.h"
|
#include "RNA_access.h"
|
||||||
|
#include "RE_pipeline.h"
|
||||||
|
|
||||||
#include "BLI_blenlib.h"
|
#include "BLI_blenlib.h"
|
||||||
#include "BLI_util.h"
|
#include "BLI_util.h"
|
||||||
@@ -2006,14 +2007,9 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if(seq->type == SEQ_SCENE) { // scene can be NULL after deletions
|
} else if(seq->type == SEQ_SCENE) { // scene can be NULL after deletions
|
||||||
#if 0
|
|
||||||
/* XXX move entirely to render? */
|
|
||||||
int oldcfra = CFRA;
|
|
||||||
Sequence * oldseq = get_last_seq();
|
|
||||||
Scene *sce= seq->scene, *oldsce= scene;
|
Scene *sce= seq->scene, *oldsce= scene;
|
||||||
Render *re;
|
Render *re;
|
||||||
RenderResult rres;
|
RenderResult rres;
|
||||||
int doseq, rendering= G.rendering;
|
|
||||||
char scenename[64];
|
char scenename[64];
|
||||||
int have_seq= (sce->r.scemode & R_DOSEQ) && sce->ed && sce->ed->seqbase.first;
|
int have_seq= (sce->r.scemode & R_DOSEQ) && sce->ed && sce->ed->seqbase.first;
|
||||||
int sce_valid =sce && (sce->camera || have_seq);
|
int sce_valid =sce && (sce->camera || have_seq);
|
||||||
@@ -2035,18 +2031,24 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
|
|||||||
if (!sce_valid) {
|
if (!sce_valid) {
|
||||||
se->ok = STRIPELEM_FAILED;
|
se->ok = STRIPELEM_FAILED;
|
||||||
} else if (se->ibuf==NULL && sce_valid) {
|
} else if (se->ibuf==NULL && sce_valid) {
|
||||||
/* no need to display a waitcursor on sequencer
|
int oldcfra;
|
||||||
scene strips */
|
|
||||||
if (!have_seq)
|
|
||||||
waitcursor(1);
|
|
||||||
|
|
||||||
/* Hack! This function can be called from do_render_seq(), in that case
|
/* Hack! This function can be called from do_render_seq(), in that case
|
||||||
the seq->scene can already have a Render initialized with same name,
|
the seq->scene can already have a Render initialized with same name,
|
||||||
so we have to use a default name. (compositor uses scene name to
|
so we have to use a default name. (compositor uses scene name to
|
||||||
find render).
|
find render).
|
||||||
However, when called from within the UI (image preview in sequencer)
|
However, when called from within the UI (image preview in sequencer)
|
||||||
we do want to use scene Render, that way the render result is defined
|
we do want to use scene Render, that way the render result is defined
|
||||||
for display in render/imagewindow */
|
for display in render/imagewindow
|
||||||
|
|
||||||
|
Hmm, don't see, why we can't do that all the time,
|
||||||
|
and since G.rendering is uhm, gone... (Peter)
|
||||||
|
*/
|
||||||
|
|
||||||
|
int rendering = 1;
|
||||||
|
int doseq;
|
||||||
|
|
||||||
|
oldcfra = seq->scene->r.cfra;
|
||||||
|
|
||||||
if(rendering) {
|
if(rendering) {
|
||||||
BLI_strncpy(scenename, sce->id.name+2, 64);
|
BLI_strncpy(scenename, sce->id.name+2, 64);
|
||||||
strcpy(sce->id.name+2, " do_build_seq_ibuf");
|
strcpy(sce->id.name+2, " do_build_seq_ibuf");
|
||||||
@@ -2057,16 +2059,9 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
|
|||||||
doseq= scene->r.scemode & R_DOSEQ;
|
doseq= scene->r.scemode & R_DOSEQ;
|
||||||
scene->r.scemode &= ~R_DOSEQ;
|
scene->r.scemode &= ~R_DOSEQ;
|
||||||
|
|
||||||
BIF_init_render_callbacks(re, 0); /* 0= no display callbacks */
|
|
||||||
|
|
||||||
/* XXX hrms, set_scene still needed? work on that... */
|
|
||||||
if(sce!=oldsce) set_scene_bg(sce);
|
|
||||||
RE_BlenderFrame(re, sce,
|
RE_BlenderFrame(re, sce,
|
||||||
seq->sfra+se->nr+seq->anim_startofs);
|
seq->sfra+se->nr+seq->anim_startofs);
|
||||||
if(sce!=oldsce) set_scene_bg(oldsce);
|
|
||||||
|
|
||||||
/* UGLY WARNING, it is set to zero in RE_BlenderFrame */
|
|
||||||
G.rendering= rendering;
|
|
||||||
if(rendering)
|
if(rendering)
|
||||||
BLI_strncpy(sce->id.name+2, scenename, 64);
|
BLI_strncpy(sce->id.name+2, scenename, 64);
|
||||||
|
|
||||||
@@ -2086,20 +2081,12 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
|
|||||||
|
|
||||||
RE_ReleaseResultImage(re);
|
RE_ReleaseResultImage(re);
|
||||||
|
|
||||||
BIF_end_render_callbacks();
|
// BIF_end_render_callbacks();
|
||||||
|
|
||||||
/* restore */
|
/* restore */
|
||||||
scene->r.scemode |= doseq;
|
scene->r.scemode |= doseq;
|
||||||
|
|
||||||
// XXX
|
seq->scene->r.cfra = oldcfra;
|
||||||
#if 0
|
|
||||||
if((G.f & G_PLAYANIM)==0 /* bad, is set on do_render_seq */
|
|
||||||
&& !have_seq
|
|
||||||
&& !build_proxy_run)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
CFRA = oldcfra;
|
|
||||||
set_last_seq(oldseq);
|
|
||||||
|
|
||||||
copy_to_ibuf_still(seq, se);
|
copy_to_ibuf_still(seq, se);
|
||||||
|
|
||||||
@@ -2112,7 +2099,6 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
if (!build_proxy_run) {
|
if (!build_proxy_run) {
|
||||||
if (se->ibuf && use_limiter) {
|
if (se->ibuf && use_limiter) {
|
||||||
|
|||||||
Reference in New Issue
Block a user