Apply [#28287] COLLADA fix for inverse bind matrix of skin controller
authorNathan Letwory <nathan@letworyinteractive.com>
Thu, 18 Aug 2011 09:14:27 +0000 (09:14 +0000)
committerNathan Letwory <nathan@letworyinteractive.com>
Thu, 18 Aug 2011 09:14:27 +0000 (09:14 +0000)
Patch by Pelle Johnsen

source/blender/collada/ArmatureExporter.cpp

index b033c780530645504c3a1485ab368b5418a2511f..1c81c0b6e76152953bd932c4ad098566b7b41f9e 100644 (file)
@@ -368,17 +368,12 @@ std::string ArmatureExporter::add_inv_bind_mats_source(Object *ob_arm, ListBase
 
                        bPoseChannel *pchan = get_pose_channel(pose, def->name);
 
-                       float pose_mat[4][4];
                        float mat[4][4];
                        float world[4][4];
                        float inv_bind_mat[4][4];
 
-                       // pose_mat is the same as pchan->pose_mat, but without the rotation
-                       unit_m4(pose_mat);
-                       translate_m4(pose_mat, pchan->pose_head[0], pchan->pose_head[1], pchan->pose_head[2]);
-
-                       // make world-space matrix, pose_mat is armature-space
-                       mul_m4_m4m4(world, pose_mat, ob_arm->obmat);
+                       // make world-space matrix, arm_mat is armature-space
+                       mul_m4_m4m4(world, pchan->bone->arm_mat, ob_arm->obmat);
                        
                        invert_m4_m4(mat, world);
                        converter.mat4_to_dae(inv_bind_mat, mat);