[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38483] branches/soc-2011-radish/source/ blender/editors: Started adding vertex masking--supports regular painting, and setting weight (Shift+K)

Jason Hays jason_hays22 at mymail.eku.edu
Mon Jul 18 19:38:17 CEST 2011


Revision: 38483
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38483
Author:   jason_hays22
Date:     2011-07-18 17:38:17 +0000 (Mon, 18 Jul 2011)
Log Message:
-----------
Started adding vertex masking--supports regular painting, and setting weight (Shift+K)

Removed my unreferenced vars

Modified Paths:
--------------
    branches/soc-2011-radish/source/blender/editors/armature/meshlaplacian.c
    branches/soc-2011-radish/source/blender/editors/mesh/editmesh_mods.c
    branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_image.c
    branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_intern.h
    branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c

Modified: branches/soc-2011-radish/source/blender/editors/armature/meshlaplacian.c
===================================================================
--- branches/soc-2011-radish/source/blender/editors/armature/meshlaplacian.c	2011-07-18 17:33:03 UTC (rev 38482)
+++ branches/soc-2011-radish/source/blender/editors/armature/meshlaplacian.c	2011-07-18 17:38:17 UTC (rev 38483)
@@ -657,22 +657,26 @@
 	int *vertsflipped = NULL, *mask= NULL;
 	int a, totface, j, bbone, firstsegment, lastsegment;
 
+	// Jason
+	MVert *mv = me->mvert;
+	int selectedVerts;
+
 	*err_str= NULL;
 
 	/* count triangles and create mask */
