[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40463] branches/bmesh/blender: svn merge ^/trunk/blender -r40367:40368 --- raddish weight paint merge

Campbell Barton ideasman42 at gmail.com
Thu Sep 22 18:09:29 CEST 2011


Revision: 40463
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40463
Author:   campbellbarton
Date:     2011-09-22 16:09:27 +0000 (Thu, 22 Sep 2011)
Log Message:
-----------
svn merge ^/trunk/blender -r40367:40368  --- raddish weight paint merge

Revision Links:
--------------
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40367

Modified Paths:
--------------
    branches/bmesh/blender/build_files/cmake/config/blender_lite.cmake
    branches/bmesh/blender/release/scripts/startup/bl_ui/properties_data_mesh.py
    branches/bmesh/blender/release/scripts/startup/bl_ui/space_view3d.py
    branches/bmesh/blender/release/scripts/startup/bl_ui/space_view3d_toolbar.py
    branches/bmesh/blender/source/blender/blenkernel/BKE_armature.h
    branches/bmesh/blender/source/blender/blenkernel/BKE_paint.h
    branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/armature.c
    branches/bmesh/blender/source/blender/blenkernel/intern/paint.c
    branches/bmesh/blender/source/blender/editors/armature/editarmature.c
    branches/bmesh/blender/source/blender/editors/armature/meshlaplacian.c
    branches/bmesh/blender/source/blender/editors/include/ED_mesh.h
    branches/bmesh/blender/source/blender/editors/include/ED_view3d.h
    branches/bmesh/blender/source/blender/editors/interface/interface_templates.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_select.c
    branches/bmesh/blender/source/blender/editors/mesh/editface.c
    branches/bmesh/blender/source/blender/editors/object/object_intern.h
    branches/bmesh/blender/source/blender/editors/object/object_ops.c
    branches/bmesh/blender/source/blender/editors/object/object_vgroup.c
    branches/bmesh/blender/source/blender/editors/sculpt_paint/paint_image.c
    branches/bmesh/blender/source/blender/editors/sculpt_paint/paint_intern.h
    branches/bmesh/blender/source/blender/editors/sculpt_paint/paint_ops.c
    branches/bmesh/blender/source/blender/editors/sculpt_paint/paint_utils.c
    branches/bmesh/blender/source/blender/editors/sculpt_paint/paint_vertex.c
    branches/bmesh/blender/source/blender/editors/space_view3d/drawmesh.c
    branches/bmesh/blender/source/blender/editors/space_view3d/drawobject.c
    branches/bmesh/blender/source/blender/editors/space_view3d/space_view3d.c
    branches/bmesh/blender/source/blender/editors/space_view3d/view3d_header.c
    branches/bmesh/blender/source/blender/editors/space_view3d/view3d_select.c
    branches/bmesh/blender/source/blender/makesdna/DNA_mesh_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_object_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_scene_types.h
    branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh.c
    branches/bmesh/blender/source/blender/makesrna/intern/rna_object.c
    branches/bmesh/blender/source/blender/makesrna/intern/rna_scene.c

Property Changed:
----------------
    branches/bmesh/blender/
    branches/bmesh/blender/release/
    branches/bmesh/blender/source/blender/editors/space_outliner/


Property changes on: branches/bmesh/blender
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk/blender:39992-40367
   + /trunk/blender:39992-40368

Modified: branches/bmesh/blender/build_files/cmake/config/blender_lite.cmake
===================================================================
--- branches/bmesh/blender/build_files/cmake/config/blender_lite.cmake	2011-09-22 15:46:43 UTC (rev 40462)
+++ branches/bmesh/blender/build_files/cmake/config/blender_lite.cmake	2011-09-22 16:09:27 UTC (rev 40463)
@@ -1,4 +1,4 @@
-# turn everything OFF except for python which defaults to ON
+# turn everything OFF CACHE FORCE BOOL) except for python which defaults to ON
 # and is needed for the UI
 #
 # Example usage:


