[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