-	if(me->editflag & ME_EDIT_PAINT_MASK)
+	if((me->editflag & ME_EDIT_PAINT_MASK) || (selectedVerts=(me->editflag & ME_EDIT_VERT_SEL)))
 		mask= MEM_callocN(sizeof(int)*me->totvert, "heat_bone_weighting mask");
 
 	for(totface=0, a=0, mface=me->mface; a<me->totface; a++, mface++) {
 		totface++;
 		if(mface->v4) totface++;
-
-		if(mask && (mface->flag & ME_FACE_SEL)) {
-			mask[mface->v1]= 1;
-			mask[mface->v2]= 1;
-			mask[mface->v3]= 1;
+		// Jason (added selectedVerts content for vertex mask, they used to just equal 1)
+		if(mask && ((mface->flag & ME_FACE_SEL) || selectedVerts)) {
+			mask[mface->v1]= selectedVerts ? ((mv+mface->v1)->flag & 1): 1;
+			mask[mface->v2]= selectedVerts ? ((mv+mface->v2)->flag & 1): 1;
+			mask[mface->v3]= selectedVerts ? ((mv+mface->v3)->flag & 1): 1;
 			if(mface->v4)
-				mask[mface->v4]= 1;
+				mask[mface->v4]= selectedVerts ? ((mv+mface->v4)->flag & 1): 1;
 		}
 	}
 

Modified: branches/soc-2011-radish/source/blender/editors/mesh/editmesh_mods.c
===================================================================
--- branches/soc-2011-radish/source/blender/editors/mesh/editmesh_mods.c	2011-07-18 17:33:03 UTC (rev 38482)
+++ branches/soc-2011-radish/source/blender/editors/mesh/editmesh_mods.c	2011-07-18 17:38:17 UTC (rev 38483)
@@ -328,7 +328,6 @@
 	/* method in use for face selecting too */
 	if(vc->obedit==NULL) {
 		if(paint_facesel_test(vc->obact));
-		else if(paint_vertsel_test(vc->obact));// Jason, vertex selecting
 		else return 0;
 	}
 	else if(vc->v3d->drawtype<OB_SOLID || (vc->v3d->flag & V3D_ZBUF_SELECT)==0) return 0;

Modified: branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_image.c
===================================================================
--- branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_image.c	2011-07-18 17:33:03 UTC (rev 38482)
+++ branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_image.c	2011-07-18 17:38:17 UTC (rev 38483)
@@ -5400,6 +5400,11 @@
 {
 	return paint_vertsel_test(CTX_data_active_object(C));
 }
+// Jason
+int mask_paint_poll(bContext *C)
+{
+	return paint_facesel_test(CTX_data_active_object(C)) || paint_vertsel_test(CTX_data_active_object(C));
+}
 /* use project paint to re-apply an image */
 static int texture_paint_camera_project_exec(bContext *C, wmOperator *op)
 {

Modified: branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_intern.h
===================================================================
--- branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_intern.h	2011-07-18 17:33:03 UTC (rev 38482)
+++ branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_intern.h	2011-07-18 17:38:17 UTC (rev 38483)
@@ -124,6 +124,7 @@
 /* Jason */
 void PAINT_OT_vert_select_all(struct wmOperatorType *ot);
 int vert_paint_poll(struct bContext *C);
+int mask_paint_poll(struct bContext *C);
 
 int facemask_paint_poll(struct bContext *C);
 

Modified: branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c
===================================================================
--- branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c	2011-07-18 17:33:03 UTC (rev 38482)
+++ branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c	2011-07-18 17:38:17 UTC (rev 38483)
@@ -398,11 +398,15 @@
 	unsigned char i;
 	int vgroup_mirror= -1;
 	int selected;
-	
+	// Jason
+	int selectedVerts;
+
 	me= ob->data;
 	if(me==NULL || me->totface==0 || me->dvert==NULL || !me->mface) return;
 	
 	selected= (me->editflag & ME_EDIT_PAINT_MASK);
+	// Jason
+	selectedVerts = (me->editflag & ME_EDIT_VERT_SEL);
 
 	indexar= get_indexarray(me);
 
@@ -438,6 +442,11 @@
 			faceverts[3]= mface->v4;
 			for (i=0; i<3 || faceverts[i]; i++) {
 				if(!((me->dvert+faceverts[i])->flag)) {
+					// Jason
+					if(selectedVerts && !((me->mvert+faceverts[i])->flag & 1)) {
+						continue;
+					}
+
 					dw= defvert_verify_index(me->dvert+faceverts[i], vgroup);
 					if(dw) {
 						uw= defvert_verify_index(wp->wpaint_prev+faceverts[i], vgroup);
@@ -1278,7 +1287,7 @@
 	float totchange = 0.0f;
 	float totchange_allowed = 0.0f;
 	float left_over;
-	float change;
+
 	int total_valid = 0;
 	int total_changed = 0;
 	int i;
@@ -1441,8 +1450,6 @@
 	MDeformVert *dvert = me->dvert+index;
 	MDeformVert *dv = MEM_mallocN(sizeof (*(me->dvert+index)), "oldMDeformVert");
 
-	int i;
-
 	dv->dw= MEM_dupallocN(dvert->dw);
 	dv->flag = dvert->flag;
 	dv->totweight = dvert->totweight;
@@ -1888,6 +1895,9 @@
 	float alpha;
 	float mval[2], pressure;
 	
+	// Jason
+	int selectedVerts;
+
 	/* cannot paint if there is no stroke data */
 	if (wpd == NULL) {
 		// XXX: force a redraw here, since even though we can't paint, 
@@ -1935,6 +1945,8 @@
 			}
 		}
 	}
+	// Jason
+	selectedVerts = (me->editflag & ME_EDIT_VERT_SEL);
 			
 	if((me->editflag & ME_EDIT_PAINT_MASK) && me->mface) {
 		for(index=0; index<totindex; index++) {
@@ -1960,10 +1972,10 @@
 		if(indexar[index] && indexar[index]<=me->totface) {
 			MFace *mface= me->mface + (indexar[index]-1);
 					
-			(me->dvert+mface->v1)->flag= 1;
-			(me->dvert+mface->v2)->flag= 1;
-			(me->dvert+mface->v3)->flag= 1;
-			if(mface->v4) (me->dvert+mface->v4)->flag= 1;
+			(me->dvert+mface->v1)->flag= selectedVerts ? ((me->mvert+mface->v1)->flag & 1): 1;
+			(me->dvert+mface->v2)->flag= selectedVerts ? ((me->mvert+mface->v2)->flag & 1): 1;
+			(me->dvert+mface->v3)->flag= selectedVerts ? ((me->mvert+mface->v3)->flag & 1): 1;
+			if(mface->v4) (me->dvert+mface->v4)->flag= selectedVerts ? ((me->mvert+mface->v4)->flag & 1): 1;
 					
 			if(brush->vertexpaint_tool==VP_BLUR) {
 				MDeformWeight *dw, *(*dw_func)(MDeformVert *, const int);
@@ -2144,7 +2156,7 @@
 
 	/* api callbacks */
 	ot->exec= weight_paint_set_exec;
-	ot->poll= facemask_paint_poll;
+	ot->poll= mask_paint_poll; // Jason, it was facemask_paint_poll
 
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;




More information about the Bf-blender-cvs mailing list