Physics Best Practices
SimReady Asset Schematic
All sample SimReady 3D assets are constructed as a package of several interconnected USD files that contain various elements of the final object. As part of that package, a SimReady 3D asset includes rigid body physics and colliders using the USDPhysics API schema.
<ASSET>.usd: This file represents the top-level USD composition arc for a SimReady 3D asset. A creator should consider this as the final “package” file that takes all of the other component USD elements and composes them into one cohesive USD. This file includes metadata related to the asset itself and is the file the user will interact with when adding it to their own stages.
<ASSET>_base.usd: This file takes all of the sub-layers that represent the various static prim components from the _inst.usd and composes them alongside any additional dynamic / animated elements needed for a stage (e.g. rolling wheels or blinking lights). This is also where all semantic labels describing the object are applied as well as the Physics RBD API for all physical properties.
<ASSET>_inst.usd: This file represents the composition arc for all geometry / materials that are static (non-changing) and are going to be made instanceable within the SimReady asset to help conserve memory.
<ASSET>_inst_base.usd: This file represents the baseline static geometry and materials that compose the SimReady asset and is where the baseline Physics Collision API and Physics Materials are applied.
Optional - <ASSET>_presentation.usd: This optional file contains additional presentation elements that can be used to help showcase a SimReady asset for consumers in a consistent way.
You can learn more about how physics are applied to a SimReady asset by reviewing the SimReady specifications document.
Typical Asset Layout
This is the Asset Interface (the file the user will interact with). It contains a defaultPrim as well as stores the semantic labeling and tagging information on its RootNode.
All static geometry & materials are made instanceable within this Reference to help conserve memory when the asset is duplicated multiple times.
Within the same Instanceable Reference is also where you add physics properties and variants to your objects, including the addition of physics materials.
The Presentation prim is a Payload that you can insert into your SimReady asset to provide a consistent rendering setup for your object. Given this is a top-level prim, it is ignored when the SimReady asset is composed into another stage.
Omniverse Specific RBD Properties and Controls
Physics Rigid Body Property Panel
As has been stated earlier, the USD Rigid Body Schema should be applied to the base transform (XForm node) of the SimReady 3D asset. It will read into the instanceable Reference and grab the USD Collider for each piece of geometry that is part of the asset. You can consider this as a global physics control for each SimReady asset.
Physics Rigid Body Collider Preset
Each mesh within the <ASSET>_inst_base.usd file must have the USDPhysics Collider applied as well as include the application of a Physics material. These physics elements will be passed up the composition to the <ASSET>.usd file’s USD Rigid Body Schema so that the asset will behave properly even when made instanceable to manage memory consumption at scale.
Physics Material Properties
The Physics Material Property panel will greatly affect how your SimReady asset responds to collisions. You’ll spend most of your time dialing in these parameters. In order to learn more about what these settings represent within the NVIDIA PhysX physics system, please refer to the PhysX physics documentation on their meaning.