forked from bartvdbraak/blender
[#21067] Weight painting doesn't work with mirror modifier enabled.
This commit is contained in:
parent
4520bc6edd
commit
82825d5c93
@ -1771,6 +1771,22 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
|
||||
|
||||
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 */
|
||||
@ -2109,9 +2125,9 @@ static void mesh_build_data(Scene *scene, Object *ob, CustomDataMask dataMask)
|
||||
Object *obact = scene->basact?scene->basact->object:NULL;
|
||||
int editing = paint_facesel_test(ob);
|
||||
/* 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));
|
||||
int needMapping = (ob==obact) && (editing || (ob->mode & OB_MODE_WEIGHT_PAINT) || editing);
|
||||
float min[3], max[3];
|
||||
|
||||
|
||||
clear_mesh_caches(ob);
|
||||
|
||||
mesh_calc_modifiers(scene, ob, NULL, &ob->derivedDeform,
|
||||
|
@ -1021,7 +1021,7 @@ static void cdDM_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, vo
|
||||
char *varray = 0;
|
||||
int numdata = 0, elementsize = 0, offset;
|
||||
int start = 0, numfaces = 0, prevdraw = 0, curface = 0;
|
||||
GPUAttrib datatypes[32];
|
||||
GPUAttrib datatypes[GPU_MAX_ATTRIB]; /* TODO, messing up when switching materials many times - [#21056]*/
|
||||
memset(&attribs, 0, sizeof(attribs));
|
||||
|
||||
GPU_vertex_setup(dm);
|
||||
|
Loading…
Reference in New Issue
Block a user