[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36386] trunk/blender/source/blender: use camera render argument to avoid temp overwriting the scene camera.

Campbell Barton ideasman42 at gmail.com
Sat Apr 30 07:42:39 CEST 2011


Revision: 36386
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36386
Author:   campbellbarton
Date:     2011-04-30 05:42:37 +0000 (Sat, 30 Apr 2011)
Log Message:
-----------
use camera render argument to avoid temp overwriting the scene camera.
also fix for mistake with rendering stars from previous commit.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_sequencer.h
    trunk/blender/source/blender/blenkernel/intern/sequencer.c
    trunk/blender/source/blender/editors/include/ED_view3d.h
    trunk/blender/source/blender/editors/render/render_opengl.c
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
    trunk/blender/source/blender/render/intern/source/convertblender.c
    trunk/blender/source/blender/windowmanager/intern/wm_files.c

Modified: trunk/blender/source/blender/blenkernel/BKE_sequencer.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2011-04-30 05:26:09 UTC (rev 36385)
+++ trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2011-04-30 05:42:37 UTC (rev 36386)
@@ -330,7 +330,7 @@
 struct Sequence *sequencer_add_movie_strip(struct bContext *C, ListBase *seqbasep, struct SeqLoadInfo *seq_load);
 
 /* view3d draw callback, run when not in background view */
-typedef struct ImBuf *(*SequencerDrawView)(struct Scene *, int, int, unsigned int, int, char[256]);
+typedef struct ImBuf *(*SequencerDrawView)(struct Scene *, struct Object *, int, int, unsigned int, int, char[256]);
 extern SequencerDrawView sequencer_view3d_cb;
 
 /* copy/paste */

Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c	2011-04-30 05:26:09 UTC (rev 36385)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c	2011-04-30 05:42:37 UTC (rev 36386)
@@ -1858,7 +1858,7 @@
 	ImBuf * ibuf = NULL;
 	float frame= seq->sfra + nr + seq->anim_startofs;
 	float oldcfra;
-	Object *oldcamera;
+	Object *camera;
 	ListBase oldmarkers;
 	
 	/* Old info:
@@ -1908,7 +1908,6 @@
 		return NULL;
 
 	oldcfra= seq->scene->r.cfra;
-	oldcamera= seq->scene->camera;
 
 	/* prevent eternal loop */
 	doseq= context.scene->r.scemode & R_DOSEQ;
@@ -1916,9 +1915,11 @@
 	
 	seq->scene->r.cfra= frame;
 	if(seq->scene_camera)	
-		seq->scene->camera= seq->scene_camera;
-	else	
+		camera= seq->scene_camera;
+	else {	
 		scene_camera_switch_update(seq->scene);
+		camera= seq->scene->camera;
+	}
 	
 #ifdef DURIAN_CAMERA_SWITCH
 	/* stooping to new low's in hackyness :( */
@@ -1934,7 +1935,7 @@
 
 		/* opengl offscreen render */
 		scene_update_for_newframe(context.bmain, seq->scene, seq->scene->lay);
-		ibuf= sequencer_view3d_cb(seq->scene, context.rectx, context.recty, IB_rect, context.scene->r.seq_prev_type, err_out);
+		ibuf= sequencer_view3d_cb(seq->scene, camera, context.rectx, context.recty, IB_rect, context.scene->r.seq_prev_type, err_out);
 		if(ibuf == NULL) {
 			fprintf(stderr, "seq_render_scene_strip_impl failed to get opengl buffer: %s\n", err_out);
 		}
@@ -1948,7 +1949,7 @@
 			if(re==NULL)
 				re= RE_NewRender(sce->id.name);
 			
-			RE_BlenderFrame(re, context.bmain, sce, NULL, NULL, sce->lay, frame, FALSE);
+			RE_BlenderFrame(re, context.bmain, sce, NULL, camera, sce->lay, frame, FALSE);
 
 			/* restore previous state after it was toggled on & off by RE_BlenderFrame */
 			G.rendering = rendering;
@@ -1982,7 +1983,7 @@
 	context.scene->r.scemode |= doseq;
 	
 	seq->scene->r.cfra = oldcfra;
-	seq->scene->camera= oldcamera;
+
 	if(frame != oldcfra)
 		scene_update_for_newframe(context.bmain, seq->scene, seq->scene->lay);
 	

Modified: trunk/blender/source/blender/editors/include/ED_view3d.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_view3d.h	2011-04-30 05:26:09 UTC (rev 36385)
+++ trunk/blender/source/blender/editors/include/ED_view3d.h	2011-04-30 05:42:37 UTC (rev 36386)
@@ -175,7 +175,7 @@
 	int winx, int winy, float viewmat[][4], float winmat[][4]);
 
 struct ImBuf *ED_view3d_draw_offscreen_imbuf(struct Scene *scene, struct View3D *v3d, struct ARegion *ar, int sizex, int sizey, unsigned int flag, char err_out[256]);
-struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(Scene *scene, int width, int height, unsigned int flag, int drawtype, char err_out[256]);
+struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(Scene *scene, struct Object *camera, int width, int height, unsigned int flag, int drawtype, char err_out[256]);
 
 
 Base *ED_view3d_give_base_under_cursor(struct bContext *C, const short mval[2]);

Modified: trunk/blender/source/blender/editors/render/render_opengl.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_opengl.c	2011-04-30 05:26:09 UTC (rev 36385)
+++ trunk/blender/source/blender/editors/render/render_opengl.c	2011-04-30 05:42:37 UTC (rev 36386)
@@ -192,7 +192,7 @@
 	else {
 		/* shouldnt suddenly give errors mid-render but possible */
 		char err_out[256]= "unknown";
-		ImBuf *ibuf_view= ED_view3d_draw_offscreen_imbuf_simple(scene, oglrender->sizex, oglrender->sizey, IB_rectfloat, OB_SOLID, err_out);
+		ImBuf *ibuf_view= ED_view3d_draw_offscreen_imbuf_simple(scene, scene->camera, oglrender->sizex, oglrender->sizey, IB_rectfloat, OB_SOLID, err_out);
 		camera= scene->camera;
 
 		if(ibuf_view) {

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2011-04-30 05:26:09 UTC (rev 36385)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2011-04-30 05:42:37 UTC (rev 36386)
@@ -2212,7 +2212,7 @@
 }
 
 /* creates own 3d views, used by the sequencer */
-ImBuf *ED_view3d_draw_offscreen_imbuf_simple(Scene *scene, int width, int height, unsigned int flag, int drawtype, char err_out[256])
+ImBuf *ED_view3d_draw_offscreen_imbuf_simple(Scene *scene, Object *camera, int width, int height, unsigned int flag, int drawtype, char err_out[256])
 {
 	View3D v3d= {NULL};
 	ARegion ar= {NULL};
@@ -2223,7 +2223,7 @@
 	ar.regiondata= &rv3d;
 	ar.regiontype= RGN_TYPE_WINDOW;
 
-	v3d.camera= scene->camera;
+	v3d.camera= camera;
 	v3d.lay= scene->lay;
 	v3d.drawtype = drawtype;
 	v3d.flag2 = V3D_RENDER_OVERRIDE;

Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c	2011-04-30 05:26:09 UTC (rev 36385)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c	2011-04-30 05:42:37 UTC (rev 36386)
@@ -164,7 +164,7 @@
 	World *wrld= NULL;
 	HaloRen *har;
 	Scene *scene;
-	Object *camera= re ? RE_GetCamera(re) : scene->camera;
+	Object *camera;
 	Camera *cam;
 	double dblrand, hlfrand;
 	float vec[4], fx, fy, fz;
@@ -181,7 +181,7 @@
 		scene= re->scene;
 		wrld= &(re->wrld);
 	}
-	
+
 	stargrid = wrld->stardist;			/* distance between stars */
 	maxrand = 2.0;						/* amount a star can be shifted (in grid units) */
 	maxjit = (wrld->starcolnoise);		/* amount a color is being shifted */
@@ -206,6 +206,8 @@
 		* y = -z | +z
 		*/
 
+	camera= re ? RE_GetCamera(re) : scene->camera;
+
 	if(camera==NULL || camera->type != OB_CAMERA)
 		return;
 

Modified: trunk/blender/source/blender/windowmanager/intern/wm_files.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_files.c	2011-04-30 05:26:09 UTC (rev 36385)
+++ trunk/blender/source/blender/windowmanager/intern/wm_files.c	2011-04-30 05:42:37 UTC (rev 36386)
@@ -602,7 +602,7 @@
 		return NULL;
 
 	/* gets scaled to BLEN_THUMB_SIZE */
-	ibuf= ED_view3d_draw_offscreen_imbuf_simple(scene, BLEN_THUMB_SIZE * 2, BLEN_THUMB_SIZE * 2, IB_rect, OB_SOLID, err_out);
+	ibuf= ED_view3d_draw_offscreen_imbuf_simple(scene, scene->camera, BLEN_THUMB_SIZE * 2, BLEN_THUMB_SIZE * 2, IB_rect, OB_SOLID, err_out);
 	
 	if(ibuf) {		
 		float aspect= (scene->r.xsch*scene->r.xasp) / (scene->r.ysch*scene->r.yasp);




More information about the Bf-blender-cvs mailing list