I rigged a classic industrial robot, it works well with IK constraint but in a certain position where the bones are in a straight line, it seems the IK solver can’t decide which way to rotate my bones and the rig jumps. At frame 112 and 768. There are two bones that could do the same rotation in the problematic position. How could I avoid the jumps in the animation?
Please find the robot attached.
The rotation of the bones are limited but I think it’s necessary for me.
Hey, Welcome to BA
When posting a file just include what is necessary for your issue
Any how – Frames (112,113) (368) (768,769) bone "Robot B7"and “Robot B6” become removed from “Robot B IK movement”. Unlock the IK locks on “Robot B6” and that should fix it - at least it did for me. I don;t understand why you have keyframes keyed on frame #0, then on frame #1, but then again there are quite a few things here that leave me scratching my head, hope this helps.
Post back if you have more issues
Thanks for your reply but I think I can’t turn off the lock for the Robot B6 bone because I need to limit its rotation. If I don’t lock it, the head will rotate in impossible directions. It should be able to rotate only on its local Y angle.
It’s in a line with the Robot B4 bone so both could do the necessary rotation. I think this is confusing for the IK system but I don’t know how to solve this issue.
The keyframe on 0 and 1 was necessary because of linking and testing not relevant for the IK animation. Also, sorry for the irrelevant parts in the file.
Hey, What is driving the rotation of bone “B4” and forward towards “B6” ?? From “B4” forward on frames 368/369 you have ‘flipping’ taken place, I assume this is not the desired action ?
Ahh, If I disable the C/R on bone “Robot B IK movement” on those frames, the flipping no longer occurs…
Also you are using the ‘rotation’ part of the IK along with ‘position’ - that sometimes becomes problematic especially when you locking axis, if you can get away with turning the ‘rotation’ setting down (maybe as low as it will go) that will/did help some, but I think your issue stems from that C/R const.
EDIT; If I clear the rotations on “Robot B movement empty” &" Robot B rotation empty" - 'B movement" is still upside down - there is where the problem really lies. you have a C/R & C/L relying on that…to be honest, like I said earlier there are too many things that leave me scratching my head…
Yes, the flipping is the problem, I don’t want it.
I want to control the robot (all bones location and rotation) only with IK with the Robot B IK movement bone (it has a copy rotation and location constraint but that shouldn’t be a problem). I want to use only inverse kinematics with locked rotation angles.
You can find here a bit more simple version where only the ‘Robot B movement empty’ controls the movement (loc and rot) of the ‘Robot B IK movement’ bone which is the IK rig target/driver.
The original (right) - is in side view, look at rotations, - the left side pic is when I clear the rots, notice the child empty is upside down but the rots say 0. The bottom pic is where we find out for sure
(1) Basis - is where/what it was before ‘parenting’, notice the quaternion #'s
(2) Local - is where/what it is with ‘parent’ current state, notice the quat #'s , not 0’s like it says in the rotation field in left pic
(3) That is where I unparented it and moved it back to where it was in (2), notice the #'s, back to 0’s (NO Screen shot),didn;t feel like posting 2 pics.
Anywho that’s what your C/L & C/R are ‘seeing’ not whats in the beauty box for rots.
The issue with using ‘Emptys’ has a big draw back too - but how the one got parented upside down, IDK…