diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-07-05 15:48:13 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-07-05 15:48:13 +0400 |
commit | 052ab934aa3adb3ab3ce8e875618986fb69f0d57 (patch) | |
tree | ed4fb5bc334fe1c4ad223a6e4c3b284d01948681 /source/blender/modifiers | |
parent | 462d889720a5562fa01040f4d2a70269904edd77 (diff) |
Fix #20383: mesh deform modifier wasn't working on lattices.
Diffstat (limited to 'source/blender/modifiers')
-rw-r--r-- | source/blender/modifiers/intern/MOD_meshdeform.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/source/blender/modifiers/intern/MOD_meshdeform.c b/source/blender/modifiers/intern/MOD_meshdeform.c index 623f4a5ddeb..9ae86ac4ec0 100644 --- a/source/blender/modifiers/intern/MOD_meshdeform.c +++ b/source/blender/modifiers/intern/MOD_meshdeform.c @@ -227,7 +227,7 @@ static void meshdeformModifier_do( /* progress bar redraw can make this recursive .. */ if(!recursive) { recursive = 1; - mmd->bindfunc(md->scene, dm, mmd, (float*)vertexCos, numVerts, cagemat); + mmd->bindfunc(md->scene, mmd, (float*)vertexCos, numVerts, cagemat); recursive = 0; } } @@ -275,7 +275,7 @@ static void meshdeformModifier_do( defgrp_index = defgroup_name_index(ob, mmd->defgrp_name); - if (defgrp_index >= 0) + if(dm && defgrp_index >= 0) dvert= dm->getVertDataArray(dm, CD_MDEFORMVERT); /* do deformation */ @@ -343,14 +343,11 @@ static void deformVerts( { DerivedMesh *dm= get_dm(md->scene, ob, NULL, derivedData, NULL, 0);; - if(!dm) - return; - modifier_vgroup_cache(md, vertexCos); /* if next modifier needs original vertices */ meshdeformModifier_do(md, ob, dm, vertexCos, numVerts); - if(dm != derivedData) + if(dm && dm != derivedData) dm->release(dm); } @@ -358,16 +355,11 @@ static void deformVertsEM( ModifierData *md, Object *ob, struct EditMesh *editData, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts) { - DerivedMesh *dm; - - if(!derivedData && ob->type == OB_MESH) - dm = CDDM_from_editmesh(editData, ob->data); - else - dm = derivedData; + DerivedMesh *dm= get_dm(md->scene, ob, NULL, derivedData, NULL, 0);; meshdeformModifier_do(md, ob, dm, vertexCos, numVerts); - if(dm != derivedData) + if(dm && dm != derivedData) dm->release(dm); } |