diff options
author | Domino Marama <domino@dominodesigns.info> | 2012-02-05 20:19:28 +0400 |
---|---|---|
committer | Domino Marama <domino@dominodesigns.info> | 2012-02-05 20:19:28 +0400 |
commit | 2cb3fe3dfd830386633e5642d35108be8b6b6a17 (patch) | |
tree | 9fde457bc9f80d5be215c1bd7c130bca6f0dccc9 /source/blender/collada/TransformWriter.cpp | |
parent | fa163003c98e09f00bcbbee7838d5ed487d55cc8 (diff) |
Patch #30050 by Juha Mäki-Kanto (kanttori)
Fixes for Collada exporter.
Adds Second Life compatibility for armatures
Adds objects parentinverse to exported transform if it's non-identity
Fix mismatch between add_inv_bind_mats and add_joints_source accessor counts
Fix bone exports in world space should be local space
Diffstat (limited to 'source/blender/collada/TransformWriter.cpp')
-rw-r--r-- | source/blender/collada/TransformWriter.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/source/blender/collada/TransformWriter.cpp b/source/blender/collada/TransformWriter.cpp index 379a0619040..a2bca6733e1 100644 --- a/source/blender/collada/TransformWriter.cpp +++ b/source/blender/collada/TransformWriter.cpp @@ -59,6 +59,7 @@ void TransformWriter::add_node_transform(COLLADASW::Node& node, float mat[][4], void TransformWriter::add_node_transform_ob(COLLADASW::Node& node, Object *ob) { + /* float rot[3], loc[3], scale[3]; if (ob->parent) { @@ -91,6 +92,27 @@ void TransformWriter::add_node_transform_ob(COLLADASW::Node& node, Object *ob) } add_transform(node, loc, rot, scale); + */ + + /* Using parentinv should allow use of existing curves */ + // If parentinv is identity don't add it. + bool add_parinv = false; + for(int i = 0; i < 16; ++i) + { + float f = (i%4 == i/4) ? 1.0f : 0.0f ; + if(ob->parentinv[i%4][i/4] != f) add_parinv = true; + } + + // Eat this 3ds Max et friends + if(add_parinv) + { + double dmat[4][4]; + UnitConverter converter; + converter.mat4_to_dae_double(dmat, ob->parentinv); + node.addMatrix("parentinverse", dmat); + } + + add_transform(node, ob->loc, ob->rot, ob->size); } void TransformWriter::add_node_transform_identity(COLLADASW::Node& node) |