[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54677] trunk/blender/source/blender/ collada/DocumentImporter.cpp: fix #34049: Collada importer doesn' t import armature.
Gaia Clary
gaia.clary at machinimatrix.org
Wed Feb 20 01:06:32 CET 2013
Revision: 54677
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54677
Author: gaiaclary
Date: 2013-02-20 00:06:31 +0000 (Wed, 20 Feb 2013)
Log Message:
-----------
fix #34049: Collada importer doesn't import armature. Added support for 'rootless' armature similar to Maya.
Modified Paths:
--------------
trunk/blender/source/blender/collada/DocumentImporter.cpp
Modified: trunk/blender/source/blender/collada/DocumentImporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/DocumentImporter.cpp 2013-02-19 20:04:08 UTC (rev 54676)
+++ trunk/blender/source/blender/collada/DocumentImporter.cpp 2013-02-20 00:06:31 UTC (rev 54677)
@@ -252,8 +252,9 @@
for (std::vector<const COLLADAFW::VisualScene *>::iterator it = vscenes.begin(); it != vscenes.end(); it++) {
const COLLADAFW::NodePointerArray& roots = (*it)->getRootNodes();
- for (unsigned int i = 0; i < roots.getCount(); i++)
+ for (unsigned int i = 0; i < roots.getCount(); i++) {
translate_anim_recursive(roots[i], NULL, NULL);
+ }
}
if (libnode_ob.size()) {
@@ -312,14 +313,20 @@
#endif
unsigned int i;
+
//for (i = 0; i < 4; i++)
// ob =
anim_importer.translate_Animations(node, root_map, object_map, FW_object_map);
- COLLADAFW::NodePointerArray &children = node->getChildNodes();
- for (i = 0; i < children.getCount(); i++) {
- translate_anim_recursive(children[i], node, NULL);
+ if (node->getType() == COLLADAFW::Node::JOINT && par == NULL) {
+ translate_anim_recursive(node, node, parob);
}
+ else {
+ COLLADAFW::NodePointerArray &children = node->getChildNodes();
+ for (i = 0; i < children.getCount(); i++) {
+ translate_anim_recursive(children[i], node, NULL);
+ }
+ }
}
/** When this method is called, the writer must write the global document asset.
@@ -465,7 +472,18 @@
name.c_str());
if (is_joint) {
+ if (parent_node == NULL) {
+ par = bc_add_object(sce, OB_ARMATURE, std::string("Armature").c_str());
+ //anim_importer.read_node_transform(node, par);
+ objects_done->push_back(par);
+ object_map.insert(std::make_pair<COLLADAFW::UniqueId, Object *>(node->getUniqueId(), par));
+ node_map[node->getUniqueId()] = node;
+ }
armature_importer.add_joint(node, parent_node == NULL || parent_node->getType() != COLLADAFW::Node::JOINT, par, sce);
+
+ if (parent_node == NULL) {
+ return objects_done;
+ }
}
else {
COLLADAFW::InstanceGeometryPointerArray &geom = node->getInstanceGeometries();
More information about the Bf-blender-cvs
mailing list