Mesh deform modifier crashed when applied to lattices.
This commit is contained in:
Brecht Van Lommel
2007-11-06 11:25:48 +00:00
parent e2504c2ff1
commit f66aeb7a74
2 changed files with 19 additions and 14 deletions

View File

@@ -5118,15 +5118,15 @@ static void meshdeformModifier_deformVerts(
{
DerivedMesh *dm;
if(derivedData) dm = CDDM_copy(derivedData);
else dm = CDDM_from_mesh(ob->data, ob);
CDDM_apply_vert_coords(dm, vertexCos);
CDDM_calc_normals(dm);
if(!derivedData && ob->type==OB_MESH)
dm= CDDM_from_mesh(ob->data, ob);
else
dm= derivedData;
meshdeformModifier_do(md, ob, dm, vertexCos, numVerts);
dm->release(dm);
if(dm != derivedData)
dm->release(dm);
}
static void meshdeformModifier_deformVertsEM(
@@ -5135,15 +5135,15 @@ static void meshdeformModifier_deformVertsEM(
{
DerivedMesh *dm;
if(derivedData) dm = CDDM_copy(derivedData);
else dm = CDDM_from_editmesh(editData, ob->data);
CDDM_apply_vert_coords(dm, vertexCos);
CDDM_calc_normals(dm);
if(!derivedData && ob->type == OB_MESH)
dm = CDDM_from_editmesh(editData, ob->data);
else
dm = derivedData;
meshdeformModifier_do(md, ob, dm, vertexCos, numVerts);
dm->release(dm);
if(dm != derivedData)
dm->release(dm);
}
/***/

View File

@@ -1486,8 +1486,13 @@ static void modifiers_bindMeshDeform(void *ob_v, void *md_v)
mmd->needbind= 1;
mmd->modifier.mode |= eModifierMode_Realtime;
dm= mesh_create_derived_view(ob, 0);
dm->release(dm);
if(ob->type == OB_MESH) {
dm= mesh_create_derived_view(ob, 0);
dm->release(dm);
}
else if(ob->type == OB_LATTICE) {
lattice_calc_modifiers(ob);
}
mmd->needbind= 0;
mmd->modifier.mode= mode;