Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGaia Clary <gaia.clary@machinimatrix.org>2016-09-20 18:32:44 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2016-09-22 12:07:36 +0300
commit83bbf57b5b734682b40c9f219a914d0424941be9 (patch)
treeb65242de804984983aba60b9e6a1607dac980126
parentea7d500b6d4f290ab0892e966b56de6db7f9f3ca (diff)
regression fix for 1346482d23f167fa57049128384246397fda8d27: The length of leaf bones should always be set to the length of the smallest bone. since the mentioned commit the importer did only recalculate the leaf bone length when the 'fix leaf bones' option was also enabled.
-rw-r--r--source/blender/collada/ArmatureImporter.cpp19
-rw-r--r--source/blender/collada/ArmatureImporter.h2
2 files changed, 7 insertions, 14 deletions
diff --git a/source/blender/collada/ArmatureImporter.cpp b/source/blender/collada/ArmatureImporter.cpp
index 1bc2bff74e3..d97fb55af9c 100644
--- a/source/blender/collada/ArmatureImporter.cpp
+++ b/source/blender/collada/ArmatureImporter.cpp
@@ -221,7 +221,7 @@ int ArmatureImporter::create_bone(SkinInfo *skin, COLLADAFW::Node *node, EditBon
* tail locations for the affected bones (nodes which don't have any connected child)
* Hint: The extended_bones set gets populated in ArmatureImporter::create_bone
**/
-void ArmatureImporter::fix_leaf_bones(bArmature *armature, Bone *bone)
+void ArmatureImporter::fix_leaf_bones(bArmature *armature, Bone *bone, bool fix_orientation)
{
if (bone == NULL)
return;
@@ -237,7 +237,7 @@ void ArmatureImporter::fix_leaf_bones(bArmature *armature, Bone *bone)
EditBone *ebone = bc_get_edit_bone(armature, bone->name);
float vec[3];
- if (ebone->parent != NULL) {
+ if (ebone->parent != NULL && fix_orientation) {
EditBone *parent = ebone->parent;
sub_v3_v3v3(vec, ebone->head, parent->head);
if (len_squared_v3(vec) < MINIMUM_BONE_LENGTH)
@@ -257,7 +257,7 @@ void ArmatureImporter::fix_leaf_bones(bArmature *armature, Bone *bone)
}
for (Bone *child = (Bone *)bone->childbase.first; child; child = child->next) {
- fix_leaf_bones(armature, child);
+ fix_leaf_bones(armature, child, fix_orientation);
}
}
@@ -756,17 +756,10 @@ void ArmatureImporter::make_armatures(bContext *C, std::vector<Object *> &object
/* and step back to edit mode to fix the leaf nodes */
ED_armature_to_edit(armature);
- if (this->import_settings->fix_orientation || this->import_settings->find_chains) {
+ if (this->import_settings->find_chains)
+ connect_bone_chains(armature, (Bone *)armature->bonebase.first, UNLIMITED_CHAIN_MAX);
- if (this->import_settings->find_chains)
- connect_bone_chains(armature, (Bone *)armature->bonebase.first, UNLIMITED_CHAIN_MAX);
-
- if (this->import_settings->fix_orientation)
- fix_leaf_bones(armature, (Bone *)armature->bonebase.first);
-
- // exit armature edit mode
-
- }
+ fix_leaf_bones(armature, (Bone *)armature->bonebase.first, this->import_settings->fix_orientation);
fix_parent_connect(armature, (Bone *)armature->bonebase.first);
diff --git a/source/blender/collada/ArmatureImporter.h b/source/blender/collada/ArmatureImporter.h
index e006ccbc94a..524c524c9c9 100644
--- a/source/blender/collada/ArmatureImporter.h
+++ b/source/blender/collada/ArmatureImporter.h
@@ -111,7 +111,7 @@ private:
BoneExtended &add_bone_extended(EditBone *bone, COLLADAFW::Node * node, int sibcount, std::vector<std::string> &layer_labels);
void clear_extended_boneset();
- void fix_leaf_bones(bArmature *armature, Bone *bone);
+ void fix_leaf_bones(bArmature *armature, Bone *bone, bool fix_orientation);
void fix_parent_connect(bArmature *armature, Bone *bone);
void connect_bone_chains(bArmature *armature, Bone *bone, const int max_chain_length);