Fix for Freestyle edge/face marks not working with most modifiers (except for Subdivision Surface).

This commit is contained in:
Tamito Kajiyama
2013-03-27 02:06:36 +00:00
parent 4a0351cba2
commit 765a10a8cd
2 changed files with 12 additions and 1 deletions

View File

@@ -1168,7 +1168,8 @@ static const char *LAYERTYPENAMES[CD_NUMTYPES] = {
const CustomDataMask CD_MASK_BAREMESH =
CD_MASK_MVERT | CD_MASK_MEDGE | CD_MASK_MFACE | CD_MASK_MLOOP | CD_MASK_MPOLY | CD_MASK_BWEIGHT;
CD_MASK_MVERT | CD_MASK_MEDGE | CD_MASK_MFACE | CD_MASK_MLOOP | CD_MASK_MPOLY | CD_MASK_BWEIGHT |
CD_MASK_FREESTYLE_EDGE | CD_MASK_FREESTYLE_FACE;
const CustomDataMask CD_MASK_MESH =
CD_MASK_MVERT | CD_MASK_MEDGE | CD_MASK_MFACE |
CD_MASK_MSTICKY | CD_MASK_MDEFORMVERT | CD_MASK_MTFACE | CD_MASK_MCOL |

View File

@@ -2636,6 +2636,16 @@ int BKE_mesh_recalc_tessellation(CustomData *fdata,
}
}
#ifdef WITH_FREESTYLE
if (CustomData_has_layer(pdata, CD_FREESTYLE_FACE)) {
FreestyleEdge *poly_ffa = CustomData_get_layer(pdata, CD_FREESTYLE_FACE);
FreestyleEdge *face_ffa = CustomData_add_layer(fdata, CD_FREESTYLE_FACE, CD_CALLOC, NULL, totface);
for (mface_index = 0; mface_index < totface; mface_index++) {
face_ffa[mface_index] = poly_ffa[mface_to_poly_map[mface_index]];
}
}
#endif
mf = mface;
for (mface_index = 0; mface_index < totface; mface_index++, mf++) {