svn merge -r40197:40311 ^/trunk/blender
[blender.git] / source / blender / collada / TransformWriter.cpp
index 546ca3e30192fab64652cd3290d7d991e8a54ab5..34d13a2184d2fa8c72d4c07002efa26d1d89aac2 100644 (file)
@@ -48,9 +48,15 @@ void TransformWriter::add_node_transform(COLLADASW::Node& node, float mat[][4],
                copy_m4_m4(local, mat);
        }
 
+       double dmat[4][4];
+       UnitConverter* converter = new UnitConverter();
+       converter->mat4_to_dae_double(dmat,local);
+
        TransformBase::decompose(local, loc, rot, NULL, scale);
-       
-       add_transform(node, loc, rot, scale);
+       if ( node.getType() == COLLADASW::Node::JOINT)
+               node.addMatrix("transform",dmat);
+       else
+               add_transform(node, loc, rot, scale);
 }
 
 void TransformWriter::add_node_transform_ob(COLLADASW::Node& node, Object *ob)
@@ -101,9 +107,9 @@ void TransformWriter::add_transform(COLLADASW::Node& node, float loc[3], float r
        /*node.addRotateZ("rotationZ", COLLADABU::Math::Utils::radToDegF(rot[2]));
        node.addRotateY("rotationY", COLLADABU::Math::Utils::radToDegF(rot[1]));
        node.addRotateX("rotationX", COLLADABU::Math::Utils::radToDegF(rot[0]));*/
-       node.addRotateZ("rotationZ", rot[2] * 180.0f/M_PI);
-       node.addRotateY("rotationY", (rot[1]* 180.0f/M_PI));
-       node.addRotateX("rotationX", (rot[0]* 180.0f/M_PI));
+       node.addRotateZ("rotationZ", RAD2DEGF(rot[2]));
+       node.addRotateY("rotationY", RAD2DEGF(rot[1]));
+       node.addRotateX("rotationX", RAD2DEGF(rot[0]));
 
        node.addScale("scale", scale[0], scale[1], scale[2]);
 }