[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26743] trunk/blender/source/blender/ blenkernel/intern/DerivedMesh.c: [#21067] Weight painting doesn' t work with mirror modifier enabled.
Campbell Barton
ideasman42 at gmail.com
Tue Feb 9 19:06:57 CET 2010
Revision: 26743
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26743
Author: campbellbarton
Date: 2010-02-09 19:06:57 +0100 (Tue, 09 Feb 2010)
Log Message:
-----------
[#21067] Weight painting doesn't work with mirror modifier enabled.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
Modified: trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c 2010-02-09 17:50:56 UTC (rev 26742)
+++ trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c 2010-02-09 18:06:57 UTC (rev 26743)
@@ -1771,6 +1771,22 @@
if((dataMask & CD_MASK_WEIGHT_MCOL) && (ob->mode & OB_MODE_WEIGHT_PAINT))
add_weight_mcol_dm(ob, dm);
+
+ /* constructive modifiers need to have an origindex
+ * otherwise they wont have anywhere to copy the data from */
+ if(needMapping) {
+ int *index, i;
+ DM_add_vert_layer(dm, CD_ORIGINDEX, CD_CALLOC, NULL);
+ DM_add_edge_layer(dm, CD_ORIGINDEX, CD_CALLOC, NULL);
+ DM_add_face_layer(dm, CD_ORIGINDEX, CD_CALLOC, NULL);
+
+ index = DM_get_vert_data_layer(dm, CD_ORIGINDEX);
+ for(i=0; i<dm->numVertData; i++) *index++= i;
+ index = DM_get_edge_data_layer(dm, CD_ORIGINDEX);
+ for(i=0; i<dm->numEdgeData; i++) *index++= i;
+ index = DM_get_face_data_layer(dm, CD_ORIGINDEX);
+ for(i=0; i<dm->numFaceData; i++) *index++= i;
+ }
}
/* create an orco derivedmesh in parallel */
@@ -2111,7 +2127,7 @@
/* weight paint and face select need original indicies because of selection buffer drawing */
int needMapping = (ob==obact) && (editing || (ob->mode & OB_MODE_WEIGHT_PAINT) || paint_facesel_test(ob));
float min[3], max[3];
-
+ printf("needMapping, %d\n", needMapping);
clear_mesh_caches(ob);
mesh_calc_modifiers(scene, ob, NULL, &ob->derivedDeform,
More information about the Bf-blender-cvs
mailing list