Revision: 29984 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29984 Author: blendix Date: 2010-07-05 13:48:13 +0200 (Mon, 05 Jul 2010)
Log Message: ----------- Fix #20383: mesh deform modifier wasn't working on lattices. Modified Paths: -------------- trunk/blender/source/blender/editors/armature/meshlaplacian.c trunk/blender/source/blender/editors/armature/meshlaplacian.h trunk/blender/source/blender/editors/include/ED_armature.h trunk/blender/source/blender/makesdna/DNA_modifier_types.h trunk/blender/source/blender/modifiers/intern/MOD_meshdeform.c Modified: trunk/blender/source/blender/editors/armature/meshlaplacian.c =================================================================== --- trunk/blender/source/blender/editors/armature/meshlaplacian.c 2010-07-05 10:32:14 UTC (rev 29983) +++ trunk/blender/source/blender/editors/armature/meshlaplacian.c 2010-07-05 11:48:13 UTC (rev 29984) @@ -1922,7 +1922,7 @@ } #endif -void mesh_deform_bind(Scene *scene, DerivedMesh *dm, MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]) +void mesh_deform_bind(Scene *scene, MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]) { MeshDeformBind mdb; MVert *mvert; Modified: trunk/blender/source/blender/editors/armature/meshlaplacian.h =================================================================== --- trunk/blender/source/blender/editors/armature/meshlaplacian.h 2010-07-05 10:32:14 UTC (rev 29983) +++ trunk/blender/source/blender/editors/armature/meshlaplacian.h 2010-07-05 11:48:13 UTC (rev 29984) @@ -78,7 +78,7 @@ /* Harmonic Coordinates */ -void mesh_deform_bind(struct Scene *scene, struct DerivedMesh *dm, +void mesh_deform_bind(struct Scene *scene, struct MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]); Modified: trunk/blender/source/blender/editors/include/ED_armature.h =================================================================== --- trunk/blender/source/blender/editors/include/ED_armature.h 2010-07-05 10:32:14 UTC (rev 29983) +++ trunk/blender/source/blender/editors/include/ED_armature.h 2010-07-05 11:48:13 UTC (rev 29984) @@ -165,7 +165,7 @@ int BDR_drawSketchNames(struct ViewContext *vc); /* meshlaplacian.c */ -void mesh_deform_bind(struct Scene *scene, struct DerivedMesh *dm, +void mesh_deform_bind(struct Scene *scene, struct MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]); Modified: trunk/blender/source/blender/makesdna/DNA_modifier_types.h =================================================================== --- trunk/blender/source/blender/makesdna/DNA_modifier_types.h 2010-07-05 10:32:14 UTC (rev 29983) +++ trunk/blender/source/blender/makesdna/DNA_modifier_types.h 2010-07-05 11:48:13 UTC (rev 29984) @@ -538,7 +538,7 @@ float *bindcos; /* deprecated storage of cage coords */ /* runtime */ - void (*bindfunc)(struct Scene *scene, struct DerivedMesh *dm, + void (*bindfunc)(struct Scene *scene, struct MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]); } MeshDeformModifierData; Modified: trunk/blender/source/blender/modifiers/intern/MOD_meshdeform.c =================================================================== --- trunk/blender/source/blender/modifiers/intern/MOD_meshdeform.c 2010-07-05 10:32:14 UTC (rev 29983) +++ trunk/blender/source/blender/modifiers/intern/MOD_meshdeform.c 2010-07-05 11:48:13 UTC (rev 29984) @@ -227,7 +227,7 @@ /* 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 @@ 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 @@ { 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 @@ ModifierData *md, Object *ob, struct EditMesh *editData, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts) { - DerivedMesh *dm; + DerivedMesh *dm= get_dm(md->scene, ob, NULL, derivedData, NULL, 0);; - if(!derivedData && ob->type == OB_MESH) - dm = CDDM_from_editmesh(editData, ob->data); - else - dm = derivedData; - meshdeformModifier_do(md, ob, dm, vertexCos, numVerts); - if(dm != derivedData) + if(dm && dm != derivedData) dm->release(dm); } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs