diff options
Diffstat (limited to 'source/blender/blenkernel/intern/DerivedMesh.c')
-rw-r--r-- | source/blender/blenkernel/intern/DerivedMesh.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index aaed0381b2e..5c447d1a7f6 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -1786,7 +1786,7 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos Mesh *me = ob->data; ModifierData *firstmd, *md; LinkNode *datamasks, *curr; - CustomDataMask mask, nextmask; + CustomDataMask mask, nextmask, append_mask = 0; float (*deformedVerts)[3] = NULL; DerivedMesh *dm, *orcodm, *clothorcodm, *finaldm; int numVerts = me->totvert; @@ -2005,6 +2005,7 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos mask= (CustomDataMask)GET_INT_FROM_POINTER(curr->link); /* needMapping check here fixes bug [#28112], otherwise its * possible that it wont be copied */ + mask |= append_mask; DM_set_only_copy(dm, mask | (needMapping ? CD_MASK_ORIGINDEX : 0)); /* add cloth rest shape key if need */ @@ -2063,6 +2064,10 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos clothorcodm = ndm; } } + + /* in case of dynamic paint, make sure preview mask remains for following modifiers */ + if (md->type == eModifierType_DynamicPaint) + append_mask |= CD_MASK_WEIGHT_MCOL; } isPrevDeform= (mti->type == eModifierTypeType_OnlyDeform); |