[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45510] trunk/blender: mango request: option to draw background in front of all objects in the viewport.

Sergey Sharybin sergey.vfx at gmail.com
Tue Apr 10 16:59:06 CEST 2012


Revision: 45510
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45510
Author:   nazgul
Date:     2012-04-10 14:59:06 +0000 (Tue, 10 Apr 2012)
Log Message:
-----------
mango request: option to draw background in front of all objects in the viewport.
Should be really handy for painting clean plates.

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_ui/space_view3d.py
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
    trunk/blender/source/blender/makesdna/DNA_view3d_types.h
    trunk/blender/source/blender/makesrna/intern/rna_space.c

Modified: trunk/blender/release/scripts/startup/bl_ui/space_view3d.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_view3d.py	2012-04-10 14:58:21 UTC (rev 45509)
+++ trunk/blender/release/scripts/startup/bl_ui/space_view3d.py	2012-04-10 14:59:06 UTC (rev 45510)
@@ -2478,10 +2478,12 @@
                     column.prop(bg.clip_user, "use_render_undistorted")
 
                 if has_bg:
-                    box.prop(bg, "opacity", slider=True)
+                    col = box.column()
+                    col.prop(bg, "show_on_foreground")
+                    col.prop(bg, "opacity", slider=True)
                     if bg.view_axis != 'CAMERA':
-                        box.prop(bg, "size")
-                        row = box.row(align=True)
+                        col.prop(bg, "size")
+                        row = col.row(align=True)
                         row.prop(bg, "offset_x", text="X")
                         row.prop(bg, "offset_y", text="Y")
 

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2012-04-10 14:58:21 UTC (rev 45509)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2012-04-10 14:59:06 UTC (rev 45510)
@@ -1515,7 +1515,7 @@
 
 /* ************************************************************* */
 
-static void draw_bgpic(Scene *scene, ARegion *ar, View3D *v3d)
+static void draw_bgpic(Scene *scene, ARegion *ar, View3D *v3d, int foreground)
 {
 	RegionView3D *rv3d = ar->regiondata;
 	BGpic *bgpic;
@@ -1524,10 +1524,13 @@
 	ImBuf *ibuf = NULL, *freeibuf;
 	float vec[4], fac, asp, zoomx, zoomy;
 	float x1, y1, x2, y2, cx, cy;
+	int fg_flag = foreground ? V3D_BGPIC_FOREGROUND : 0;
 
-
 	for (bgpic = v3d->bgpicbase.first; bgpic; bgpic = bgpic->next) {
 
+		if ((bgpic->flag & V3D_BGPIC_FOREGROUND) != fg_flag)
+			continue;
+
 		if ((bgpic->view == 0) || /* zero for any */
 		    (bgpic->view & (1 << rv3d->view)) || /* check agaist flags */
 		    (rv3d->persp == RV3D_CAMOB && bgpic->view == (1 << RV3D_VIEW_CAMERA)))
@@ -1680,6 +1683,26 @@
 	}
 }
 
+static void draw_bgpics(Scene *scene, ARegion *ar, View3D *v3d, int foreground)
+{
+	RegionView3D *rv3d = ar->regiondata;
+
+	if ((v3d->flag & V3D_DISPBGPICS) == 0)
+		return;
+
+	if (v3d->flag2 & V3D_RENDER_OVERRIDE)
+		return;
+
+	if ((rv3d->view == RV3D_VIEW_USER) || (rv3d->persp != RV3D_ORTHO)) {
+		if (rv3d->persp == RV3D_CAMOB) {
+			draw_bgpic(scene, ar, v3d, foreground);
+		}
+	}
+	else {
+			draw_bgpic(scene, ar, v3d, foreground);
+	}
+}
+
 /* ****************** View3d afterdraw *************** */
 
 typedef struct View3DAfter {
@@ -2750,13 +2773,16 @@
 
 	/* render result draw */
 	if (v3d->flag & V3D_DISPBGPICS)
-		draw_bgpic(scene, ar, v3d);
+		draw_bgpic(scene, ar, v3d, FALSE);
 	else
 		fdrawcheckerboard(0, 0, ar->winx, ar->winy);
 
 	type = rv3d->render_engine->type;
 	type->view_draw(rv3d->render_engine, C);
 
+	if (v3d->flag & V3D_DISPBGPICS)
+		draw_bgpic(scene, ar, v3d, TRUE);
+
 	return 1;
 }
 
@@ -2837,9 +2863,6 @@
 					              star_stuff_term_func);
 				}
 			}
-			if ((v3d->flag2 & V3D_RENDER_OVERRIDE) == 0) {
-				if (v3d->flag & V3D_DISPBGPICS) draw_bgpic(scene, ar, v3d);
-			}
 		}
 	}
 	else {
@@ -2851,13 +2874,11 @@
 			glLoadMatrixf(rv3d->winmat);
 			glMatrixMode(GL_MODELVIEW);
 			glLoadMatrixf(rv3d->viewmat);
-
-			if (v3d->flag & V3D_DISPBGPICS) {
-				draw_bgpic(scene, ar, v3d);
-			}
 		}
 	}
-	
+
+	draw_bgpics(scene, ar, v3d, FALSE);
+
 	if (rv3d->rflag & RV3D_CLIPPING)
 		ED_view3d_clipping_set(rv3d);
 
@@ -2915,6 +2936,8 @@
 		}
 	}
 
+	draw_bgpics(scene, ar, v3d, TRUE);
+
 //	REEB_draw();
 
 	if ((v3d->flag2 & V3D_RENDER_OVERRIDE) == 0) {

Modified: trunk/blender/source/blender/makesdna/DNA_view3d_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_view3d_types.h	2012-04-10 14:58:21 UTC (rev 45509)
+++ trunk/blender/source/blender/makesdna/DNA_view3d_types.h	2012-04-10 14:59:06 UTC (rev 45510)
@@ -314,6 +314,7 @@
 #define V3D_BGPIC_EXPANDED		2
 #define V3D_BGPIC_CAMERACLIP	4
 #define V3D_BGPIC_DISABLED		8
+#define V3D_BGPIC_FOREGROUND		16
 
 /* BGPic->source */
 /* may want to use 1 for select ?*/

Modified: trunk/blender/source/blender/makesrna/intern/rna_space.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_space.c	2012-04-10 14:58:21 UTC (rev 45509)
+++ trunk/blender/source/blender/makesrna/intern/rna_space.c	2012-04-10 14:59:06 UTC (rev 45510)
@@ -1350,6 +1350,11 @@
 	RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", V3D_BGPIC_DISABLED);
 	RNA_def_property_ui_text(prop, "Show Background Image", "Show this image as background");
 	RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
+
+	prop = RNA_def_property(srna, "show_on_foreground", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_BGPIC_FOREGROUND);
+	RNA_def_property_ui_text(prop, "Show On Foreground", "Show this image in fround of objects in viewport");
+	RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
 }
 
 static void rna_def_backgroundImages(BlenderRNA *brna, PropertyRNA *cprop)




More information about the Bf-blender-cvs mailing list