Problem rigging when using objects with parent relationship


I have a problem illustrated in the attached file.

There are two objects Cylinder1 & Cylinder2. Cylinder1 is the parent on Cylinder2.

I create an armature with two corresponding bones (Bone1 and Bone2, again Bone1 is the parent of Bone2.)

I attach the Cylinders to the armature and corresponding bones using ChildOf constraints. Each time I hit set inverse to position the object correctly.

Here’s the problem:

When I go into Pose mode and rotate Bone1, Cylinder1 rotates fine but Cylinder2 is over rotating, moving away from its bone. It seems it’s rotation is the sum of both its parent object and its parent bone’s rotations.

I understand that I can fix this problem by removing the Cylinder1 <-- Cylinder2 parent relationship but I would like to avoid this because the parent relationships make my object viewer a lot easier to navigate.

So how to I create complex models with parent child relationships and then rig them without running into this problem?

Thanks for your time.



problemTest.blend (340 KB)

The problem is that the cylinder2 has two parent relationships on it ; this means that when you rotate the bone1 for exemple on a 10° angle, the cylinder1 will also rotate on 10° angle and so the cylinder2 will inherit its rotation from the bone2 that moves with bone1 and from the cylinder2 that also moves with bone1 ; this means that the cylinder2 will rotate on a 20° angle.

Now, there’s also a second problem : the cylinders are scaled in edit mode, this produces weird movements in addition to the first problem. You can solve this problem by applying the scale to those cylinders.

As regards the first problem, you can create some complex models then rig them with an armature ; as you said, the “Cylinder1 <-- Cylinder2 parent relationship” is not necessary, in my opinion, working on rigging with armature and with object themselves makes your model uselessly complex and creates the kind of problems you got.
I don’t really understand what you mean by the object viewer that is easier to navigate thanks to this relationship.
Usually, working on rigging only with armature is not supposed to be a problem.

Now, if you absolutely want to keep the parent relationship between the two cylinders, perhaps you could use copy location/copy rotation constraints instead of the child of constraint on the cylinder2, this is supposed to solve the problem but this will make your rig even more complex.