[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37105] branches/soc-2011-radish: Made misc vgroups unable to change bone groups' weights when auto normalize is active

Jason Hays jason_hays22 at mymail.eku.edu
Thu Jun 2 19:28:04 CEST 2011


Revision: 37105
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37105
Author:   jason_hays22
Date:     2011-06-02 17:28:04 +0000 (Thu, 02 Jun 2011)
Log Message:
-----------
Made misc vgroups unable to change bone groups' weights when auto normalize is active

Added buttons for locking all vgroups, unlocking all vgroups, and inverting the locks of all vgroups

Modified Paths:
--------------
    branches/soc-2011-radish/release/scripts/startup/bl_ui/properties_data_mesh.py
    branches/soc-2011-radish/source/blender/editors/object/object_intern.h
    branches/soc-2011-radish/source/blender/editors/object/object_ops.c
    branches/soc-2011-radish/source/blender/editors/object/object_vgroup.c
    branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c

Modified: branches/soc-2011-radish/release/scripts/startup/bl_ui/properties_data_mesh.py
===================================================================
--- branches/soc-2011-radish/release/scripts/startup/bl_ui/properties_data_mesh.py	2011-06-02 17:19:07 UTC (rev 37104)
+++ branches/soc-2011-radish/release/scripts/startup/bl_ui/properties_data_mesh.py	2011-06-02 17:28:04 UTC (rev 37105)
@@ -139,6 +139,7 @@
         col = row.column(align=True)
         # Jason was here #
         col.prop(group, "flag")
+        
         col.operator("object.vertex_group_add", icon='ZOOMIN', text="")
         col.operator("object.vertex_group_remove", icon='ZOOMOUT', text="")
         col.menu("MESH_MT_vertex_group_specials", icon='DOWNARROW_HLT', text="")
@@ -149,6 +150,12 @@
         if group:
             row = layout.row()
             row.prop(group, "name")
+        #Jason was here
+        row = layout.row()
+        sub = row.row(align=True)
+        sub.operator("object.vertex_group_lock_all", text="Lock All")
+        sub.operator("object.vertex_group_invert_locks", text="Invert Locks")
+        sub.operator("object.vertex_group_unlock_all", text="Unlock All")
 
         if ob.mode == 'EDIT' and len(ob.vertex_groups) > 0:
             row = layout.row()

Modified: branches/soc-2011-radish/source/blender/editors/object/object_intern.h
===================================================================
--- branches/soc-2011-radish/source/blender/editors/object/object_intern.h	2011-06-02 17:19:07 UTC (rev 37104)
+++ branches/soc-2011-radish/source/blender/editors/object/object_intern.h	2011-06-02 17:28:04 UTC (rev 37105)
@@ -199,6 +199,11 @@
 void OBJECT_OT_vertex_group_normalize(struct wmOperatorType *ot);
 void OBJECT_OT_vertex_group_normalize_all(struct wmOperatorType *ot);
 void OBJECT_OT_vertex_group_levels(struct wmOperatorType *ot);
+/* Jason was here */
+void OBJECT_OT_vertex_group_lock_all(struct wmOperatorType *ot);
+void OBJECT_OT_vertex_group_invert_locks(struct wmOperatorType *ot);
+void OBJECT_OT_vertex_group_unlock_all(struct wmOperatorType *ot);
+
 void OBJECT_OT_vertex_group_invert(struct wmOperatorType *ot);
 void OBJECT_OT_vertex_group_blend(struct wmOperatorType *ot);
 void OBJECT_OT_vertex_group_clean(struct wmOperatorType *ot);

Modified: branches/soc-2011-radish/source/blender/editors/object/object_ops.c
===================================================================
--- branches/soc-2011-radish/source/blender/editors/object/object_ops.c	2011-06-02 17:19:07 UTC (rev 37104)
+++ branches/soc-2011-radish/source/blender/editors/object/object_ops.c	2011-06-02 17:28:04 UTC (rev 37105)
@@ -173,6 +173,11 @@
 	WM_operatortype_append(OBJECT_OT_vertex_group_copy);
 	WM_operatortype_append(OBJECT_OT_vertex_group_normalize);
 	WM_operatortype_append(OBJECT_OT_vertex_group_normalize_all);
+	/* Jason was here */
+	WM_operatortype_append(OBJECT_OT_vertex_group_invert_locks);
+	WM_operatortype_append(OBJECT_OT_vertex_group_lock_all);
+	WM_operatortype_append(OBJECT_OT_vertex_group_unlock_all);
+
 	WM_operatortype_append(OBJECT_OT_vertex_group_invert);
 	WM_operatortype_append(OBJECT_OT_vertex_group_levels);
 	WM_operatortype_append(OBJECT_OT_vertex_group_blend);

Modified: branches/soc-2011-radish/source/blender/editors/object/object_vgroup.c
===================================================================
--- branches/soc-2011-radish/source/blender/editors/object/object_vgroup.c	2011-06-02 17:19:07 UTC (rev 37104)
+++ branches/soc-2011-radish/source/blender/editors/object/object_vgroup.c	2011-06-02 17:28:04 UTC (rev 37105)
@@ -829,8 +829,34 @@
 
 	if (dvert_array) MEM_freeN(dvert_array);
 }
