This is a very overdue follow-up to the hind leg post, I want to talk about a quadruped’s front legs.
The foreleg is completely different from the hind, but often suffers from the same animation and rigging problem, which is how to manage the orientation of the ankle (technically the wrist, in this case). Again, in most rigs I’ve seen, the setup has been more or less a basic inverse foot. But because quadrupeds’ heels dont rest on the ground, they aren’t usually locked to the orientation of the foot, and so if there isn’t some system for resolving the orientation of that joint, it requires a lot of work from the animator to get it looking good.
In general, I would say that the wrist is more often oriented to the forearm than the foot, and this is especially the case when the leg is under tension, which is when maintaining a solid pose is most important. Here’s a picture just after contact and another just before take-off:
As you can see, during the time that the foot is on the ground, the wrist stays relatively in line with the forearm. There is flex, but it’s easier if that flex is managed by a single attribute rather than having to manually rotate an inverse foot to point up the leg.
So in a sense we want the ik to solve from the foot, ignoring the wrist and just keeping those joints in a straight line by default. But we still need to be able to flex and bend the wrist joint on top of this motion. This is another job for nested IK chains!
Create a joint chain for the foreleg including the wrist. This works best if the wrist is in line with the forearm:
Create a second ik chain, but skipping the wrist and going from the elbow straight to the foot. (You can do this by duplicating the chain, reparenting the foot to the elbow, and deleting the wrist joint.) Also you don’t need the very end joint, so you can delete that. This is the parent IK chain, here I’ve put them side by side to show the difference:
Create the first ikHandle on the parent chain, from shoulder to foot. Then create a second ikHandle on the secondary chain, going from the shoulder to the wrist:
For this second ik handle we can now create an inverse foot setup, as if it were a regular foot. The difference though is that instead of the inverse foot hierarchy being parented to an IK control, it will be parented to the forearm of the parent chain. That way it inherits the orientation of the forearm, and will stay in line by default.
Here’s a step-by-step. Like an inverse foot, we want that secondary wrist ikHandle to rotate around the foot, so create an empty group, and snap it’s position to the foot. Now parent the secondary ik handle that group. That will become the pivot for what otherwise would be considered a ball roll. The difference now, though, is to parent that new group to the primary chain forearm joint:
If you move the primary IK handle right now, you’ll notice that the secondary chain follows it completely. Now continuing to setup the inverse foot on the secondary chain, create single chain ik handles from the wrist to the foot, and foot to the end of the chain in order to keep those joints oriented properly when we roll the wrist. This should look familiar if you’ve built a standard inverse foot rig before. So now you should have 3 IK handles sitting in the world, your primary IK handle that you built originally, and the two new single chain ones. Parent these to a foot controller, and you’re basically done.
All that’s left to do now is decide how you want to control the rotation of the inverse foot pivot group, either by making it into a rotatable control or connecting it to a roll attribute on the foot control. The result is a wrist which stays in line with the forearm, rather than the foot control: