[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25996] trunk/blender/source/blender/ editors/space_view3d/drawobject.c: weight paint without shading when in wire view.

Campbell Barton ideasman42 at gmail.com
Thu Jan 14 13:51:17 CET 2010


Revision: 25996
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25996
Author:   campbellbarton
Date:     2010-01-14 13:51:17 +0100 (Thu, 14 Jan 2010)

Log Message:
-----------
weight paint without shading when in wire view. use stipple wire to help show where verts are.
only way to do this previously was to have a UV layer, be in textured mode, not have any lights or textures and then set weight paint mode.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/drawobject.c

Modified: trunk/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawobject.c	2010-01-14 10:59:42 UTC (rev 25995)
+++ trunk/blender/source/blender/editors/space_view3d/drawobject.c	2010-01-14 12:51:17 UTC (rev 25996)
@@ -2360,44 +2360,70 @@
 		}
 	}
 	else if(dt==OB_SOLID) {
-		Paint *p;
+		if(ob==OBACT && ob && ob->mode & OB_MODE_WEIGHT_PAINT) {
+			/* weight paint in solid mode, special case. focus on making the weights clear
+			 * rather then the shading, this is also forced in wire view */
+			GPU_enable_material(0, NULL);
+			dm->drawMappedFaces(dm, wpaint__setSolidDrawOptions, me->mface, 1);
 
-		if((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !draw_wire && !ob->sculpt)
-			draw_mesh_object_outline(v3d, ob, dm);
+			bglPolygonOffset(rv3d->dist, 1.0);
+			glDepthMask(0);	// disable write in zbuffer, selected edge wires show better
 
-		glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, me->flag & ME_TWOSIDED );
+			glEnable(GL_BLEND);
+			glColor4ub(196, 196, 196, 196);
+			glEnable(GL_LINE_STIPPLE);
+			glLineStipple(1, 0x8888);
 
-		glEnable(GL_LIGHTING);
-		glFrontFace((ob->transflag&OB_NEG_SCALE)?GL_CW:GL_CCW);
+			dm->drawEdges(dm, 1);
 
-		if(ob->sculpt && (p=paint_get_active(scene))) {
-			float planes[4][4];
-			float (*fpl)[4] = NULL;
-			int fast= (p->flags & PAINT_FAST_NAVIGATE) && (rv3d->rflag & RV3D_NAVIGATING);
+			bglPolygonOffset(rv3d->dist, 0.0);
+			glDepthMask(1);
+			glDisable(GL_LINE_STIPPLE);
 
-			if(ob->sculpt->partial_redraw) {
-				sculpt_get_redraw_planes(planes, ar, rv3d, ob);
-				fpl = planes;
-				ob->sculpt->partial_redraw = 0;
-			}
+			GPU_disable_material();
 
-			dm->drawFacesSolid(dm, fpl, fast, GPU_enable_material);
+
 		}
-		else
-			dm->drawFacesSolid(dm, NULL, 0, GPU_enable_material);
+		else {
+			Paint *p;
 
-		GPU_disable_material();
+			if((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !draw_wire && !ob->sculpt)
+				draw_mesh_object_outline(v3d, ob, dm);
 
-		glFrontFace(GL_CCW);
-		glDisable(GL_LIGHTING);
+			glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, me->flag & ME_TWOSIDED );
 
-		if(base->flag & SELECT) {
-			UI_ThemeColor((ob==OBACT)?TH_ACTIVE:TH_SELECT);
-		} else {
-			UI_ThemeColor(TH_WIRE);
+			glEnable(GL_LIGHTING);
+			glFrontFace((ob->transflag&OB_NEG_SCALE)?GL_CW:GL_CCW);
+
+			if(ob->sculpt && (p=paint_get_active(scene))) {
+				float planes[4][4];
+				float (*fpl)[4] = NULL;
+				int fast= (p->flags & PAINT_FAST_NAVIGATE) && (rv3d->rflag & RV3D_NAVIGATING);
+
+				if(ob->sculpt->partial_redraw) {
+					sculpt_get_redraw_planes(planes, ar, rv3d, ob);
+					fpl = planes;
+					ob->sculpt->partial_redraw = 0;
+				}
+
+				dm->drawFacesSolid(dm, fpl, fast, GPU_enable_material);
+			}
+			else
+				dm->drawFacesSolid(dm, NULL, 0, GPU_enable_material);
+
+			GPU_disable_material();
+
+			glFrontFace(GL_CCW);
+			glDisable(GL_LIGHTING);
+
+			if(base->flag & SELECT) {
+				UI_ThemeColor((ob==OBACT)?TH_ACTIVE:TH_SELECT);
+			} else {
+				UI_ThemeColor(TH_WIRE);
+			}
+			if(!ob->sculpt)
+				dm->drawLooseEdges(dm);
 		}
-		if(!ob->sculpt)
-			dm->drawLooseEdges(dm);
 	}
 	else if(dt==OB_SHADED) {
 		int do_draw= 1;	/* to resolve all G.f settings below... */
@@ -5298,10 +5324,14 @@
 
 			if(ob->mode & OB_MODE_EDIT);
 			else {
-				if(dt<OB_SOLID)
+				if(dt<OB_SOLID) {
 					zbufoff= 1;
+					dt= OB_SOLID;
+				}
+				else {
+					dt= OB_SHADED;
+				}
 
-				dt= OB_SHADED;
 				glEnable(GL_DEPTH_TEST);
 			}
 		}





More information about the Bf-blender-cvs mailing list