I want the two big bones to be pivoted where the squares are in the image (at the bottom), and the middle bone to always point from the tail of the right bone to the head of the left green bone, like it is in the image.
I want to be able to rotate the right bone to control the whole system.
And of course the length of each bone must not change. Help will be greatly appreciated.
There are probably other ways to do this but what I did was add a new bone at the box on the left. I then added an IK constraint to the long left bone and made the new bone the IK target.
On problem with rigging is that all the specifics make a difference. So if you want to be able to move the anchor points or this hooks up to another piece of rig, then sometimes you have to find different solutions.
Use an ik constraint, it will allow you to accomplish what you’ve described, see attached file. I created a set up like shown in your image. Added a 4th bone at the tip of the 3rd bone (one on the left) that is the target for the ik constraint, now that bone will always point to the target. Set the ik chain length to 2, so it controls 2 bones. The bone on the left is a child of the top bone, and the top bone a child of the bone on the right. Now when you rotate the right bone, they all move as desired.
Alright, so I’ve ran into another problem. I had to add another link to the left bone.
So now when I rotate the control (right) bone along the global X-axis, I want the third (the last) bone in the chain to remain in the XZ plane (or only rotate along the global Y axis). File attached below.
Also, any good mechanical rigging tutorials out there, or any good explanations of how bone constraints work?
I’ll soon run into joints that only have one degree of freedom, and I can’t get any constraints to accomplish that.
I’m not too certain about this one. I found something that seems to work the way you want but I’m not 100% certain. It now has 2 IK chains a few rotation copy constraints and some rotation constraints.
Try moving this around and see if it does what you want. As I noted before, adding bones to these kinds of rigs changes the solution that you need. If it works correctly, then I’ll take the time to post how it works.
In general, the IK Constraint does not seem to play nice with the other types of constraints. You have some level of control over the IK solution by changing the settings under the “IK” properties of each Bone. This just controls how the joints bend and unfortunately, there is no bending in your joint so this is not much help.
Since you are already using an IK chain (which is the right tool for this job), you don’t want to use separate constraints for the individual bones – as another poster has already commented, IK doesn’t play nicely with other constraints. Instead, you can use the settings for the individual bones in Properties->Bone->Inverse Kinematics to restrict the way they bend. Here is a bone with all IK rotations turned off:
You presumably want to lock X and Z rotation but leave Y free.
Don’t forget that IK limits are in the bone’s local space. You will want to leave “Z” free.
Edit: Wait; rotating the first bone around global “X”? That’s not so easy. I have some ideas; testing at the moment…
Edit 2: Ah, here’s something: the relevant armature is on layer 2. I had to reverse the bone chain and break it up somewhat; the controller bone is not part of the same chain as the bone to be controlled.