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:
-rw-r--r--source/blender/src/transform_conversions.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/source/blender/src/transform_conversions.c b/source/blender/src/transform_conversions.c
index 820d79eb809..3dc757f11ca 100644
--- a/source/blender/src/transform_conversions.c
+++ b/source/blender/src/transform_conversions.c
@@ -765,6 +765,7 @@ static void pose_grab_with_ik(Object *ob)
{
bArmature *arm;
bPoseChannel *pchan, *pchansel= NULL;
+ Bone *bonec;
if(ob==NULL || ob->pose==NULL || (ob->flag & OB_POSEMODE)==0)
return;
@@ -782,6 +783,14 @@ static void pose_grab_with_ik(Object *ob)
}
}
if(pchan || pchansel==NULL) return;
+
+ /* rule: no IK for solitary (unconnected) bone */
+ for(bonec=pchansel->bone->childbase.first; bonec; bonec=bonec->next) {
+ if(bonec->flag & BONE_CONNECTED) {
+ break;
+ }
+ }
+ if ((pchansel->bone->flag & BONE_CONNECTED)==0 && (bonec == NULL)) return;
/* rule: if selected Bone is not a root bone, it gets a temporal IK */
if(pchansel->parent) {
@@ -3240,3 +3249,4 @@ void createTransData(TransInfo *t)
G.scene->recalc |= SCE_PRV_CHANGED; /* test for 3d preview */
}
+