[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14144] trunk/blender/source/blender/ blenkernel/intern/modifier.c:

Brecht Van Lommel brechtvanlommel at pandora.be
Sun Mar 16 20:38:06 CET 2008


Revision: 14144
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14144
Author:   blendix
Date:     2008-03-16 20:38:04 +0100 (Sun, 16 Mar 2008)

Log Message:
-----------

Fix for bug #8516: mesh deform modifier didn't work correct with
transformed cage objects.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/modifier.c

Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c	2008-03-16 17:43:59 UTC (rev 14143)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c	2008-03-16 19:38:04 UTC (rev 14144)
@@ -6747,7 +6747,7 @@
                 float (*vertexCos)[3], int numVerts)
 {
 	MeshDeformModifierData *mmd = (MeshDeformModifierData*) md;
-	float imat[4][4], cagemat[4][4], icagemat[4][4], iobmat[3][3];
+	float imat[4][4], cagemat[4][4], iobmat[4][4], icagemat[3][3], cmat[4][4];
 	float weight, totweight, fac, co[3], *weights, (*dco)[3], (*bindcos)[3];
 	int a, b, totvert, totcagevert, defgrp_index;
 	DerivedMesh *tmpdm, *cagedm;
@@ -6773,8 +6773,9 @@
  	/* compute matrices to go in and out of cage object space */
 	Mat4Invert(imat, mmd->object->obmat);
 	Mat4MulMat4(cagemat, ob->obmat, imat);
-	Mat4Invert(icagemat, cagemat);
-	Mat3CpyMat4(iobmat, icagemat);
+	Mat4MulMat4(cmat, cagemat, mmd->bindmat);
+	Mat4Invert(iobmat, cmat);
+	Mat3CpyMat4(icagemat, iobmat);
 
 	/* bind weights if needed */
 	if(!mmd->bindcos)
@@ -6872,7 +6873,7 @@
 
 		if(totweight > 0.0f) {
 			VecMulf(co, fac/totweight);
-			Mat3MulVecfl(iobmat, co);
+			Mat3MulVecfl(icagemat, co);
 			if(G.rt != 527)
 				VECADD(vertexCos[b], vertexCos[b], co)
 			else





More information about the Bf-blender-cvs mailing list