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/collada/AnimationExporter.cpp | 4 ++-- source/blender/collada/AnimationImporter.cpp | 14 +++++++------- source/blender/collada/ArmatureExporter.cpp | 6 +++--- source/blender/collada/ArmatureImporter.cpp | 10 +++++----- source/blender/collada/DocumentImporter.cpp | 2 +- source/blender/collada/TransformReader.cpp | 2 +- source/blender/collada/TransformWriter.cpp | 4 ++-- source/blender/collada/collada_utils.cpp | 2 +- 8 files changed, 22 insertions(+), 22 deletions(-) (limited to 'source/blender/collada') diff --git a/source/blender/collada/AnimationExporter.cpp b/source/blender/collada/AnimationExporter.cpp index 7bd70e9f289..7b57ed243a1 100644 --- a/source/blender/collada/AnimationExporter.cpp +++ b/source/blender/collada/AnimationExporter.cpp @@ -767,7 +767,7 @@ std::string AnimationExporter::create_4x4_source(std::vector &frames , Ob // compute bone local mat if (bone->parent) { invert_m4_m4(ipar, parchan->pose_mat); - mul_m4_m4m4(mat, pchan->pose_mat, ipar); + mult_m4_m4m4(mat, ipar, pchan->pose_mat); } else copy_m4_m4(mat, pchan->pose_mat); @@ -1274,7 +1274,7 @@ void AnimationExporter::sample_animation(float *v, std::vector &frames, i // compute bone local mat if (bone->parent) { invert_m4_m4(ipar, parchan->pose_mat); - mul_m4_m4m4(mat, pchan->pose_mat, ipar); + mult_m4_m4m4(mat, ipar, pchan->pose_mat); } else copy_m4_m4(mat, pchan->pose_mat); diff --git a/source/blender/collada/AnimationImporter.cpp b/source/blender/collada/AnimationImporter.cpp index 9b4e47615f7..c47e024aba4 100644 --- a/source/blender/collada/AnimationImporter.cpp +++ b/source/blender/collada/AnimationImporter.cpp @@ -723,7 +723,7 @@ void AnimationImporter::apply_matrix_curves( Object * ob, std::vector& // calc M calc_joint_parent_mat_rest(par, NULL, root, node); - mul_m4_m4m4(temp, matfra, par); + mult_m4_m4m4(temp, par, matfra); // evaluate_joint_world_transform_at_frame(temp, NULL, , node, fra); @@ -1276,7 +1276,7 @@ Object *AnimationImporter::translate_animation_OLD(COLLADAFW::Node *node, // calc M calc_joint_parent_mat_rest(par, NULL, root, node); - mul_m4_m4m4(temp, matfra, par); + mult_m4_m4m4(temp, par, matfra); // evaluate_joint_world_transform_at_frame(temp, NULL, , node, fra); @@ -1434,7 +1434,7 @@ void AnimationImporter::evaluate_transform_at_frame(float mat[4][4], COLLADAFW:: float temp[4][4]; copy_m4_m4(temp, mat); - mul_m4_m4m4(mat, m, temp); + mult_m4_m4m4(mat, temp, m); } } @@ -1597,7 +1597,7 @@ void AnimationImporter::get_joint_rest_mat(float mat[4][4], COLLADAFW::Node *roo calc_joint_parent_mat_rest(par, NULL, root, node); get_node_mat(m, node, NULL, NULL); - mul_m4_m4m4(mat, m, par); + mult_m4_m4m4(mat, par, m); } } @@ -1616,7 +1616,7 @@ bool AnimationImporter::calc_joint_parent_mat_rest(float mat[4][4], float par[4] if (par) { float temp[4][4]; get_node_mat(temp, node, NULL, NULL); - mul_m4_m4m4(m, temp, par); + mult_m4_m4m4(m, par, temp); } else { get_node_mat(m, node, NULL, NULL); @@ -1656,7 +1656,7 @@ Object *AnimationImporter::get_joint_object(COLLADAFW::Node *root, COLLADAFW::No float temp[4][4], ipar[4][4]; invert_m4_m4(ipar, par_job->obmat); copy_m4_m4(temp, mat); - mul_m4_m4m4(mat, temp, ipar); + mult_m4_m4m4(mat, ipar, temp); } TransformBase::decompose(mat, job->loc, NULL, job->quat, job->size); @@ -1689,7 +1689,7 @@ bool AnimationImporter::evaluate_joint_world_transform_at_frame(float mat[4][4], if (par) { float temp[4][4]; evaluate_transform_at_frame(temp, node, node == end ? fra : 0.0f); - mul_m4_m4m4(m, temp, par); + mult_m4_m4m4(m, par, temp); } else { evaluate_transform_at_frame(m, node, node == end ? fra : 0.0f); diff --git a/source/blender/collada/ArmatureExporter.cpp b/source/blender/collada/ArmatureExporter.cpp index df786c38c71..fcfc197ce80 100644 --- a/source/blender/collada/ArmatureExporter.cpp +++ b/source/blender/collada/ArmatureExporter.cpp @@ -218,11 +218,11 @@ void ArmatureExporter::add_bone_transform(Object *ob_arm, Bone *bone, COLLADASW: float invpar[4][4]; invert_m4_m4(invpar, parchan->pose_mat); - mul_m4_m4m4(mat, pchan->pose_mat, invpar); + mult_m4_m4m4(mat, invpar, pchan->pose_mat); } else { // get world-space from armature-space - mul_m4_m4m4(mat, pchan->pose_mat, ob_arm->obmat); + mult_m4_m4m4(mat, ob_arm->obmat, pchan->pose_mat); } TransformWriter::add_node_transform(node, mat,NULL ); @@ -374,7 +374,7 @@ std::string ArmatureExporter::add_inv_bind_mats_source(Object *ob_arm, ListBase float inv_bind_mat[4][4]; // make world-space matrix, arm_mat is armature-space - mul_m4_m4m4(world, pchan->bone->arm_mat, ob_arm->obmat); + mult_m4_m4m4(world, ob_arm->obmat, pchan->bone->arm_mat); invert_m4_m4(mat, world); converter.mat4_to_dae(inv_bind_mat, mat); diff --git a/source/blender/collada/ArmatureImporter.cpp b/source/blender/collada/ArmatureImporter.cpp index bababf880a6..4bc0c18551a 100644 --- a/source/blender/collada/ArmatureImporter.cpp +++ b/source/blender/collada/ArmatureImporter.cpp @@ -99,7 +99,7 @@ void ArmatureImporter::create_unskinned_bone( COLLADAFW::Node *node, EditBone *p // get world-space if (parent){ - mul_m4_m4m4(mat, obmat, parent_mat); + mult_m4_m4m4(mat, parent_mat, obmat); } else { @@ -185,7 +185,7 @@ void ArmatureImporter::create_bone(SkinInfo& skin, COLLADAFW::Node *node, EditBo // get world-space if (parent) - mul_m4_m4m4(mat, obmat, parent_mat); + mult_m4_m4m4(mat, parent_mat, obmat); else copy_m4_m4(mat, obmat); @@ -584,17 +584,17 @@ void ArmatureImporter::set_pose ( Object * ob_arm , COLLADAFW::Node * root_node // get world-space if (parentname){ - mul_m4_m4m4(mat, obmat, parent_mat); + mult_m4_m4m4(mat, parent_mat, obmat); bPoseChannel *parchan = get_pose_channel(ob_arm->pose, parentname); - mul_m4_m4m4(pchan->pose_mat, mat , parchan->pose_mat); + mult_m4_m4m4(pchan->pose_mat, parchan->pose_mat, mat ); } else { copy_m4_m4(mat, obmat); float invObmat[4][4]; invert_m4_m4(invObmat, ob_arm->obmat); - mul_m4_m4m4(pchan->pose_mat, mat, invObmat); + mult_m4_m4m4(pchan->pose_mat, invObmat, mat); } mat4_to_axis_angle(ax,&angle,mat); diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp index 267aa925c74..05b2b3b738d 100644 --- a/source/blender/collada/DocumentImporter.cpp +++ b/source/blender/collada/DocumentImporter.cpp @@ -335,7 +335,7 @@ Object* DocumentImporter::create_instance_node(Object *source_ob, COLLADAFW::Nod } } // calc new matrix and apply - mul_m4_m4m4(obn->obmat, mat, obn->obmat); + mult_m4_m4m4(obn->obmat, obn->obmat, mat); object_apply_mat4(obn, obn->obmat, 0, 0); } } diff --git a/source/blender/collada/TransformReader.cpp b/source/blender/collada/TransformReader.cpp index 26049398c26..a73d5243624 100644 --- a/source/blender/collada/TransformReader.cpp +++ b/source/blender/collada/TransformReader.cpp @@ -63,7 +63,7 @@ void TransformReader::get_node_mat(float mat[][4], COLLADAFW::Node *node, std::m } copy_m4_m4(copy, mat); - mul_m4_m4m4(mat, cur, copy); + mult_m4_m4m4(mat, copy, cur); if (animation_map) { // AnimationList that drives this Transformation diff --git a/source/blender/collada/TransformWriter.cpp b/source/blender/collada/TransformWriter.cpp index 2b4864ec32b..379a0619040 100644 --- a/source/blender/collada/TransformWriter.cpp +++ b/source/blender/collada/TransformWriter.cpp @@ -40,7 +40,7 @@ void TransformWriter::add_node_transform(COLLADASW::Node& node, float mat[][4], if (parent_mat) { float invpar[4][4]; invert_m4_m4(invpar, parent_mat); - mul_m4_m4m4(local, mat, invpar); + mult_m4_m4m4(local, invpar, mat); } else { copy_m4_m4(local, mat); @@ -77,7 +77,7 @@ void TransformWriter::add_node_transform_ob(COLLADASW::Node& node, Object *ob) // calculate local mat invert_m4_m4(imat, ob->parent->obmat); - mul_m4_m4m4(mat, tmat, imat); + mult_m4_m4m4(mat, imat, tmat); // done diff --git a/source/blender/collada/collada_utils.cpp b/source/blender/collada/collada_utils.cpp index 6a82446f035..c3aa73510d1 100644 --- a/source/blender/collada/collada_utils.cpp +++ b/source/blender/collada/collada_utils.cpp @@ -89,7 +89,7 @@ int bc_set_parent(Object *ob, Object *par, bContext *C, bool is_parent_space) where_is_object(sce, par); // move child obmat into world space - mul_m4_m4m4(mat, ob->obmat, par->obmat); + mult_m4_m4m4(mat, par->obmat, ob->obmat); copy_m4_m4(ob->obmat, mat); } -- cgit v1.2.3