[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11347] trunk/blender/source/blender: == Constraints - Bugfixes ==
Joshua Leung
aligorith at gmail.com
Mon Jul 23 13:28:43 CEST 2007
Revision: 11347
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11347
Author: aligorith
Date: 2007-07-23 13:28:43 +0200 (Mon, 23 Jul 2007)
Log Message:
-----------
== Constraints - Bugfixes ==
Here are some attempts at fixing bugs being encountered with the constraint system after the recode. I've just fixed a few typos (where relevant), and added some extra checks for things.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/constraint.c
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/src/transform_conversions.c
Modified: trunk/blender/source/blender/blenkernel/intern/constraint.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/constraint.c 2007-07-23 06:16:25 UTC (rev 11346)
+++ trunk/blender/source/blender/blenkernel/intern/constraint.c 2007-07-23 11:28:43 UTC (rev 11347)
@@ -818,7 +818,7 @@
cob->type = datatype;
/* matrix in world-space */
- Mat4MulMat4 (cob->matrix, cob->pchan->pose_mat, ob->obmat);
+ Mat4MulMat4(cob->matrix, cob->pchan->pose_mat, ob->obmat);
Mat4CpyMat4(cob->startmat, cob->matrix);
}
else
@@ -2640,6 +2640,8 @@
for (con= conlist->first; con; con= con->next) {
/* this we can skip completely */
if (con->flag & CONSTRAINT_DISABLE) continue;
+ /* influence == 0 should be ignored */
+ if (con->enforce == 0.0f) continue;
/* and inverse kinematics is solved seperate */
if (con->type==CONSTRAINT_TYPE_KINEMATIC) continue;
/* rigidbody is really a game-engine thing - and is not solved here */
Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c 2007-07-23 06:16:25 UTC (rev 11346)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2007-07-23 11:28:43 UTC (rev 11347)
@@ -6555,6 +6555,7 @@
{
bActionConstraint *data= (bActionConstraint *)curcon->data;
+ /* 'data->local' used to mean that target was in local-space */
if (data->local)
curcon->tarspace = CONSTRAINT_SPACE_LOCAL;
}
@@ -6563,12 +6564,19 @@
{
bLocLimitConstraint *data= (bLocLimitConstraint *)curcon->data;
- if (data->flag2) {
+ /* old limit without parent option for objects */
+ if (data->flag2)
curcon->ownspace = CONSTRAINT_SPACE_LOCAL;
- curcon->ownspace = CONSTRAINT_SPACE_LOCAL;
- }
}
break;
+ case CONSTRAINT_TYPE_STRETCHTO:
+ {
+ bStretchToConstraint *data= (bStretchToConstraint *)curcon->data;
+
+ /* force recalc of rest-length */
+ data->orglength = 0;
+ }
+ break;
}
}
}
@@ -6595,6 +6603,7 @@
{
bActionConstraint *data= (bActionConstraint *)curcon->data;
+ /* 'data->local' used to mean that target was in local-space */
if (data->local)
curcon->tarspace = CONSTRAINT_SPACE_LOCAL;
}
@@ -6603,12 +6612,19 @@
{
bLocLimitConstraint *data= (bLocLimitConstraint *)curcon->data;
- if (data->flag2) {
+ /* old limit without parent option for objects */
+ if (data->flag2)
curcon->ownspace = CONSTRAINT_SPACE_LOCAL;
- curcon->ownspace = CONSTRAINT_SPACE_LOCAL;
- }
}
break;
+ case CONSTRAINT_TYPE_STRETCHTO:
+ {
+ bStretchToConstraint *data= (bStretchToConstraint *)curcon->data;
+
+ /* force recalc of rest-length */
+ data->orglength = 0;
+ }
+ break;
}
}
Modified: trunk/blender/source/blender/src/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/src/transform_conversions.c 2007-07-23 06:16:25 UTC (rev 11346)
+++ trunk/blender/source/blender/src/transform_conversions.c 2007-07-23 11:28:43 UTC (rev 11347)
@@ -540,8 +540,7 @@
Mat3Inv(lmat, tmat);
Mat3CpyMat4(pmat, pchan->pose_mat);
Mat3MulMat3(tmat, lmat, pmat); // argh... order of args is reversed
- Mat3MulMat3(td->mtx, omat, pmat);
-
+ Mat3MulMat3(td->mtx, omat, tmat);
Mat3Inv(td->smtx, td->mtx);
/* for axismat we use bone's own transform */
@@ -2066,15 +2065,15 @@
VECCOPY(td->center, ob->obmat[3]);
- if (ob->parent || ob->track || ob->constraints.first)
+ if (ob->parent || ob->constraints.first)
{
float totmat[3][3], obinv[3][3];
- /* get the effect of parenting, and/or tracking, and/or constraints */
+ /* get the effect of parenting, and/or constraints */
object_to_mat3(ob, obmtx);
Mat3CpyMat4(totmat, ob->obmat);
- Mat3Inv(obinv, totmat);
- Mat3MulMat3(td->smtx, obmtx, obinv);
+ Mat3Inv(obinv, obmtx);
+ Mat3MulMat3(td->smtx, totmat, obinv);
Mat3Inv(td->mtx, td->smtx);
}
else
More information about the Bf-blender-cvs
mailing list