From 2ee74be88cb045d403bc5145647da4262f131077 Mon Sep 17 00:00:00 2001 From: Sukhitha Prabhath Jayathilake Date: Thu, 18 Aug 2011 19:16:36 +0000 Subject: Blender tip profile for bones with 2 or more children. --- source/blender/collada/ArmatureExporter.cpp | 5 ++++- source/blender/collada/ArmatureImporter.cpp | 8 ++------ 2 files changed, 6 insertions(+), 7 deletions(-) (limited to 'source/blender/collada') diff --git a/source/blender/collada/ArmatureExporter.cpp b/source/blender/collada/ArmatureExporter.cpp index 1c81c0b6e76..753d57b5af8 100644 --- a/source/blender/collada/ArmatureExporter.cpp +++ b/source/blender/collada/ArmatureExporter.cpp @@ -177,7 +177,7 @@ void ArmatureExporter::add_bone_node(Bone *bone, Object *ob_arm) node.setNodeName(node_name); node.setNodeSid(node_sid); - if ( bone->childbase.first == NULL ) + if ( bone->childbase.first == NULL || BLI_countlist(&(bone->childbase))>=2) add_blender_leaf_bone( bone, ob_arm , node ); else{ node.start(); @@ -202,6 +202,9 @@ void ArmatureExporter::add_blender_leaf_bone(Bone *bone, Object *ob_arm, COLLADA node.addExtraTechniqueParameter("blender", "tip_y", bone->tail[1] ); node.addExtraTechniqueParameter("blender", "tip_z", bone->tail[2] ); + for (Bone *child = (Bone*)bone->childbase.first; child; child = child->next) { + add_bone_node(child, ob_arm); + } node.end(); } diff --git a/source/blender/collada/ArmatureImporter.cpp b/source/blender/collada/ArmatureImporter.cpp index 81d785371df..381a6cc06a9 100644 --- a/source/blender/collada/ArmatureImporter.cpp +++ b/source/blender/collada/ArmatureImporter.cpp @@ -83,14 +83,11 @@ void ArmatureImporter::create_unskinned_bone( COLLADAFW::Node *node, EditBone *p float parent_mat[][4], Object * ob_arm) { float mat[4][4]; - float obmat[4][4]; + float obmat[4][4]; // object-space get_node_mat(obmat, node, NULL, NULL); - // get world-space - - EditBone *bone = ED_armature_edit_bone_add((bArmature*)ob_arm->data, (char*)bc_get_joint_name(node)); totbone++; @@ -151,7 +148,6 @@ void ArmatureImporter::create_unskinned_bone( COLLADAFW::Node *node, EditBone *p // in second case it's not a leaf bone, but we handle it the same way if (!children.getCount() || children.getCount() > 1) { - add_leaf_bone(mat, bone, node); } @@ -659,7 +655,7 @@ void ArmatureImporter::make_armatures(bContext *C) } //for bones without skins - create_armature_bones(); + //create_armature_bones(); } #if 0 -- cgit v1.2.3