Hi
As of Unity 2020.1a15, there is a new feature called articulations available. An articulation in this context is a set of bodies that have their relative movement constrained. It’s a bit like using Rigidbody in conjunction with ConfigurableJoint but there is now only one component to deal with, and the benefit is that all joints in an articulation are unstretchable by default (thanks to the new Featherstone solver). This means the locked degrees of freedom will never be violated, which is guaranteed by simulating in reduced coordinates.
Articulations were a new feature in PhysX 4, have a look at this promotional video for inspiration:
. PhysX 4 upgrade was made available in Unity 2019.3, so articulations can now be exposed too. The current featureset will be somewhat limited though, with the plan of making more available in the later versions, based on your feedback and requests. For now, only forward dynamics are available (=you set forces and drives to obtain poses of all articulation parts). Later on, inverse dynamics might be featured too (=calculate joint forces based on observations).
As you might have noticed, the main use case for articulations is more or less robotics – that is areas where accurate body simulation is key. However, it can be applied to traditional game problems too: think ragdolls for instance, various in-game mechanics as well as puzzles that need extra precision.
I wrote this brief technical intro if you’re interested: Understanding the ArticulationBody component - Google Docs
There is also an Nvidia doc: Articulations — NVIDIA PhysX SDK 4.0 Documentation
Known issues:
-
Spherical joint with twist locked or limited to [0, 0] may cause instability
-
Need to fix hierarchical deactivation, currently we only allow bottom to top
-
Articulation bodies have sleeping weirdness
-
Friction type cannot be set to anything other than Patch
-
Articulations without Colliders make the system really unstable
-
Revolute joint will explode if rotated more than 360 deg by target pose -
Physics.IgnoreCollider has no effect on articulation bodies (adjacent) -
Revolute joint will crash if twist is locked
Please let me know what you think. Thanks!
Anthony
