From 3311164b24da61f2967f96d0ee27508a7e2e0267 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 16 Dec 2011 19:53:12 +0000 Subject: 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 --- source/blender/editors/transform/transform_conversions.c | 8 ++++---- source/blender/editors/transform/transform_generics.c | 2 +- source/blender/editors/transform/transform_manipulator.c | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) (limited to 'source/blender/editors/transform') 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) { -- cgit v1.2.3