diff options
author | Joshua Leung <aligorith@gmail.com> | 2011-11-07 17:25:17 +0400 |
---|---|---|
committer | Joshua Leung <aligorith@gmail.com> | 2011-11-07 17:25:17 +0400 |
commit | 2b6e4f242230d99470ef70c7c00f1809a098d200 (patch) | |
tree | c279b7969e54882a33648ed6e15ff6b56ab1b822 /source/blender/ikplugin/intern | |
parent | 7b43abb90e2895292e183fcbca7140447025acd7 (diff) |
Bugfix [#29064] armature with curve contraint - crash
Spline IK and Auto-IK working together on the same bone chain could
crash due to the somewhat hacky way that they were sharing the same
list for the "iktree" forest. Resolved by doing what I should have
done from the beginning, and made Spline-IK save its ik chains off
into a separate list.
While this fixes the crash, it might be worth investigating outright
disabling this from working in this case, since it can be a bit
confusing to have it appear to not work.
Diffstat (limited to 'source/blender/ikplugin/intern')
-rw-r--r-- | source/blender/ikplugin/intern/iksolver_plugin.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/source/blender/ikplugin/intern/iksolver_plugin.c b/source/blender/ikplugin/intern/iksolver_plugin.c index 787766f0fa6..2a83052c827 100644 --- a/source/blender/ikplugin/intern/iksolver_plugin.c +++ b/source/blender/ikplugin/intern/iksolver_plugin.c @@ -526,12 +526,14 @@ void iksolver_execute_tree(struct Scene *scene, struct Object *ob, struct bPose /* 6. apply the differences to the channels, we need to calculate the original differences first */ - for(a=0; a<tree->totchannel; a++) + for(a=0; a<tree->totchannel; a++) { make_dmats(tree->pchan[a]); + } - for(a=0; a<tree->totchannel; a++) + for(a=0; a<tree->totchannel; a++) { /* sets POSE_DONE */ where_is_ik_bone(tree->pchan[a], tree->basis_change[a]); + } /* 7. and free */ BLI_remlink(&pchan->iktree, tree); |