[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29984] trunk/blender/source/blender: Fix #20383: mesh deform modifier wasn't working on lattices.

Brecht Van Lommel brecht at blender.org
Mon Jul 5 13:48:13 CEST 2010


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);
 }
 





More information about the Bf-blender-cvs mailing list