diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-12-16 23:53:12 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-12-16 23:53:12 +0400 |
commit | 3311164b24da61f2967f96d0ee27508a7e2e0267 (patch) | |
tree | 0824417cf3d645f59d98b210c02a4c5ef6c05a48 /source/blender/editors/transform | |
parent | 3c8ab559a5bd31fd38e9c5cf9da8505ca28f4887 (diff) |
Math lib: matrix multiplication order fix for two functions that were
inconsistent with similar functions & math notation:
mul_m4_m4m4(R, B, A) => mult_m4_m4m4(R, A, B)
mul_m3_m3m4(R, B, A) => mult_m3_m3m4(R, A, B)
For branch maintainers, it should be relatively simple to fix things manually,
it's also possible run this script after merging to do automatic replacement:
http://www.pasteall.org/27459/python
Diffstat (limited to 'source/blender/editors/transform')
3 files changed, 7 insertions, 7 deletions
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 802e6cd7374..fd74458b953 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -441,14 +441,14 @@ static short apply_targetless_ik(Object *ob) offs_bone[3][0]= offs_bone[3][1]= offs_bone[3][2]= 0.0f; mul_m4_v3(parchan->parent->pose_mat, rmat[3]); - mul_m4_m4m4(tmat, offs_bone, rmat); + mult_m4_m4m4(tmat, rmat, offs_bone); } else if(parchan->bone->flag & BONE_NO_SCALE) { - mul_m4_m4m4(tmat, offs_bone, parchan->parent->pose_mat); + mult_m4_m4m4(tmat, parchan->parent->pose_mat, offs_bone); normalize_m4(tmat); } else - mul_m4_m4m4(tmat, offs_bone, parchan->parent->pose_mat); + mult_m4_m4m4(tmat, parchan->parent->pose_mat, offs_bone); invert_m4_m4(imat, tmat); } @@ -459,7 +459,7 @@ static short apply_targetless_ik(Object *ob) invert_m4_m4(imat, tmat); } /* result matrix */ - mul_m4_m4m4(rmat, parchan->pose_mat, imat); + mult_m4_m4m4(rmat, imat, parchan->pose_mat); /* apply and decompose, doesn't work for constraints or non-uniform scale well */ { diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index d0857958a4b..e7e1ee43c5d 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -171,7 +171,7 @@ static void clipMirrorModifier(TransInfo *t, Object *ob) float obinv[4][4]; invert_m4_m4(obinv, mmd->mirror_ob->obmat); - mul_m4_m4m4(mtx, ob->obmat, obinv); + mult_m4_m4m4(mtx, obinv, ob->obmat); invert_m4_m4(imtx, mtx); } diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c index 63495d54cf1..5578ea754df 100644 --- a/source/blender/editors/transform/transform_manipulator.c +++ b/source/blender/editors/transform/transform_manipulator.c @@ -1564,7 +1564,7 @@ static int manipulator_selectbuf(ScrArea *sa, ARegion *ar, const int mval[2], fl rect.ymax= mval[1]+hotspot; setwinmatrixview3d(ar, v3d, &rect); - mul_m4_m4m4(rv3d->persmat, rv3d->viewmat, rv3d->winmat); + mult_m4_m4m4(rv3d->persmat, rv3d->winmat, rv3d->viewmat); glSelectBuffer( 64, buffer); glRenderMode(GL_SELECT); @@ -1586,7 +1586,7 @@ static int manipulator_selectbuf(ScrArea *sa, ARegion *ar, const int mval[2], fl G.f &= ~G_PICKSEL; setwinmatrixview3d(ar, v3d, NULL); - mul_m4_m4m4(rv3d->persmat, rv3d->viewmat, rv3d->winmat); + mult_m4_m4m4(rv3d->persmat, rv3d->winmat, rv3d->viewmat); if(hits==1) return buffer[3]; else if(hits>1) { |