diff options
Diffstat (limited to 'source/blender/ikplugin')
-rw-r--r-- | source/blender/ikplugin/intern/iksolver_plugin.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/source/blender/ikplugin/intern/iksolver_plugin.c b/source/blender/ikplugin/intern/iksolver_plugin.c index b160e7346bd..6eb1ef56094 100644 --- a/source/blender/ikplugin/intern/iksolver_plugin.c +++ b/source/blender/ikplugin/intern/iksolver_plugin.c @@ -109,7 +109,9 @@ static void initialize_posetree(struct Object *ob, bPoseChannel *pchan_tip) if(tree==NULL) { /* make new tree */ tree= MEM_callocN(sizeof(PoseTree), "posetree"); - + + tree->type= CONSTRAINT_TYPE_KINEMATIC; + tree->iterations= data->iterations; tree->totchannel= segcount; tree->stretch = (data->flag & CONSTRAINT_IK_STRETCH); @@ -503,6 +505,10 @@ void iksolver_execute_tree(struct Scene *scene, struct Object *ob, struct bPose PoseTree *tree= pchan->iktree.first; int a; + /* stop on the first tree that isn't a standard IK chain */ + if (tree->type != CONSTRAINT_TYPE_KINEMATIC) + return; + /* 4. walk over the tree for regular solving */ for(a=0; a<tree->totchannel; a++) { if(!(tree->pchan[a]->flag & POSE_DONE)) // successive trees can set the flag |