Articulation Body#
Articulation Body can construct a physical linkage like a robotic arm. The current Omniverse Unity Connector exports only the ArticulationBody structure.
Note
Movements controlled by external data or scripts are not exported to USD.
Differences in Articulation handling between Unity and USD#
ArticulationBody in Unity works by making it a hierarchy.
Articulation in USD consists of ArticulationRoot and RigidBody + Collider + Physics Joint.
In USD, it is represented by Rigidbody and Physics Joint. The root Articulation specifies ArticulationRoot.
Note
USD does not allow Rigidbody to be nested in a hierarchical structure.
The Unity Omniverse Connector’s USD export relocates this Articulation hierarchy into a flat structure within the ArticulationRoot.
A RevoluteJoint connects two RigidBodies with rotation.
There are some limitations on the use of Articulation Physics, as we describe in the specifications.
Specifications for exporting Articulation to USD#
The hierarchical structure of the ArticulationBody in Unity is flattened out in the ArticulationRoot in USD.
In USD, the children of Articulation are replaced by RigidBody+Collider+PhysicsJoint.
If there is a Prefab in the ArticulationRoot. In that case, it will be expanded as an entity during export because by replacing the hierarchical structure, the hierarchy can no longer be expressed by Reference and Payload.
After exporting, the Articulation structure in USD will be the same as if it were “Immovable” in Unity.
Supported Articulation Joint Types: Fixed, Prismatic, Revolute, and Spherical.
The Articulation Joint Type of the first ArticulationBody in the ArticulationRoot should be Fixed.
When exported to USD, it will be immovable, just like a FixedJoint, even if another Joint Type is specified.
Supports the following parameters:
The parameters by joint type are the same as those for PhysicsJoint.
Articulation uses the PhysicsJoint feature when it is passed to USD.
Note
Articulation does not support Live Sync because of the change in hierarchical structure.*
How to use Articulation#
Set the root of Articulation#
Specify the Articulation Body as a component in the base GameObject. The Articulation Body component will be the Articulation Root in USD.
First ArticulationBody#
When exported to USD, the base of this robot arm is fixed. The first Articulation Body is only connected to its own GameObject that has components assigned to it.
Other Articulation Joint Types can also be specified, but the beginning will be immovable in any of them in the USD Articulation structure.
Articulation Body Parameters#
The Articulation designation is now complete.
Play#
Export USD#
Articulation/PhysicsJoint Parameters#
In “RobotArm”, the Articulation Root is assigned.
The parameters that can be assigned vary depending on the type of joint.
Articulation Joint Type in Unity |
PhysicsJoint Type in USD |
---|---|
FixedJoint |
FixedJoint |
PrismaticJoint |
PrismaticJoint |
RevoluteJoint |
RevoluteJoint |
SphericalJoint |
D6Joint |