Property changes on: branches/bmesh/blender/release
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk/blender/release:31524-40367
   + /trunk/blender/release:31524-40368

Modified: branches/bmesh/blender/release/scripts/startup/bl_ui/properties_data_mesh.py
===================================================================
--- branches/bmesh/blender/release/scripts/startup/bl_ui/properties_data_mesh.py	2011-09-22 15:46:43 UTC (rev 40462)
+++ branches/bmesh/blender/release/scripts/startup/bl_ui/properties_data_mesh.py	2011-09-22 16:09:27 UTC (rev 40463)
@@ -35,6 +35,10 @@
         layout.operator("object.vertex_group_copy_to_selected", icon='LINK_AREA')
         layout.operator("object.vertex_group_mirror", icon='ARROW_LEFTRIGHT')
         layout.operator("object.vertex_group_remove", icon='X', text="Delete All").all = True
+        layout.separator()
+        layout.operator("object.vertex_group_lock", icon='LOCK', text="Lock All").action = 'SELECT'
+        layout.operator("object.vertex_group_lock", icon='UNLOCK', text="UnLock All").action = 'DESELECT'
+        layout.operator("object.vertex_group_lock", icon='LOCK', text="Lock Invert All").action = 'INVERT'
 
 
 class MESH_MT_shape_key_specials(Menu):

Modified: branches/bmesh/blender/release/scripts/startup/bl_ui/space_view3d.py
===================================================================
--- branches/bmesh/blender/release/scripts/startup/bl_ui/space_view3d.py	2011-09-22 15:46:43 UTC (rev 40462)
+++ branches/bmesh/blender/release/scripts/startup/bl_ui/space_view3d.py	2011-09-22 16:09:27 UTC (rev 40463)
@@ -1071,6 +1071,7 @@
         layout.operator("object.vertex_group_invert", text="Invert")
         layout.operator("object.vertex_group_clean", text="Clean")
         layout.operator("object.vertex_group_levels", text="Levels")
+        layout.operator("object.vertex_group_fix", text="Fix Deforms")
 
         layout.separator()
 

Modified: branches/bmesh/blender/release/scripts/startup/bl_ui/space_view3d_toolbar.py
===================================================================
--- branches/bmesh/blender/release/scripts/startup/bl_ui/space_view3d_toolbar.py	2011-09-22 15:46:43 UTC (rev 40462)
+++ branches/bmesh/blender/release/scripts/startup/bl_ui/space_view3d_toolbar.py	2011-09-22 16:09:27 UTC (rev 40463)
@@ -646,6 +646,7 @@
         elif context.weight_paint_object and brush:
             layout.prop(context.tool_settings, "vertex_group_weight", text="Weight", slider=True)
             layout.prop(context.tool_settings, "use_auto_normalize", text="Auto Normalize")
+            layout.prop(context.tool_settings, "use_multipaint", text="Multi-Paint")
 
             col = layout.column()
 
@@ -1058,6 +1059,7 @@
         col.operator("object.vertex_group_invert", text="Invert")
         col.operator("object.vertex_group_clean", text="Clean")
         col.operator("object.vertex_group_levels", text="Levels")
+        col.operator("object.vertex_group_fix", text="Fix Deforms")
 
 
 class VIEW3D_PT_tools_weightpaint_options(View3DPanel, Panel):

Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_armature.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_armature.h	2011-09-22 15:46:43 UTC (rev 40462)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_armature.h	2011-09-22 16:09:27 UTC (rev 40463)
@@ -100,6 +100,8 @@
 void vec_roll_to_mat3(float *vec, float roll, float mat[][3]);
 void mat3_to_vec_roll(float mat[][3], float *vec, float *roll);
 
