So my issue with IKControl in rotation mode is that it doesn’t keep fixed offset from the target. Whenever I start rotating the target object the difference in orientation between endeffector and target just increases to the point when endeffector is looking towards different direction.
It is easy to reproduce: just create a simple model with a rootpart, a part for chainroot and a part for endeffector, along with AnimationController + IKControl and Animator instances. connect parts to rootpart using AnimationConstraints, point ikcontrol to parts and set it to rotation. create new part to be used as target and point ikcontrol to it. you can also add hinges/ball sockets etc, but that s optional. Now start the test and keep rotating the target part in different directions - you’ll notice that endeffector do not follow rotation exactly, longer you rotate the target, difference in rotations appear and just increases the longer you rotate the target. It seems like IKcontrol “forgets” starting orientation of the endeffector because of microlags.
This bug also makes orientation offset property on IKcontrol useless.
Expected behavior
I expect either of two:
- IKControl to work as AlignOrientation where endeffector reaches exact target’s orientation no matter how long and in which directions you twist the target.
- If there is difference in starting rotations between endeffector and the target, it should keep this difference no matter how target is rotated. the difference should be fixed and should not change during constant rotations of the target.
EDIT: I tested it a bit more, and it seems that limiting the chainroot using any constraints adds this offset. Without the constraints(hinge, etc), i.e. when chainroot is free, it almost do not create gaps in rotation. I twisted it for 10 seconds, and the difference created is like ~0.1-0.2 degrees. But if chainroot is limited by the hinge, the gap increases noticably. That’s weird too, because I rotate the target in axis allowed by the hinge, and endeffector actually rotates, but starts to be late over time. So, sorry, if thats intended.