Bones with multiple parents

In the IK system, is it possible to have a tree-like armature come back together, requiring a bone to have multiple parents? I am trying to explore the dynamics of the following system:


In it, three servo motors drive and arm to a hinge joint, through another arm to a ball joint, and then are fixed together at the triangular platform. I’d like to be able to translate/rotate the platform and have the IK solution drive the servomotors. Are these sorts of constraints possible with the IK system? Would the game engine be a better solution?

Thanks,
Louis

A bone cannot have multiple parents, but it can have multiple children (Before anyone corrects me, I know you can use many “Child Of” constraints, but there is no need here and it would be too complicated anyway), however, this does not stop you rigging the system you have illustrated.

For the rig you have illustrated, I would use one bone for the triangular platform, in the centre, pointing up in Z axis. I would then have three IK target bones at the three corners, with the tails at the ball joint centres, pointing up in Z axis. I would parent the IK target bones to the platform bone, with “Location” only checked, they are not connected and do not need to inherit rotation or scale. Then when you move the platform, either rotating the bone or “grabbing” it, the IK targets will also move appropriately.

Each servo is then a separate IK chain to its own target. Make sure the chain length of these IK chains is only back to the servo itself, from the look of it make it 2, as there are two bones for each servo. The point I am making here is that the chain length must not be 0 (the default, which means “back to the base bone”), or the arms will not work properly. You should then set the IK properties for each bone in the chain (found in the Bone’s Object panel > IK Properties), so they only rotate in the axes you require. The point here is don’t try to restrict bone rotation with a “Limit Rotation” constraint on the bone because the IK constraint renders all other constraints on that bone inoperable.

Don’t forget that IK means “Inverse Kinematics”, so these system work the opposite way to real life. In real life you would operate the servos to move the platform, with IK you move the platform to operate the servos. Also note that the IK constraint uses the tail of its IK target bone.

Cheers, Clock.