Rotation Limits for IK

Hey everyone,
so I’ve been trying to setup IK with angular Limits and so far it has been a nightmare.
I have more than two bones, so I cannot use any of the two-bone IK’s. My model is a robot. So I need something for bigger chains, which leaves me with FABRIK and CCDIK. FABRIK has no way of setting any angular limits, CCDIK only supports symmetric limits (which make no sense to me at all).
I would simply need limits per Axis.

I’ve tried creating a physics asset but that has made things even worse, and makes it more of a hassle in general. I also kinda don’t need it so I’d try to avoid it.

This leaves me with the ApplyLimits node within the Animation Graph. This guy is not behaving well either. So far, I have used FABRIK and applied the ApplyLimits node after, but something seems to be an issue there. If I set it up the same way as my physics asset is set up (which looks fine in simulation), something is wrong with the Axes. I’ve found a post suggesting that the min/max values of X and Z are essentially flipped, so I tried that, and it didn’t help either.

So with FABRIK + ApplyLimits I get funny flippings and instead of moving up and down it does something else.
If I use Physics with a weight of 0.5, CCDIK is not “strong enough” to lift the arm to the correct position, even when in simulation of PhAt the arm can reach that pose.
FABRIK Ignores physics entierly so that’s not an option either.

So any ideas? Am I missing something? To sum up: I need an IK solver, for a longer than 2 chain elements, with angular constraints. The model is a robot and the hand/End effector position is mapped to a VR Motion Controller.

So far my options are either fiddle around with apply limits or implement my own IK with limits.

I’d be thankful for any suggestions. :slight_smile:

I was bound to version 4.22 due to other plugins I had to use, and it didn’t have that option. I’ve also found out about the newest version when it was way too late.
I’ve implemented my own node now which uses KDL. It does not always find a solution, which makes it just more realistic for my use case. :slight_smile:

Try Full body IK.
It’s experimental, but works fine for me in 4.26. I use it to simulate an ROV robotic arm. 3 joints, each has only 1 degree of freedom, imitating classic angle motor.
FBIK has to be turned on in Plugins, otherwise it, won’t be available in the graph.

Cheers,
Kuba

1 Like