OpenUSD Exchange SDK Changelog#
2.0.1#
Core#
Fixes#
The new
usd-exchangePython Wheel which is published to PyPi is locked to our default USD 25.05pip install usd-exchange==2.0.1strictly uses USD 25.05If other USD flavors are required, please continue to use the
install_usdexCLI tool or build from sourceRather than depend on the public
usd-corewheel, we directly include the subset of OpenUSD libraries required to useusdex.coreusd-coreis not ABI compatible with our minspec (manylinux_2_35 with modern CXX ABI)In the future, if the public
usd-corepackage becomes more compatible, we may add it as a dependency instead of packaging the OpenUSD libsIn the future, if wheel variants become possible on PyPi we may provide all supported flavors of
usd-exchangeas wheels
2.0.0#
Core#
Features#
Added USD 25.05 support
Added Python 3.12 support for USD 25.05 and 25.02
Added a new
usd-exchangePython Wheel which is published to PyPiThere is a unique whl specific to each supported USD flavor/version (e.g.
usd-exchange==2.0.0+usd2505)Rather than depend on the public
usd-corewheel, we directly include the subset of OpenUSD libraries required to useusdex.coreusd-coreis not ABI compatible with our minspec (manylinux_2_35 with modern CXX ABI)In the future, if the public
usd-corepackage becomes more compatible, we may add it as a dependency instead of packaging the OpenUSD libs
Added new
AssetStructuremodule following NVIDIA’s Principles of Scalable Asset StructureIncludes new
defineScope,defineReference, anddefinePayloadfunctions for basic asset structure best practicesThese functions ensure the new prim is defined at an editable location & that relative
AssetPathsare used whenever possible
Includes more advanced functions for authoring according to the Atomic Component structure from the article
Added new
PhysicsJointAlgomodule to simplify the authoring processSupports authoring for fixed, revolute (hinge), prismatic (slide), and spherical (ball) joints
Ensures
PhysicsJointsare aligned to both bodies when defined and can also re-align joints usingalignPhysicsJointAbstracts the local joint frame to a form more suitable for a variety of source data specifications
Added new
PhysicsMaterialAlgomodule for defining physical materials, adding physical properties to visual materials, and bindings physical materials to collision geometryAdded
GfQuatforientation overloads toXformAlgoto accommodate a [translate, orient, scale]XformOpOrderAdded overloads to all
XformAlgofunctions which acceptXformableschemaAllows call sites to replace the annoying
setLocalTransform(mesh.GetPrim(), ...)pattern withsetLocalTransform(mesh, ...)
Added overloads to all
definefunctions which “re-define” an existingScope,Xform, or untypedPrimto the specified prim typeEnables a two phase “define the structure, then fill in the details” pattern
Added
kilogramsPerUnitto the required Stage Metrics forcreateStageandconfigureStageCall sites do not need to change, as it will be authored at a default value of 1 when
massUnitsis not specified
Added
getLayerAuthoringMetadatato retrieve previously authored creator metadataAdded
getDiagnosticLevelfor mappingTfDiagnosticTypetousdex::core::DiagnosticsLevelAdded
USDEX_VERSION_STRINGmacro toVersion.hAdded
buildVersion()and changed behavior ofversion()(see Breaking Changes below)
Fixes#
Prevent
bindMaterial()from allowing bindings across instance boundariesAll
PointsBaseddefine functions now emitTF_RUNTIME_ERRORif the points array is emptyFixed default
timebindings in allXformAlgofunctionsRuntime behavior is unchanged, it is just technically correct in the code now
Breaking Changes#
Dropped USD 23.11 support
The source code may still compile for this flavor, but it is not being maintained in CI nor distributed as binary artifacts
usdex_corenow linkskind,work, andusdPhysicsdirectlyusdPhysicsis the only new runtime requirement; the others were indirectly linked previously
Replaced the sidecar
omni_transcodinglibrary with an internal implementation inusdex_coreThe
USDEX_ENABLE_OMNI_TRANSCODINGTfEnvSettingwas renamedUSDEX_ENABLE_TRANSCODINGThe behavior is unchanged, but build & distribution scripts need to be updated to avoid linking the other library
Note there is not currently any public function to decode an identifier
version()now returns the simple semanticUSDEX_VERSION_STRINGUse the new
buildVersion()to retrieve the fullUSDEX_BUILD_STRINGwith semver and metadata
Changed
hasLayerAuthoringMetadatato accept aconst SdfLayerHandlerather than a non-constSdfLayerHandle
Pybind#
Features#
Added pybind11 interoperability for
Gf.Quatd,Gf.Quatf,UsdGeom.Scope,UsdGeom.Xformable,UsdPhysics.Joint,UsdPhysics.FixedJoint,UsdPhysics.RevoluteJoint,UsdPhysics.PrismaticJoint,UsdPhysics.SphericalJoint
RTX#
Features#
Added overloads to all
definefunctions which “re-define” an existingScope,Xform, or untypedPrimto the specified prim typeEnables a two phase “define the structure, then fill in the details” pattern
Breaking Changes#
usdex_rtxnow linksusdGeomdirectly
Test#
Features#
usdex.testandomni.asset_validatorcan be used via the newusd-exchangewheel via the optional “test” extraspip install usd-exchange[test]
Added level filtering to
ScopedDiagnosticChecker, which can be used to ignore status messages while still asserting warnings and errorsAdded
TestCase.tmpDir()which is useful for structured asset testingThe new
omni.asset_validatormodule includes some optionalnumpyimplementations which improve performance ifnumpyis available in the environment
Fixes#
Fixed
usdex.testto properly bootstrapomni.asset_validatorwhen used outside of therepo_testharnessFixed
TestCase.tmpFile()directory caching issue
Breaking Changes#
The new
omni.asset_validatormodule also requires theomni.capabilitiesmoduleBoth modules ship in the same package & install via the optional
testgroup for theusd-exchangewheels and for theinstall_usdexCLI
DefineFunctionTestCaseasserts the new “redefinePrim” overloads exist for each define functionDefineFunctionTestCasenow serializesself.rootLayerrather than using an anonymous layerInlined
compareIdentifiersinusdex/test/FilesystemUtils.h
Dev Tools#
Features#
An
omni_asset_validateCLI is included when using theusd-exchangewheel with the optional “test” extras (e.g.pip install usd-exchange[test])repo_version_headernow outputs a<namespace>_VERSION_STRINGmacro alongside<namespace>_BUILD_STRING
Fixes#
Fixed
install_usdexto use a fully qualified packman remote nameFixed
repo_version_headerto error whenmacro_namespaceis unspecified, to prevent accidental un-namespaced macros
Documentation#
Re-wrote the Getting Started guide as a minimal first step using Python Wheels
Moved Try the Samples to a dedicated guide which follows the new Getting Started guide
Moved Native Application Development to a dedicated guide
Moved Testing and Debugging to a dedicated guide
Added Python Wheels to the Deployment Guide and changed Docker deployment to use the wheels
Added Physics and Asset Structure sections to the USD Authoring Guide
Updated Dev Tools to recommend Python Wheels before
install_usdexand to expand on Asset Validator use cases in USD Exchange workflowsUpdated License Notices as all dependencies are now permissive OSS
Replaced social media links with more relevant links to GitHub and developer.nvidia.com/usd
Dependencies#
Runtime Deps#
OpenUSD 25.05 (default) 25.02, 24.11, 24.08, 24.05
Omni Asset Validator 1.1.6
Python 3.12.11, 3.11.12, 3.10.18 (default)
pybind 2.11.1
Dev Tools#
packman 7.31
repo_tools (all matching latest public)
doctest 2.4.5
cxxopts 2.2.0
Premake 5.0.0-beta4
GCC 11.4.0
MSVC 2019-16.11
1.2.0#
Core#
Features#
Added Python 3.12 support for USD 25.02
Fixes#
Prevent
bindMaterial()from allowing bindings across instance boundariesAll define PointBased functions now emit
TF_RUNTIME_ERRORif the points array is empty
Dependencies#
Runtime Deps#
OpenUSD 25.02, 24.11, 24.08 (default), 24.05, 23.11
Omni Transcoding 1.0.0
Omni Asset Validator 0.16.2
pybind 2.11.1
Dev Tools#
packman 7.31
repo_tools (all matching latest public)
doctest 2.4.5
cxxopts 2.2.0
Premake 5.0.0-beta4
GCC 11.4.0
MSVC 2019-16.11
Python 3.10.18 (default), 3.11.12, 3.12.11
1.1.0#
OpenUSD Exchange SDK is now provided under the Apache License, Version 2.0
Core#
Features#
Added USD 25.02 support
Added USD 24.11 support
Added
NameCacheclass for generating unique and valid names forUsdPrimsand theirUsdPropertiesIt can be used in several authoring contexts, with overloads for
SdfPath,UsdPrimandSdfPrimSpecHandleDeprecated
ValidChildNameCachein favor ofNameCache
Improved python deprecation warnings
Fixes#
Fixed attribute type for
UsdUvTexture.inputs:varname
Pybind#
Features#
Added support for
pxr_pythonin USD 24.11+
Test#
Fixes#
Fixed file extension bug in
TestCase.tmpLayer
Documentation#
Added
pybindsection to C++ API docsUpdated docs to explain
boost::pythonvspxr_pythonAdded guidance around
SdfLayerencoding & Crate Version portability to the Authoring USD Data GuideUpdated all license notices & attributions associated with change to Apache License, Version 2.0
Updated Contributing Guide to accept code contributions via Developer Certificate of Origin
Added explanation of optional NVIDIA SLA dependencies & how to disable them.
Dependencies#
Runtime Deps#
OpenUSD 25.02, 24.11, 24.08 (default), 24.05, 23.11
Omni Transcoding 1.0.0
Omni Asset Validator 0.16.2
pybind 2.11.1
Dev Tools#
packman 7.27
repo_tools (all matching latest public)
doctest 2.4.5
cxxopts 2.2.0
Premake 5.0.0-beta4
GCC 11.4.0
MSVC 2019-16.11
Python 3.10.16 (default), 3.11.11
1.0.0#
Core#
Features#
Added
usdex_coreshared library andusdex.corepython module, which provide higher-level convenience functions on top of lower-level OpenUSD concepts, so developers can quickly adopt OpenUSD best practices when mapping their native data sources to OpenUSD-legible data models.
Pybind#
Features#
Added
usdex/pybind, a header-only cxx utility to enable seamless flow betweenpybind11&boost_python.Added bindings for all USD types exposed in the public API of the
usdex_corelibraryNote: A minimal subset of USD types is supported. More types may be added in the future.
RTX#
Features#
Added
usdex_rtxshared library andusdex.rtxpython module, which provide utility functions for creating, editing, and queryingUsdShadedata models which represent MDL Materials and Shaders for use with the RTX Renderer.
Test#
Features#
Added
usdex.test, a python module which providesunittestbased test utilities for validating in-memory OpenUSD data for consistency and correctness.Added
usdex/test, a header-only cxx utility which provides a more minimal set ofdoctestbased test utilities.
Dev Tools#
Features#
Added
install_usdextool to download and install precompiled OpenUSD Exchange binaries and all of its runtime dependencies.This tool supports a variety of USD flavors & versions. See
repo install_usdex --helpor the online docs for details.
Vendored
omni.asset_validatorpython module for validating that USD Data output is compliant and conforms to expected standards.This can be installed via
repo install_usdex --install-test
Documentation#
Added C++ and Python API docs for all public functions and classes.
Added Getting Started article to help learn about & integrate the SDK into a project.
Added Authoring USD Data article to briefly introduce each group of functions from
usdex_coreandusdex_rtx.Added Runtime Requirements article to exhaustively list the files required by our runtime.
Added Deployment Options article explaining how to approach common deployments (e.g cli, docker container, DCC Plugin)
Added License Notices article covering OpenUSD Exchange SDK and all its runtime dependencies.
Added Dev Tools article to explain
install_usdexand Omni Asset Validator.
Dependencies#
Runtime Deps#
OpenUSD 24.08 (default), 24.05, 23.11
Omni Transcoding 1.0.0
Omni Asset Validator 0.14.2
pybind 2.11.1
Dev Tools#
packman 7.24.1
repo_tools (all matching latest public)
doctest 2.4.5
cxxopts 2.2.0
Premake 5.0.0-beta2
GCC 11.4.0
MSVC 2019-16.11
Python 3.10.15 (default), 3.11.10