[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12522] trunk/blender/source/blender/src/ transform_conversions.c: Patch #7722: no 'Auto IK' for solitary ( unconnected) bone

Joshua Leung aligorith at gmail.com
Thu Nov 8 09:27:22 CET 2007


Revision: 12522
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12522
Author:   aligorith
Date:     2007-11-08 09:27:21 +0100 (Thu, 08 Nov 2007)

Log Message:
-----------
Patch #7722: no 'Auto IK' for solitary (unconnected) bone

'Auto IK' is a great feature, however when solitary unconnected bone (without connected child bones) is grabbed it can't be moved because of IK. This can be really annoying. Preventing 'Auto IK' for solitary bones would improve user-experience by making mixing of FK and IK  more convenient while using 'Auto IK'.

Patch by Teppo Kansala (teppoka). 

Modified Paths:
--------------
    trunk/blender/source/blender/src/transform_conversions.c

Modified: trunk/blender/source/blender/src/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/src/transform_conversions.c	2007-11-08 08:06:50 UTC (rev 12521)
+++ trunk/blender/source/blender/src/transform_conversions.c	2007-11-08 08:27:21 UTC (rev 12522)
@@ -765,6 +765,7 @@
 {
 	bArmature *arm;
 	bPoseChannel *pchan, *pchansel= NULL;
+	Bone *bonec;
 	
 	if(ob==NULL || ob->pose==NULL || (ob->flag & OB_POSEMODE)==0)
 		return;
@@ -782,6 +783,14 @@
 		}
 	}
 	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 @@
 	G.scene->recalc |= SCE_PRV_CHANGED;	/* test for 3d preview */
 }
 
+





More information about the Bf-blender-cvs mailing list