[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