diff options
author | Gaia Clary <gaia.clary@machinimatrix.org> | 2016-09-20 18:32:44 +0300 |
---|---|---|
committer | Gaia Clary <gaia.clary@machinimatrix.org> | 2016-09-20 18:33:17 +0300 |
commit | 2382d1c401d1c271fa47122a36b77f9b6f06a32f (patch) | |
tree | 37fff6d30a7f16cb25260e472d9b2e5c2f044e1c /source/blender/collada/ArmatureImporter.cpp | |
parent | a5f14ad1a232debf108d1093d6d285c835754b90 (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.
Diffstat (limited to 'source/blender/collada/ArmatureImporter.cpp')
-rw-r--r-- | source/blender/collada/ArmatureImporter.cpp | 19 |
1 files changed, 6 insertions, 13 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); |