1
$\begingroup$

I am making a 3 part mechanical joint, with the different axis of rotation being in 3 different places. This is fairly easy to make a basic rig for:

enter image description here

The problem is that i'd like to control this with a single bone. In this setup, each of the deform bones is using copy rotation to copy the corresponding local axis of the big control bone. It works if I'm only rotating one axis at a time, but once I already have rotation on one, it stops working correctly as the axis become desynched.

enter image description here

What is the proper way to make this work?

I have seen some IK setups for similar joints. I have tried that, but they don't seem to work with this join order. I have the order Z, Y, X. With an IK setup, I can't control the Y roll. If I had the order Z, X, Y, then i'd be able to by putting a copy rotation or something on the final bone. But you can't influence the rotation of a bone in the middle of an IK chain without problems.

UPDATE: Some answers have used 1 less joint, but the 3rd is necessary. The cylinder was a stand-in for a 2 part joint. The cylinder can't be allowed to rotate on X. Here's a picture showing what the desired joint is like. enter image description here

File:

$\endgroup$
1
  • $\begingroup$ @Edgel3D That looks good from what I see. What is the setup? $\endgroup$ – Ascalon Dec 12 '20 at 3:21
3
$\begingroup$

Dissolve the middle bone (you just need two bones for your rig). the first bone's constraint wouldn't be changed. for the second bone set world space to world space.

enter image description here

if you want the hinge to be oriented as you wish do above works and add another bone called hinge and make it child of your z bone. assign a locked track constraint to it and set either tail of ctrl or last deforming tail as the target and also set y as the locked axis and -z as the following axis. the result is like below.

enter image description here

$\endgroup$
2
  • $\begingroup$ Thanks, please see the update in the question. $\endgroup$ – Ascalon Dec 13 '20 at 2:25
  • $\begingroup$ see the update in answer $\endgroup$ – MohammadHossein Jamshidi Dec 13 '20 at 8:54
2
$\begingroup$

This was done in vers 2.77a but should work in 2.8+

...UPDATE 13th Dec 2020

  • as per your updated pic...

The cube is parented to the orange bearing. (child=cube)

The bearing is parented to the torus.

If the torus is to remain stationary and not rotate, an empty can be placed at it's origin point, the empty instead becoming the parent of the bearing and a child of the torus. The empty would then be rotated, not the torus.

The same would apply if the bearing mesh wasn't to rotate.

The torus could be parented to a machine chassis (or whatever) to keep the whole thing in place or both could share a common parent to do the same thing.

$\endgroup$
2
  • $\begingroup$ Thanks, please see the update in the question. $\endgroup$ – Ascalon Dec 13 '20 at 2:25
  • $\begingroup$ From what your update says, it appears you want to place some sort of constraint, i.e. the cylinder is not to rotate on the x axis. With this setup there are no constraints but why rotate an axis your not wanting in the first place? If you're wanting to drag the arm around as you would a rig with IK etc, then at a guess, I'd say you're back with your bones problem. I animate an excavator I d/loaded ages ago and the parenting system has worked well over several Blender versions. $\endgroup$ – Edgel3D Dec 13 '20 at 8:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.