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

Brecht Van Lommel brechtvanlommel at pandora.be
Mon Nov 5 18:38:07 CET 2007


Revision: 12482
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12482
Author:   blendix
Date:     2007-11-05 18:38:07 +0100 (Mon, 05 Nov 2007)

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

Bugfix:
Dual quaternions + armature modifier vgroup didn't work together correct.

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

Modified: trunk/blender/source/blender/blenkernel/intern/armature.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/armature.c	2007-11-05 17:27:11 UTC (rev 12481)
+++ trunk/blender/source/blender/blenkernel/intern/armature.c	2007-11-05 17:38:07 UTC (rev 12482)
@@ -849,7 +849,7 @@
 	for(i = 0; i < numVerts; i++) {
 		MDeformVert *dvert;
 		DualQuat sumdq, *dq = NULL;
-		float *co = vertexCos[i];
+		float *co = vertexCos[i], dco[3];
 		float sumvec[3], summat[3][3];
 		float *vec = NULL, (*smat)[3] = NULL;
 		float contrib = 0.0f;
@@ -938,7 +938,17 @@
 		if(contrib > 0.0001f) {
 			if(use_quaternion) {
 				DQuatNormalize(dq, contrib, armature_weight);
-				DQuatMulVecfl(dq, co, (defMats)? summat: NULL);
+
+				if(armature_weight != 1.0f) {
+					VECCOPY(dco, co);
+					DQuatMulVecfl(dq, dco, (defMats)? summat: NULL);
+					VecSubf(dco, dco, co);
+					VecMulf(dco, armature_weight);
+					VecAddf(co, co, dco);
+				}
+				else
+					DQuatMulVecfl(dq, co, (defMats)? summat: NULL);
+
 				smat = summat;
 			}
 			else {





More information about the Bf-blender-cvs mailing list