diff options
-rw-r--r-- | source/blender/modifiers/intern/MOD_simpledeform.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/source/blender/modifiers/intern/MOD_simpledeform.c b/source/blender/modifiers/intern/MOD_simpledeform.c index 86791e5bcbe..f37cda25c58 100644 --- a/source/blender/modifiers/intern/MOD_simpledeform.c +++ b/source/blender/modifiers/intern/MOD_simpledeform.c @@ -385,11 +385,18 @@ static void deformVerts( float (*vertexCos)[3], int numVerts) { - Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + SimpleDeformModifierData *sdmd = (SimpleDeformModifierData *)md; + Mesh *mesh_src = NULL; - SimpleDeformModifier_do((SimpleDeformModifierData *)md, ctx->object, mesh_src, vertexCos, numVerts); + if (ctx->object->type == OB_MESH) { + /* mesh_src is only needed for vgroups. */ + mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + BLI_assert(mesh_src->totvert == numVerts); + } - if (mesh_src != mesh) { + SimpleDeformModifier_do(sdmd, ctx->object, mesh_src, vertexCos, numVerts); + + if (!ELEM(mesh_src, NULL, mesh)) { BKE_id_free(NULL, mesh_src); } } |