USD Composer physics rigging Revolution joints don't constrain movement correctly

Hi,

I have been following this tutorial made by Adam Moravanszky on physics rigging and ran into some problems.

First of all, the assets that have been linked into the description of the video are not complete. The lamp asset is missing its materials, as it only downloads the main USD file that references the materials and not the materials themselves. The second finished asset is missing multiple USD files as the main USD file has layers that have not been flattened, nor have the necessary USD files for the layers been included.

Never the less I downloaded the lamp asset, as the model itself was intact and used it to build my own physics rig for it according to the instructions in the video. Once I started placing in the revolution joints I realized there were some issues. The revolution joints did not truly restrict the movement of the jointed rigid body parts onto a single axis of rotation. There seemed to be a lot of play in the joints, and the jointed bodies would separate from each other as if they were connected via springs instead of an axel around which they would rotate. This caused many issues with my rig and has made it difficult to diagnose what the underlying cause would be as I don’t know what could cause this behavior of a simple revolution joint.

I will provide some videos of my physics rig and the USD files themselves to hopefully give a clear picture of what is happening.

Can someone help me diagnose this issue? Is this common and is there a simple solution or should I start over or try something else?

Thank you in advance.
Videos.zip (28.8 MB)
USD Files.zip (191.6 KB)

Hi,
Rigging such a lamp can be challenging. I am not able to open the assets since the references are missing, could you please save the file as flattened out, so that it includes the references?
At any point to your issues, when rigging more complex scenes its important to start adding the joints one by one and testing those out.
You are using maximal joints and hence in your video you can see that the solver is trying to satisfy the constraint of the revolute joint, however it allows still some movement along other axis as its part of the solver.
You could try to use articulations (add articulation root) where the movement is restricted unless a DOF is enabled for the movement, then you would not see any movement except for the allowed DOF. But setting up articulation for this complex model with joint loops is easy. I dont remember if Adam used them in his tutorial, its certainly more advanced setup.

Regards,
Ales

Thank you very much! I have been tinkering with it some more and I do find it quite challenging to get the rig to be just right. Adam did use articulation in the video and I do have an articulation root set for it and I have gotten rid of the loops but it really isn’t very simple. There are many approaches to getting the result you want and while some of them might be better than others, its not very obvious to a beginner like myself. I also figured out that having a very small mass for the lamp makes it difficult to move the arm by grabbing the lamp. I guess this is because a small mass having a force applied to it also transfers a relatively small force to the other objects it is affecting, so the movement is infinitesimally small.

Here is a flattened version of the file if you have the time to look at it. This is not the same file as the one in the post, this is the one I have currently made as it is closer to what I’m aiming for in terms of behavior. This rig also has breakable joints, so you might want to remove those break force/torque values before tinkering with it.
LampFlat.zip (443.6 KB)

There is a lot going on, I have tried to set all the masses to a fixed value rather then compute it from the meshes, which can be tricky for non-solid objects.
But most importantly I have added an angular drive to keep the lamp in the initial pose, please check the attached modified lamp:
LampTutorialFlat.zip (442.1 KB)

Seems to behave better now. Note that I have disabled the sphere that should break the model and the breakable joints.