+int get_selected_defgroups(struct Object *ob, char *defbase_sel, int defbase_len);
+
 /* Common Conversions Between Co-ordinate Spaces */
 void armature_mat_world_to_pose(struct Object *ob, float inmat[][4], float outmat[][4]);
 void armature_loc_world_to_pose(struct Object *ob, float *inloc, float *outloc);

Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_paint.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_paint.h	2011-09-22 15:46:43 UTC (rev 40462)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_paint.h	2011-09-22 16:09:27 UTC (rev 40463)
@@ -59,6 +59,7 @@
  * Texture paint could be removed since selected faces are not used
  * however hiding faces is useful */
 int paint_facesel_test(struct Object *ob);
+int paint_vertsel_test(struct Object *ob);
 
 /* Session data (mode-specific) */
 

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c	2011-09-22 15:46:43 UTC (rev 40462)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c	2011-09-22 16:09:27 UTC (rev 40463)
@@ -40,6 +40,7 @@
 #include "DNA_cloth_types.h"
 #include "DNA_key_types.h"
 #include "DNA_meshdata_types.h"
+#include "DNA_armature_types.h"
 #include "DNA_object_types.h"
 #include "DNA_scene_types.h" // N_T
 
@@ -60,6 +61,7 @@
 #include "BKE_paint.h"
 #include "BKE_texture.h"
 #include "BKE_multires.h"
+#include "BKE_armature.h"
 #include "BKE_particle.h"
 #include "BKE_tessmesh.h"
 #include "BKE_bvhutils.h"
@@ -858,20 +860,64 @@
 	}
 }
 
-static void calc_weightpaint_vert_color(Object *ob, ColorBand *coba, int vert, unsigned char *col)
+/* draw_flag's for calc_weightpaint_vert_color */
+enum {
+	CALC_WP_MULTIPAINT= (1<<0),
+	CALC_WP_AUTO_NORMALIZE= (1<<1),
+};
+
+static void calc_weightpaint_vert_color(Object *ob, ColorBand *coba, int vert, unsigned char *col, char *dg_flags, int selected, int UNUSED(unselected), const int draw_flag)
 {
 	Mesh *me = ob->data;
 	float colf[4], input = 0.0f;
 	int i;
 
+	
+	int make_black= FALSE;
+
 	if (me->dvert) {
-		for (i=0; i<me->dvert[vert].totweight; i++)
-			if (me->dvert[vert].dw[i].def_nr==ob->actdef-1)
-				input+=me->dvert[vert].dw[i].weight;		
+		if ((selected > 1) && (draw_flag & CALC_WP_MULTIPAINT)) {
+			
+			int was_a_nonzero= FALSE;
+			for (i=0; i<me->dvert[vert].totweight; i++) {
+				/* in multipaint, get the average if auto normalize is inactive
+				 * get the sum if it is active */
+				if(dg_flags[me->dvert[vert].dw[i].def_nr]) {
+					if(me->dvert[vert].dw[i].weight) {
+						input+= me->dvert[vert].dw[i].weight;
+						was_a_nonzero= TRUE;
+					}
+				}
+			}
+
+			/* make it black if the selected groups have no weight on a vertex */
+			if(was_a_nonzero == FALSE) {
+				make_black = TRUE;
+			}
+			else if ((draw_flag & CALC_WP_AUTO_NORMALIZE) == FALSE) {
+				input /= selected; /* get the average */
+			}
+		}
+		else {
+			/* default, non tricky behavior */
+			for (i=0; i<me->dvert[vert].totweight; i++) {
+				if (me->dvert[vert].dw[i].def_nr==ob->actdef-1) {
+					input+=me->dvert[vert].dw[i].weight;
+				}
+			}
+		}
 	}
+	
+	if (make_black) {
+		col[3] = 0;
+		col[2] = 0;
+		col[1] = 0;
+		col[0] = 255;
+		return;
+	}
 
-	CLAMP(input, 0.0f, 1.0f);
-	
+	CLAMP(input, 0.0f, 1.0f);	
+
 	if(coba)
 		do_colorband(coba, input, colf);
 	else
@@ -890,7 +936,7 @@
 	stored_cb= coba;
 }
 