+/* Jason was here */
+static void vgroup_invert_locks(Object *ob)
+{
+	bDeformGroup *dg = ob->defbase.first;
+	while(dg) {
+		dg->flag = !dg->flag;
+		dg = dg->next;
+	}
+}
+/* Jason was here */
+static void vgroup_lock_all(Object *ob)
+{
+	bDeformGroup *dg = ob->defbase.first;
+	while(dg) {
+		dg->flag = TRUE;
+		dg = dg->next;
+	}
+}
+/* Jason was here */
+static void vgroup_unlock_all(Object *ob)
+{
+	bDeformGroup *dg = ob->defbase.first;
+	while(dg) {
+		dg->flag = FALSE;
+		dg = dg->next;
+	}
+}
 
-
 static void vgroup_invert(Object *ob, int auto_assign, int auto_remove)
 {
 	bDeformGroup *dg;
@@ -1746,7 +1772,87 @@
 
 	RNA_def_boolean(ot->srna, "lock_active", TRUE, "Lock Active", "Keep the values of the active group while normalizing others.");
 }
+/* Jason was here */
+static int vertex_group_invert_locks_exec(bContext *C, wmOperator *op)
+{
+	Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
 
+	vgroup_invert_locks(ob);
+	// not sure what these 3 do yet!
+	DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
+	WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+	WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data);
+
+	return OPERATOR_FINISHED;
+}
+/* Jason was here */
+void OBJECT_OT_vertex_group_invert_locks(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name= "Invert All Vertex Group Locks";
+	ot->idname= "OBJECT_OT_vertex_group_invert_locks";
+
+	/* api callbacks */
+	ot->poll= vertex_group_poll;
+	ot->exec= vertex_group_invert_locks_exec;
+
+	/* flags */
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+/* Jason was here */
+static int vertex_group_lock_all_exec(bContext *C, wmOperator *op)
+{
+	Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
+
+	vgroup_lock_all(ob);
+	// not sure what these 3 do yet!
+	DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
+	WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+	WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data);
+
+	return OPERATOR_FINISHED;
+}
+/* Jason was here */
+void OBJECT_OT_vertex_group_lock_all(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name= "Turn on all Vertex Group Locks";
+	ot->idname= "OBJECT_OT_vertex_group_lock_all";
+
+	/* api callbacks */
+	ot->poll= vertex_group_poll;
+	ot->exec= vertex_group_lock_all_exec;
+
+	/* flags */
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+/* Jason was here */
+static int vertex_group_unlock_all_exec(bContext *C, wmOperator *op)
+{
+	Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
+
+	vgroup_unlock_all(ob);
+	// not sure what these 3 do yet!
+	DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
+	WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+	WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data);
+
+	return OPERATOR_FINISHED;
+}
+/* Jason was here */
+void OBJECT_OT_vertex_group_unlock_all(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name= "Turn off all Vertex Group Locks";
+	ot->idname= "OBJECT_OT_vertex_group_unlock_all";
+
+	/* api callbacks */
+	ot->poll= vertex_group_poll;
+	ot->exec= vertex_group_unlock_all_exec;
+
+	/* flags */
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
 static int vertex_group_invert_exec(bContext *C, wmOperator *op)
 {
 	Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;

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-06-02 17:19:07 UTC (rev 37104)
+++ branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c	2011-06-02 17:28:04 UTC (rev 37105)
@@ -1230,6 +1230,7 @@
 	//printf("\n");
 	if(groups_left_that_can_change > 0) {
 		groups_currently_left = groups_left_that_can_change;
+		change = change_left/groups_left_that_can_change;
 		do {
 			was_a_change = FALSE;
 			for(i = 0; i < dvert->totweight; i++) {
@@ -1238,12 +1239,9 @@
 					continue;
 				}
 
-				change = change_left/groups_left_that_can_change;
-
 				dw->weight += change;
 				change_left -= change;
 				//printf("group %d, change: %f weight: %f groups left: %d\n", dw->def_nr, change, dw->weight, groups_left_that_can_change);
-
 				if(dw->weight >= 1.0f) {
 
 					change_left += dw->weight-1.0f;
@@ -1277,10 +1275,11 @@
 			dw->weight = oldw;
 		} else if(bone_groups[dw->def_nr]) {
 			redistribute_weight_change(me->dvert+index, dw, oldw, flags, defcnt, bone_groups);
-			//do_weight_paint_auto_normalize(me->dvert+index, vgroup, validmap);//do_wp_auto_normalize_locked_groups(me, me->dvert, validmap);
+			do_weight_paint_auto_normalize(me->dvert+index, vgroup, validmap);//do_wp_auto_normalize_locked_groups(me, me->dvert, validmap);
 		}
-	} //else if(bone_groups[dw->def_nr]) // should it be disabled for the active group if it is not a bone group
+	} else if(bone_groups[dw->def_nr]) {// disable auto normalize if the active group is not a bone group
 		do_weight_paint_auto_normalize(me->dvert+index, vgroup, validmap);
+	}
 	
 }
 // Jason




More information about the Bf-blender-cvs mailing list