USD Schema Extensions#
USD libraries are part of omni.usd.libs
extension and are loaded as one of the first extensions to ensure that USD binaries are available to other extensions.
USD schemas itself are each an individual extension that can be a part of any repository. USD schema extensions are loaded after omni.usd.libs
, and ideally before omni.usd
.
Example of a schema extension config.toml
file:
[core]
reloadable = false
# Load at the start, load all schemas with order -100 (with order -1000 the USD libs are loaded)
order = -100
[package]
category = "Simulation"
keywords = ["physics", "usd"]
# pxr modules to load
[[python.module]]
name = "pxr.UsdPhysics"
# python loader module
[[python.module]]
name = "usd.physics.schema"
# pxr libraries to be preloaded
[[native.library]]
path = "bin/${lib_prefix}usdPhysics${lib_ext}"
Schema extensions contain pxr::Schema
, its plugin registry and a config.toml
definition file. Additionally, it contains a loading module omni/schema/_schema_name
which contains a Python init.py
script containing the plugin registry code.
Example:
import os
from pxr import Plug
pluginsRoot = os.path.join(os.path.dirname(__file__), '../../../plugins')
physicsSchemaPath = pluginsRoot + '/UsdPhysics/resources'
Plug.Registry().RegisterPlugins(physicsSchemaPath)