diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-03-25 14:05:28 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-03-25 14:07:13 +0400 |
commit | d4cc81d5523b3e625b809baa4a57c73664fb13db (patch) | |
tree | 70b142d91bc26791984fceae4b160dd115db5a5c /source/blender/blenkernel/intern/constraint.c | |
parent | 62a03509574eac608f3199b4fd2ad8c00e14c789 (diff) |
Fix T38870: Freezes when jumping in front of a keyframe.
Issue was caused by inverting a degenerate matrix when
evaluating drivers.
Solved by using tweaked inverse code (same as used in Cycles).
Should have no affect on cases when matrix is not degenerate.
Diffstat (limited to 'source/blender/blenkernel/intern/constraint.c')
-rw-r--r-- | source/blender/blenkernel/intern/constraint.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c index 415c84a776d..580a8a7a505 100644 --- a/source/blender/blenkernel/intern/constraint.c +++ b/source/blender/blenkernel/intern/constraint.c @@ -312,7 +312,7 @@ void BKE_constraint_mat_convertspace(Object *ob, bPoseChannel *pchan, float mat[ if (ob->parent) { /* 'subtract' parent's effects from owner */ mul_m4_m4m4(diff_mat, ob->parent->obmat, ob->parentinv); - invert_m4_m4(imat, diff_mat); + invert_m4_m4_safe(imat, diff_mat); mul_m4_m4m4(mat, imat, mat); } else { @@ -323,7 +323,7 @@ void BKE_constraint_mat_convertspace(Object *ob, bPoseChannel *pchan, float mat[ normalize_m4(diff_mat); zero_v3(diff_mat[3]); - invert_m4_m4(imat, diff_mat); + invert_m4_m4_safe(imat, diff_mat); mul_m4_m4m4(mat, imat, mat); } } |