-static void add_weight_mcol_dm(Object *ob, DerivedMesh *dm)
+static void add_weight_mcol_dm(Object *ob, DerivedMesh *dm, int const draw_flag)
 {
 	// Mesh *me = ob->data; // UNUSED
 	MFace *mf = dm->getTessFaceArray(dm);
@@ -902,18 +948,23 @@
 	BLI_array_declare(wlcol);
 	int i, j, totface=dm->getNumTessFaces(dm), totloop;
 	int *origIndex = dm->getVertDataArray(dm, CD_ORIGINDEX);
-	
+
+	int defbase_len = BLI_countlist(&ob->defbase);
+	char *defbase_sel = MEM_mallocN(defbase_len * sizeof(char), __func__);
+	int selected = get_selected_defgroups(ob, defbase_sel, defbase_len);
+	int unselected = defbase_len - selected;
+
 	wtcol = MEM_callocN (sizeof (unsigned char) * totface*4*4, "weightmap");
 	
 	/*first add colors to the tesselation faces*/
 	memset(wtcol, 0x55, sizeof (unsigned char) * totface*4*4);
 	for (i=0; i<totface; i++, mf++) {
 		/*origindex being NULL means we're operating on original mesh data*/
-		calc_weightpaint_vert_color(ob, coba, origIndex ? origIndex[mf->v1] : mf->v1, &wtcol[(i*4 + 0)*4]); 
-		calc_weightpaint_vert_color(ob, coba, origIndex ? origIndex[mf->v2] : mf->v2, &wtcol[(i*4 + 1)*4]); 
-		calc_weightpaint_vert_color(ob, coba, origIndex ? origIndex[mf->v3] : mf->v3, &wtcol[(i*4 + 2)*4]); 
+		calc_weightpaint_vert_color(ob, coba, mf->v1, &wtcol[(i*4 + 0)*4], defbase_sel, selected, unselected, draw_flag);
+		calc_weightpaint_vert_color(ob, coba, mf->v2, &wtcol[(i*4 + 1)*4], defbase_sel, selected, unselected, draw_flag);
+		calc_weightpaint_vert_color(ob, coba, mf->v3, &wtcol[(i*4 + 2)*4], defbase_sel, selected, unselected, draw_flag);
 		if (mf->v4)
-			calc_weightpaint_vert_color(ob, coba, origIndex ? origIndex[mf->v4] : mf->v4, &wtcol[(i*4 + 3)*4]); 
+			calc_weightpaint_vert_color(ob, coba, mf->v4, &wtcol[(i*4 + 3)*4], defbase_sel, selected, unselected, draw_flag);
 	}
 	
 	CustomData_add_layer(&dm->faceData, CD_WEIGHT_MCOL, CD_ASSIGN, wtcol, totface);
@@ -927,7 +978,7 @@
 			BLI_array_growone(wlcol);
 
 			calc_weightpaint_vert_color(ob, coba, origIndex ? origIndex[ml->v] : ml->v,
-										(unsigned char *)&wlcol[totloop]);
+										(unsigned char *)&wlcol[totloop], defbase_sel, selected, unselected, draw_flag);
 		}
 	}
 
@@ -1045,6 +1096,9 @@
 	int has_multires = mmd != NULL, multires_applied = 0;
 	int sculpt_mode = ob->mode & OB_MODE_SCULPT && ob->sculpt;
 
+	int draw_flag= ((scene->toolsettings->multipaint ? CALC_WP_MULTIPAINT : 0) |
+	                (scene->toolsettings->auto_normalize ? CALC_WP_AUTO_NORMALIZE : 0));
+
 	if(mmd && !mmd->sculptlvl)

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list