From da6cd77628103fd4e95d13cf339420a15bad64ee Mon Sep 17 00:00:00 2001 From: Jon Allee <> Date: Tue, 14 Mar 2017 14:17:04 +0100 Subject: fix D2552: Collada - use unique id for bones with same name but in different armatures. Co-authored-by: Gaia --- source/blender/collada/ArmatureExporter.cpp | 5 ----- source/blender/collada/ArmatureExporter.h | 2 -- source/blender/collada/collada_internal.cpp | 7 ++++++- source/blender/collada/collada_internal.h | 1 + 4 files changed, 7 insertions(+), 8 deletions(-) (limited to 'source/blender/collada') diff --git a/source/blender/collada/ArmatureExporter.cpp b/source/blender/collada/ArmatureExporter.cpp index 9c26ba83b44..40065956ecb 100644 --- a/source/blender/collada/ArmatureExporter.cpp +++ b/source/blender/collada/ArmatureExporter.cpp @@ -156,11 +156,6 @@ void ArmatureExporter::find_objects_using_armature(Object *ob_arm, std::vector& objects, Scene *sce); #endif - std::string get_joint_sid(Bone *bone, Object *ob_arm); - // Scene, SceneExporter and the list of child_objects // are required for writing bone parented objects void add_bone_node(Bone *bone, Object *ob_arm, Scene *sce, SceneExporter *se, diff --git a/source/blender/collada/collada_internal.cpp b/source/blender/collada/collada_internal.cpp index e1a13559b08..70b44ebc222 100644 --- a/source/blender/collada/collada_internal.cpp +++ b/source/blender/collada/collada_internal.cpp @@ -341,7 +341,12 @@ std::string get_light_id(Object *ob) std::string get_joint_id(Bone *bone, Object *ob_arm) { - return translate_id(/*id_name(ob_arm) + "_" +*/ bone->name); + return translate_id(id_name(ob_arm) + "_" + bone->name); +} + +std::string get_joint_sid(Bone *bone, Object *ob_arm) +{ + return translate_id(bone->name); } std::string get_camera_id(Object *ob) diff --git a/source/blender/collada/collada_internal.h b/source/blender/collada/collada_internal.h index 4aa637a6876..482dbf9ab31 100644 --- a/source/blender/collada/collada_internal.h +++ b/source/blender/collada/collada_internal.h @@ -104,6 +104,7 @@ extern std::string get_geometry_id(Object *ob, bool use_instantiation); extern std::string get_light_id(Object *ob); extern std::string get_joint_id(Bone *bone, Object *ob_arm); +extern std::string get_joint_sid(Bone *bone, Object *ob_arm); extern std::string get_camera_id(Object *ob); -- cgit v1.2.3 From 4877c9362aae969a74744dcb4038e088cd56b65f Mon Sep 17 00:00:00 2001 From: Gaia Clary Date: Tue, 14 Mar 2017 15:07:31 +0100 Subject: Collada simplify: avoid duplicate negation in boolean --- source/blender/collada/ArmatureImporter.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'source/blender/collada') diff --git a/source/blender/collada/ArmatureImporter.cpp b/source/blender/collada/ArmatureImporter.cpp index 17334ca326c..f4ce3992771 100644 --- a/source/blender/collada/ArmatureImporter.cpp +++ b/source/blender/collada/ArmatureImporter.cpp @@ -106,7 +106,7 @@ int ArmatureImporter::create_bone(SkinInfo *skin, COLLADAFW::Node *node, EditBon */ std::map::iterator skin_it; - bool bone_is_not_skinned = true; + bool bone_is_skinned = false; for (skin_it = skin_by_data_uid.begin(); skin_it != skin_by_data_uid.end(); skin_it++) { SkinInfo *b = &skin_it->second; @@ -123,13 +123,13 @@ int ArmatureImporter::create_bone(SkinInfo *skin, COLLADAFW::Node *node, EditBon mul_m4_m4m4(mat, invmat, mat); } - bone_is_not_skinned = false; + bone_is_skinned = true; break; } } // create a bone even if there's no joint data for it (i.e. it has no influence) - if (bone_is_not_skinned) { + if (!bone_is_skinned) { float obmat[4][4]; // bone-space get_node_mat(obmat, node, NULL, NULL); @@ -141,6 +141,7 @@ int ArmatureImporter::create_bone(SkinInfo *skin, COLLADAFW::Node *node, EditBon else { copy_m4_m4(mat, obmat); } + } if (parent) bone->parent = parent; -- cgit v1.2.3 From 647fb6ef1ed36488b1ae13570b7385367e7346c9 Mon Sep 17 00:00:00 2001 From: Gaia Clary Date: Tue, 14 Mar 2017 19:31:15 +0100 Subject: fix D2552: Collada - Follow up change to complete the fix in rBda6cd7762810 (use unique id for bones with same name in different armatures) --- source/blender/collada/ControllerExporter.cpp | 5 ----- source/blender/collada/ControllerExporter.h | 2 -- 2 files changed, 7 deletions(-) (limited to 'source/blender/collada') diff --git a/source/blender/collada/ControllerExporter.cpp b/source/blender/collada/ControllerExporter.cpp index 06e151c363b..a868adc1e66 100644 --- a/source/blender/collada/ControllerExporter.cpp +++ b/source/blender/collada/ControllerExporter.cpp @@ -157,11 +157,6 @@ void ArmatureExporter::find_objects_using_armature(Object *ob_arm, std::vector& objects, Scene *sce); #endif - std::string get_joint_sid(Bone *bone, Object *ob_arm); - std::string get_controller_id(Object *ob_arm, Object *ob); std::string get_controller_id(Key *key, Object *ob); -- cgit v1.2.3