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/blenkernel | |
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/blenkernel')
-rw-r--r-- | source/blender/blenkernel/intern/anim.c | 20 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/armature.c | 26 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/camera.c | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/constraint.c | 68 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/fcurve.c | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/lattice.c | 4 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/mball.c | 6 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/object.c | 10 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/particle.c | 6 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/tracking.c | 4 |
10 files changed, 74 insertions, 74 deletions
diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c index 0cd8845c53b..bb8022c59fe 100644 --- a/source/blender/blenkernel/intern/anim.c +++ b/source/blender/blenkernel/intern/anim.c @@ -726,10 +726,10 @@ static void group_duplilist(ListBase *lb, Scene *scene, Object *ob, int level, i if(!is_zero_v3(group->dupli_ofs)) { copy_m4_m4(tmat, go->ob->obmat); sub_v3_v3v3(tmat[3], tmat[3], group->dupli_ofs); - mul_m4_m4m4(mat, tmat, ob->obmat); + mult_m4_m4m4(mat, ob->obmat, tmat); } else { - mul_m4_m4m4(mat, go->ob->obmat, ob->obmat); + mult_m4_m4m4(mat, ob->obmat, go->ob->obmat); } dob= new_dupli_object(lb, go->ob, mat, ob->lay, 0, OB_DUPLIGROUP, animated); @@ -955,7 +955,7 @@ static void vertex_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, fl when par_space_mat is NULL ob->obmat can be used instead of ob__obmat */ if(par_space_mat) - mul_m4_m4m4(vdd.obmat, ob->obmat, par_space_mat); + mult_m4_m4m4(vdd.obmat, par_space_mat, ob->obmat); else copy_m4_m4(vdd.obmat, ob->obmat); @@ -1084,7 +1084,7 @@ static void face_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, floa when par_space_mat is NULL ob->obmat can be used instead of ob__obmat */ if(par_space_mat) - mul_m4_m4m4(ob__obmat, ob->obmat, par_space_mat); + mult_m4_m4m4(ob__obmat, par_space_mat, ob->obmat); else copy_m4_m4(ob__obmat, ob->obmat); @@ -1396,15 +1396,15 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p if(!is_zero_v3(part->dup_group->dupli_ofs)) { copy_m4_m4(tmat, oblist[b]->obmat); sub_v3_v3v3(tmat[3], tmat[3], part->dup_group->dupli_ofs); - mul_m4_m4m4(tmat, tmat, pamat); + mult_m4_m4m4(tmat, pamat, tmat); } else { - mul_m4_m4m4(tmat, oblist[b]->obmat, pamat); + mult_m4_m4m4(tmat, pamat, oblist[b]->obmat); } mul_mat3_m4_fl(tmat, size*scale); if(par_space_mat) - mul_m4_m4m4(mat, tmat, par_space_mat); + mult_m4_m4m4(mat, par_space_mat, tmat); else copy_m4_m4(mat, tmat); @@ -1435,15 +1435,15 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p * remove the real emitter's transformation before 2nd order duplication. */ if(par_space_mat && GS(id->name) != ID_GR) - mul_m4_m4m4(mat, pamat, psys->imat); + mult_m4_m4m4(mat, psys->imat, pamat); else copy_m4_m4(mat, pamat); - mul_m4_m4m4(tmat, obmat, mat); + mult_m4_m4m4(tmat, mat, obmat); mul_mat3_m4_fl(tmat, size*scale); if(par_space_mat) - mul_m4_m4m4(mat, tmat, par_space_mat); + mult_m4_m4m4(mat, par_space_mat, tmat); else copy_m4_m4(mat, tmat); diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index 4035db36a39..ae04b7760c2 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -505,9 +505,9 @@ Mat4 *b_bone_spline_setup(bPoseChannel *pchan, int rest) if(prev->bone->segments==1) { /* find the previous roll to interpolate */ if(rest) - mul_m4_m4m4(difmat, prev->bone->arm_mat, imat); + mult_m4_m4m4(difmat, imat, prev->bone->arm_mat); else - mul_m4_m4m4(difmat, prev->pose_mat, imat); + mult_m4_m4m4(difmat, imat, prev->pose_mat); copy_m3_m4(result, difmat); // the desired rotation at beginning of next bone vec_roll_to_mat3(h1, 0.0f, mat3); // the result of vec_roll without roll @@ -538,9 +538,9 @@ Mat4 *b_bone_spline_setup(bPoseChannel *pchan, int rest) /* find the next roll to interpolate as well */ if(rest) - mul_m4_m4m4(difmat, next->bone->arm_mat, imat); + mult_m4_m4m4(difmat, imat, next->bone->arm_mat); else - mul_m4_m4m4(difmat, next->pose_mat, imat); + mult_m4_m4m4(difmat, imat, next->pose_mat); copy_m3_m4(result, difmat); // the desired rotation at beginning of next bone vec_roll_to_mat3(h2, 0.0f, mat3); // the result of vec_roll without roll @@ -837,7 +837,7 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm, invert_m4_m4(obinv, target->obmat); copy_m4_m4(premat, target->obmat); - mul_m4_m4m4(postmat, armOb->obmat, obinv); + mult_m4_m4m4(postmat, obinv, armOb->obmat); invert_m4_m4(premat, postmat); /* bone defmats are already in the channels, chan_mat */ @@ -1103,7 +1103,7 @@ void armature_mat_world_to_pose(Object *ob, float inmat[][4], float outmat[][4]) invert_m4_m4(obmat, ob->obmat); /* multiply given matrix by object's-inverse to find pose-space matrix */ - mul_m4_m4m4(outmat, obmat, inmat); + mult_m4_m4m4(outmat, inmat, obmat); } /* Convert Wolrd-Space Location to Pose-Space Location @@ -1174,7 +1174,7 @@ void armature_mat_pose_to_bone(bPoseChannel *pchan, float inmat[][4], float outm * This should leave behind the effects of restpose + * parenting + constraints */ - mul_m4_m4m4(pc_posemat, inv_trans, pose_mat); + mult_m4_m4m4(pc_posemat, pose_mat, inv_trans); /* get the inverse of the leftovers so that we can remove * that component from the supplied matrix @@ -1182,7 +1182,7 @@ void armature_mat_pose_to_bone(bPoseChannel *pchan, float inmat[][4], float outm invert_m4_m4(inv_posemat, pc_posemat); /* get the new matrix */ - mul_m4_m4m4(outmat, inmat, inv_posemat); + mult_m4_m4m4(outmat, inv_posemat, inmat); } /* Convert Pose-Space Location to Bone-Space Location @@ -1237,7 +1237,7 @@ void armature_mat_pose_to_delta(float delta_mat[][4], float pose_mat[][4], float float imat[4][4]; invert_m4_m4(imat, arm_mat); - mul_m4_m4m4(delta_mat, pose_mat, imat); + mult_m4_m4m4(delta_mat, imat, pose_mat); } /* **************** Rotation Mode Conversions ****************************** */ @@ -1410,7 +1410,7 @@ void where_is_armature_bone(Bone *bone, Bone *prevbone) offs_bone[3][1]+= prevbone->length; /* Compose the matrix for this bone */ - mul_m4_m4m4(bone->arm_mat, offs_bone, prevbone->arm_mat); + mult_m4_m4m4(bone->arm_mat, prevbone->arm_mat, offs_bone); } else { copy_m4_m3(bone->arm_mat, bone->bone_mat); @@ -2310,7 +2310,7 @@ void where_is_pose_bone(Scene *scene, Object *ob, bPoseChannel *pchan, float cti /* extract the scale of the parent matrix */ mat4_to_size(tscale, parchan->pose_mat); size_to_mat4(tsmat, tscale); - mul_m4_m4m4(tmat, tmat, tsmat); + mult_m4_m4m4(tmat, tsmat, tmat); mul_serie_m4(pchan->pose_mat, tmat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL); } @@ -2344,7 +2344,7 @@ void where_is_pose_bone(Scene *scene, Object *ob, bPoseChannel *pchan, float cti } } else { - mul_m4_m4m4(pchan->pose_mat, pchan->chan_mat, bone->arm_mat); + mult_m4_m4m4(pchan->pose_mat, bone->arm_mat, pchan->chan_mat); /* optional location without arm_mat rotation */ if(bone->flag & BONE_NO_LOCAL_LOCATION) @@ -2466,7 +2466,7 @@ void where_is_pose (Scene *scene, Object *ob) for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { if(pchan->bone) { invert_m4_m4(imat, pchan->bone->arm_mat); - mul_m4_m4m4(pchan->chan_mat, imat, pchan->pose_mat); + mult_m4_m4m4(pchan->chan_mat, pchan->pose_mat, imat); } } } diff --git a/source/blender/blenkernel/intern/camera.c b/source/blender/blenkernel/intern/camera.c index 2bd973d7799..f55ceab7de8 100644 --- a/source/blender/blenkernel/intern/camera.c +++ b/source/blender/blenkernel/intern/camera.c @@ -159,7 +159,7 @@ float object_camera_dof_distance(Object *ob) copy_m4_m4(obmat, ob->obmat); normalize_m4(obmat); invert_m4_m4(imat, obmat); - mul_m4_m4m4(mat, cam->dof_ob->obmat, imat); + mult_m4_m4m4(mat, imat, cam->dof_ob->obmat); return fabsf(mat[3][2]); } return cam->YF_dofdist; diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c index 87a50b89547..927a98c174f 100644 --- a/source/blender/blenkernel/intern/constraint.c +++ b/source/blender/blenkernel/intern/constraint.c @@ -153,7 +153,7 @@ bConstraintOb *constraints_make_evalob (Scene *scene, Object *ob, void *subdata, } /* matrix in world-space */ - mul_m4_m4m4(cob->matrix, cob->pchan->pose_mat, ob->obmat); + mult_m4_m4m4(cob->matrix, ob->obmat, cob->pchan->pose_mat); } else unit_m4(cob->matrix); @@ -182,7 +182,7 @@ void constraints_clear_evalob (bConstraintOb *cob) /* calculate delta of constraints evaluation */ invert_m4_m4(imat, cob->startmat); - mul_m4_m4m4(delta, imat, cob->matrix); + mult_m4_m4m4(delta, cob->matrix, imat); /* copy matrices back to source */ switch (cob->type) { @@ -203,7 +203,7 @@ void constraints_clear_evalob (bConstraintOb *cob) /* cob->ob or cob->pchan might not exist */ if (cob->ob && cob->pchan) { /* copy new pose-matrix back to owner */ - mul_m4_m4m4(cob->pchan->pose_mat, cob->matrix, cob->ob->imat); + mult_m4_m4m4(cob->pchan->pose_mat, cob->ob->imat, cob->matrix); /* copy inverse of delta back to owner */ invert_m4_m4(cob->pchan->constinv, delta); @@ -242,7 +242,7 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4 /* world to pose */ invert_m4_m4(imat, ob->obmat); copy_m4_m4(tempmat, mat); - mul_m4_m4m4(mat, tempmat, imat); + mult_m4_m4m4(mat, imat, tempmat); /* use pose-space as stepping stone for other spaces... */ if (ELEM(to, CONSTRAINT_SPACE_LOCAL, CONSTRAINT_SPACE_PARLOCAL)) { @@ -256,7 +256,7 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4 /* pose to world */ if (to == CONSTRAINT_SPACE_WORLD) { copy_m4_m4(tempmat, mat); - mul_m4_m4m4(mat, tempmat, ob->obmat); + mult_m4_m4m4(mat, ob->obmat, tempmat); } /* pose to local */ else if (to == CONSTRAINT_SPACE_LOCAL) { @@ -281,12 +281,12 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4 offs_bone[3][0]= offs_bone[3][1]= offs_bone[3][2]= 0.0f; mul_m4_v3(pchan->parent->pose_mat, tmat[3]); - mul_m4_m4m4(diff_mat, offs_bone, tmat); + mult_m4_m4m4(diff_mat, tmat, offs_bone); invert_m4_m4(imat, diff_mat); } else { /* pose_mat = par_pose_mat * bone_mat * chan_mat */ - mul_m4_m4m4(diff_mat, offs_bone, pchan->parent->pose_mat); + mult_m4_m4m4(diff_mat, pchan->parent->pose_mat, offs_bone); invert_m4_m4(imat, diff_mat); } } @@ -296,7 +296,7 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4 } copy_m4_m4(tempmat, mat); - mul_m4_m4m4(mat, tempmat, imat); + mult_m4_m4m4(mat, imat, tempmat); } } /* pose to local with parent */ @@ -304,7 +304,7 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4 if (pchan->bone) { invert_m4_m4(imat, pchan->bone->arm_mat); copy_m4_m4(tempmat, mat); - mul_m4_m4m4(mat, tempmat, imat); + mult_m4_m4m4(mat, imat, tempmat); } } } @@ -334,22 +334,22 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4 zero_v3(offs_bone[3]); mul_m4_v3(pchan->parent->pose_mat, tmat[3]); - mul_m4_m4m4(diff_mat, offs_bone, tmat); + mult_m4_m4m4(diff_mat, tmat, offs_bone); copy_m4_m4(tempmat, mat); - mul_m4_m4m4(mat, tempmat, diff_mat); + mult_m4_m4m4(mat, diff_mat, tempmat); } else { /* pose_mat = par_pose_mat * bone_mat * chan_mat */ - mul_m4_m4m4(diff_mat, offs_bone, pchan->parent->pose_mat); + mult_m4_m4m4(diff_mat, pchan->parent->pose_mat, offs_bone); copy_m4_m4(tempmat, mat); - mul_m4_m4m4(mat, tempmat, diff_mat); + mult_m4_m4m4(mat, diff_mat, tempmat); } } else { copy_m4_m4(diff_mat, pchan->bone->arm_mat); copy_m4_m4(tempmat, mat); - mul_m4_m4m4(mat, tempmat, diff_mat); + mult_m4_m4m4(mat, diff_mat, tempmat); } } @@ -366,7 +366,7 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4 if (pchan->bone) { copy_m4_m4(diff_mat, pchan->bone->arm_mat); copy_m4_m4(tempmat, mat); - mul_m4_m4m4(mat, diff_mat, tempmat); + mult_m4_m4m4(mat, tempmat, diff_mat); } /* use pose-space as stepping stone for other spaces */ @@ -384,10 +384,10 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4 /* check if object has a parent */ if (ob->parent) { /* 'subtract' parent's effects from owner */ - mul_m4_m4m4(diff_mat, ob->parentinv, ob->parent->obmat); + mult_m4_m4m4(diff_mat, ob->parent->obmat, ob->parentinv); invert_m4_m4(imat, diff_mat); copy_m4_m4(tempmat, mat); - mul_m4_m4m4(mat, tempmat, imat); + mult_m4_m4m4(mat, imat, tempmat); } else { /* Local space in this case will have to be defined as local to the owner's @@ -399,7 +399,7 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4 invert_m4_m4(imat, diff_mat); copy_m4_m4(tempmat, mat); - mul_m4_m4m4(mat, tempmat, imat); + mult_m4_m4m4(mat, imat, tempmat); } } else if (from==CONSTRAINT_SPACE_LOCAL && to==CONSTRAINT_SPACE_WORLD) { @@ -407,8 +407,8 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4 if (ob->parent) { /* 'add' parent's effect back to owner */ copy_m4_m4(tempmat, mat); - mul_m4_m4m4(diff_mat, ob->parentinv, ob->parent->obmat); - mul_m4_m4m4(mat, tempmat, diff_mat); + mult_m4_m4m4(diff_mat, ob->parent->obmat, ob->parentinv); + mult_m4_m4m4(mat, diff_mat, tempmat); } else { /* Local space in this case will have to be defined as local to the owner's @@ -419,7 +419,7 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4 zero_v3(diff_mat[3]); copy_m4_m4(tempmat, mat); - mul_m4_m4m4(mat, tempmat, diff_mat); + mult_m4_m4m4(mat, diff_mat, tempmat); } } } @@ -612,7 +612,7 @@ static void constraint_target_to_mat4 (Object *ob, const char *substring, float */ if (headtail < 0.000001f) { /* skip length interpolation if set to head */ - mul_m4_m4m4(mat, pchan->pose_mat, ob->obmat); + mult_m4_m4m4(mat, ob->obmat, pchan->pose_mat); } else { float tempmat[4][4], loc[3]; @@ -624,7 +624,7 @@ static void constraint_target_to_mat4 (Object *ob, const char *substring, float copy_m4_m4(tempmat, pchan->pose_mat); copy_v3_v3(tempmat[3], loc); - mul_m4_m4m4(mat, tempmat, ob->obmat); + mult_m4_m4m4(mat, ob->obmat, tempmat); } } else @@ -836,12 +836,12 @@ static void childof_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta /* multiply target (parent matrix) by offset (parent inverse) to get * the effect of the parent that will be exherted on the owner */ - mul_m4_m4m4(parmat, data->invmat, ct->matrix); + mult_m4_m4m4(parmat, ct->matrix, data->invmat); /* now multiply the parent matrix by the owner matrix to get the * the effect of this constraint (i.e. owner is 'parented' to parent) */ - mul_m4_m4m4(cob->matrix, cob->matrix, parmat); + mult_m4_m4m4(cob->matrix, parmat, cob->matrix); } else { float invmat[4][4], tempmat[4][4]; @@ -878,13 +878,13 @@ static void childof_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta /* multiply target (parent matrix) by offset (parent inverse) to get * the effect of the parent that will be exherted on the owner */ - mul_m4_m4m4(parmat, invmat, ct->matrix); + mult_m4_m4m4(parmat, ct->matrix, invmat); /* now multiply the parent matrix by the owner matrix to get the * the effect of this constraint (i.e. owner is 'parented' to parent) */ copy_m4_m4(tempmat, cob->matrix); - mul_m4_m4m4(cob->matrix, tempmat, parmat); + mult_m4_m4m4(cob->matrix, parmat, tempmat); /* without this, changes to scale and rotation can change location * of a parentless bone or a disconnected bone. Even though its set @@ -1294,7 +1294,7 @@ static void followpath_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr if (data->followflag & FOLLOWPATH_RADIUS) { float tmat[4][4], rmat[4][4]; scale_m4_fl(tmat, radius); - mul_m4_m4m4(rmat, totmat, tmat); + mult_m4_m4m4(rmat, tmat, totmat); copy_m4_m4(totmat, rmat); } @@ -2237,7 +2237,7 @@ static void actcon_evaluate (bConstraint *UNUSED(con), bConstraintOb *cob, ListB * function has already taken care of everything else. */ copy_m4_m4(temp, cob->matrix); - mul_m4_m4m4(cob->matrix, ct->matrix, temp); + mult_m4_m4m4(cob->matrix, temp, ct->matrix); } } @@ -2928,7 +2928,7 @@ static void minmax_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *tar if (data->flag & MINMAX_USEROT) { /* take rotation of target into account by doing the transaction in target's localspace */ invert_m4_m4(imat, tarmat); - mul_m4_m4m4(tmat, obmat, imat); + mult_m4_m4m4(tmat, imat, obmat); copy_m4_m4(obmat, tmat); unit_m4(tarmat); } @@ -2981,7 +2981,7 @@ static void minmax_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *tar } if (data->flag & MINMAX_USEROT) { /* get out of localspace */ - mul_m4_m4m4(tmat, obmat, ct->matrix); + mult_m4_m4m4(tmat, ct->matrix, obmat); copy_m4_m4(cob->matrix, tmat); } else { @@ -4020,7 +4020,7 @@ static void followtrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase copy_m4_m4(rmat, camob->obmat); zero_v3(rmat[3]); - mul_m4_m4m4(cob->matrix, rmat, cob->matrix); + mult_m4_m4m4(cob->matrix, cob->matrix, rmat); copy_v3_v3(cob->matrix[3], disp); } @@ -4039,7 +4039,7 @@ static void followtrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase /* apply camera rotation so Z-axis would be co-linear */ copy_m4_m4(rmat, camob->obmat); zero_v3(rmat[3]); - mul_m4_m4m4(cob->matrix, rmat, cob->matrix); + mult_m4_m4m4(cob->matrix, cob->matrix, rmat); copy_v3_v3(cob->matrix[3], disp); } @@ -4096,7 +4096,7 @@ static void camerasolver_evaluate (bConstraint *con, bConstraintOb *cob, ListBas BKE_tracking_get_interpolated_camera(&clip->tracking, scene->r.cfra, mat); copy_m4_m4(obmat, cob->matrix); - mul_m4_m4m4(cob->matrix, mat, obmat); + mult_m4_m4m4(cob->matrix, obmat, mat); } } diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c index d01e3de0796..b9947c506d1 100644 --- a/source/blender/blenkernel/intern/fcurve.c +++ b/source/blender/blenkernel/intern/fcurve.c @@ -1283,7 +1283,7 @@ static float dvar_eval_transChan (ChannelDriver *driver, DriverVar *dvar) } else { /* worldspace matrix */ - mul_m4_m4m4(mat, pchan->pose_mat, ob->obmat); + mult_m4_m4m4(mat, ob->obmat, pchan->pose_mat); } } else { diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c index fe07662795e..4c30789db73 100644 --- a/source/blender/blenkernel/intern/lattice.c +++ b/source/blender/blenkernel/intern/lattice.c @@ -316,7 +316,7 @@ void init_latt_deform(Object *oblatt, Object *ob) else { /* in deformspace, calc matrix */ invert_m4_m4(imat, oblatt->obmat); - mul_m4_m4m4(lt->latmat, ob->obmat, imat); + mult_m4_m4m4(lt->latmat, imat, ob->obmat); /* back: put in deform array */ invert_m4_m4(imat, lt->latmat); @@ -470,7 +470,7 @@ typedef struct { static void init_curve_deform(Object *par, Object *ob, CurveDeform *cd, int dloc) { invert_m4_m4(ob->imat, ob->obmat); - mul_m4_m4m4(cd->objectspace, par->obmat, ob->imat); + mult_m4_m4m4(cd->objectspace, ob->imat, par->obmat); invert_m4_m4(cd->curvespace, cd->objectspace); copy_m3_m4(cd->objectspace3, cd->objectspace); diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c index 0883ec121d6..57fc7473860 100644 --- a/source/blender/blenkernel/intern/mball.c +++ b/source/blender/blenkernel/intern/mball.c @@ -1679,7 +1679,7 @@ float init_meta(Scene *scene, Object *ob) /* return totsize */ temp2[3][1]= ml->y; temp2[3][2]= ml->z; - mul_m4_m4m4(temp1, temp3, temp2); + mult_m4_m4m4(temp1, temp2, temp3); /* make a copy because of duplicates */ mainb[a]= new_pgn_element(sizeof(MetaElem)); @@ -1691,9 +1691,9 @@ float init_meta(Scene *scene, Object *ob) /* return totsize */ /* mat is the matrix to transform from mball into the basis-mball */ invert_m4_m4(obinv, obmat); - mul_m4_m4m4(temp2, bob->obmat, obinv); + mult_m4_m4m4(temp2, obinv, bob->obmat); /* MetaBall transformation */ - mul_m4_m4m4(mat, temp1, temp2); + mult_m4_m4m4(mat, temp2, temp1); invert_m4_m4(imat,mat); diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 29494f02d10..28c1aacdec5 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1363,7 +1363,7 @@ void object_make_proxy(Object *ob, Object *target, Object *gob) * this is closer to making a copy of the object - in-place. */ if(gob) { ob->rotmode= target->rotmode; - mul_m4_m4m4(ob->obmat, target->obmat, gob->obmat); + mult_m4_m4m4(ob->obmat, gob->obmat, target->obmat); if(gob->dup_group) { /* should always be true */ float tvec[3]; copy_v3_v3(tvec, gob->dup_group->dupli_ofs); @@ -1589,9 +1589,9 @@ void object_apply_mat4(Object *ob, float mat[][4], const short use_compat, const if(use_parent && ob->parent) { float rmat[4][4], diff_mat[4][4], imat[4][4]; - mul_m4_m4m4(diff_mat, ob->parentinv, ob->parent->obmat); + mult_m4_m4m4(diff_mat, ob->parent->obmat, ob->parentinv); invert_m4_m4(imat, diff_mat); - mul_m4_m4m4(rmat, mat, imat); /* get the parent relative matrix */ + mult_m4_m4m4(rmat, imat, mat); /* get the parent relative matrix */ object_apply_mat4(ob, rmat, use_compat, FALSE); /* same as below, use rmat rather than mat */ @@ -1715,7 +1715,7 @@ static void ob_parcurve(Scene *scene, Object *ob, Object *par, float mat[][4]) if(cu->flag & CU_PATH_RADIUS) { float tmat[4][4], rmat[4][4]; scale_m4_fl(tmat, radius); - mul_m4_m4m4(rmat, mat, tmat); + mult_m4_m4m4(rmat, tmat, mat); copy_m4_m4(mat, rmat); } @@ -2520,7 +2520,7 @@ void object_handle_update(Scene *scene, Object *ob) if(ob->proxy_from->proxy_group) {/* transform proxy into group space */ Object *obg= ob->proxy_from->proxy_group; invert_m4_m4(obg->imat, obg->obmat); - mul_m4_m4m4(ob->obmat, ob->proxy_from->obmat, obg->imat); + mult_m4_m4m4(ob->obmat, obg->imat, ob->proxy_from->obmat); if(obg->dup_group) { /* should always be true */ add_v3_v3(ob->obmat[3], obg->dup_group->dupli_ofs); } diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index 000df5e721d..a3e13b48fe4 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -709,8 +709,8 @@ void psys_render_set(Object *ob, ParticleSystem *psys, float viewmat[][4], float psys->childcachebufs.first = psys->childcachebufs.last = NULL; copy_m4_m4(data->winmat, winmat); - mul_m4_m4m4(data->viewmat, ob->obmat, viewmat); - mul_m4_m4m4(data->mat, data->viewmat, winmat); + mult_m4_m4m4(data->viewmat, viewmat, ob->obmat); + mult_m4_m4m4(data->mat, winmat, data->viewmat); data->winx= winx; data->winy= winy; @@ -3374,7 +3374,7 @@ void psys_mat_hair_to_global(Object *ob, DerivedMesh *dm, short from, ParticleDa psys_mat_hair_to_object(ob, dm, from, pa, facemat); - mul_m4_m4m4(hairmat, facemat, ob->obmat); + mult_m4_m4m4(hairmat, ob->obmat, facemat); } /************************************************/ diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c index e2b0e823905..828ecb2d535 100644 --- a/source/blender/blenkernel/intern/tracking.c +++ b/source/blender/blenkernel/intern/tracking.c @@ -1484,7 +1484,7 @@ static int retrieve_libmv_reconstruct_tracks(MovieReconstructContext *context, M } if(origin_set) - mul_m4_m4m4(mat, mat, imat); + mult_m4_m4m4(mat, imat, mat); copy_m4_m4(reconstructed[reconstruction->camnr].mat, mat); reconstructed[reconstruction->camnr].framenr= a; @@ -1914,7 +1914,7 @@ void BKE_tracking_projection_matrix(MovieTracking *tracking, int framenr, int wi float imat[4][4]; invert_m4_m4(imat, camera->mat); - mul_m4_m4m4(mat, imat, winmat); + mult_m4_m4m4(mat, winmat, imat); } else copy_m4_m4(mat, winmat); } |