I’m having some trouble with rigid body constraints between animated and non-animated RB objects. I notice that if you have two dynamic RB objects constrained together, the sim works quite well and the constrained objects will “stick” to the empty defining the constraint. On the other hand if one RB is animated and constrained to a dynamic non-animated RB, the dynamic RB will only loosely follow the constraint’s location.

The image below shows what I mean. The sphere is an animated passive RB and the box is a dynamic RB. They’re joined with a Fixed constraint (the plain axes empty in green), and there is a sphere empty parented to the box with the same initial location as the constraint empty (orange empty). The constraint empty is parented to the sphere as a visual aid to show how closely the sphere and box are maintaining their initial relative positions throughout the animation.

The sphere is keyed to move down and as it does, the box moves away from the constraint’s initial location and the empties no longer line up.

The box is ~1 m long and the RBs get misaligned by ~9 cm at worst in this example. Something sliding around by 9% of its length seems pretty sloppy for a “fixed” constraint.

Is this a case of the animation system and rigid body sim not working well together? Is this some known limitation of the RB sim and are there any typical workarounds?

I have the RB sim at 250 steps per second and iterations turned up to 40. At the max settings, the constraint inaccuracy is reduced to ~3 cm which still seems high.

I’m trying to work with some character models that have their hair controlled by chains of rigid bodies constrained to a (passive, animated) head collision mesh. A similar setup is used in this video (https://youtu.be/A5tEGvRjJO8?t=156) and seems to work fine, so I’m at a loss.

Here’s the .blend (http://pasteall.org/blend/index.php?id=48181). Layer 1 has this RB setup with all dynamic objects for comparison and layer 2 has the animated sphere.

Any advice or insight is greatly appreciated. Thanks~