OpenUSD Exchange SDK Changelog#
2.0.1#
Core#
Fixes#
The new
usd-exchange
Python Wheel which is published to PyPi is locked to our default USD 25.05pip install usd-exchange==2.0.1
strictly uses USD 25.05If other USD flavors are required, please continue to use the
install_usdex
CLI tool or build from sourceRather than depend on the public
usd-core
wheel, we directly include the subset of OpenUSD libraries required to useusdex.core
usd-core
is not ABI compatible with our minspec (manylinux_2_35 with modern CXX ABI)In the future, if the public
usd-core
package 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-exchange
as 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-exchange
Python 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-core
wheel, we directly include the subset of OpenUSD libraries required to useusdex.core
usd-core
is not ABI compatible with our minspec (manylinux_2_35 with modern CXX ABI)In the future, if the public
usd-core
package becomes more compatible, we may add it as a dependency instead of packaging the OpenUSD libs
Added new
AssetStructure
module following NVIDIA’s Principles of Scalable Asset StructureIncludes new
defineScope
,defineReference
, anddefinePayload
functions for basic asset structure best practicesThese functions ensure the new prim is defined at an editable location & that relative
AssetPaths
are used whenever possible
Includes more advanced functions for authoring according to the Atomic Component structure from the article
Added new
PhysicsJointAlgo
module to simplify the authoring processSupports authoring for fixed, revolute (hinge), prismatic (slide), and spherical (ball) joints
Ensures
PhysicsJoints
are aligned to both bodies when defined and can also re-align joints usingalignPhysicsJoint
Abstracts the local joint frame to a form more suitable for a variety of source data specifications
Added new
PhysicsMaterialAlgo
module for defining physical materials, adding physical properties to visual materials, and bindings physical materials to collision geometryAdded
GfQuatf
orientation overloads toXformAlgo
to accommodate a [translate, orient, scale]XformOpOrder
Added overloads to all
XformAlgo
functions which acceptXformable
schemaAllows call sites to replace the annoying
setLocalTransform(mesh.GetPrim(), ...)
pattern withsetLocalTransform(mesh, ...)
Added overloads to all
define
functions which “re-define” an existingScope
,Xform
, or untypedPrim
to the specified prim typeEnables a two phase “define the structure, then fill in the details” pattern
Added
kilogramsPerUnit
to the required Stage Metrics forcreateStage
andconfigureStage
Call sites do not need to change, as it will be authored at a default value of 1 when
massUnits
is not specified
Added
getLayerAuthoringMetadata
to retrieve previously authored creator metadataAdded
getDiagnosticLevel
for mappingTfDiagnosticType
tousdex::core::DiagnosticsLevel
Added
USDEX_VERSION_STRING
macro toVersion.h
Added
buildVersion()
and changed behavior ofversion()
(see Breaking Changes below)
Fixes#
Prevent
bindMaterial()
from allowing bindings across instance boundariesAll
PointsBased
define functions now emitTF_RUNTIME_ERROR
if the points array is emptyFixed default
time
bindings in allXformAlgo
functionsRuntime 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_core
now linkskind
,work
, andusdPhysics
directlyusdPhysics
is the only new runtime requirement; the others were indirectly linked previously
Replaced the sidecar
omni_transcoding
library with an internal implementation inusdex_core
The
USDEX_ENABLE_OMNI_TRANSCODING
TfEnvSetting
was renamedUSDEX_ENABLE_TRANSCODING
The 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_STRING
Use the new
buildVersion()
to retrieve the fullUSDEX_BUILD_STRING
with semver and metadata
Changed
hasLayerAuthoringMetadata
to accept aconst SdfLayerHandle
rather 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
define
functions which “re-define” an existingScope
,Xform
, or untypedPrim
to the specified prim typeEnables a two phase “define the structure, then fill in the details” pattern
Breaking Changes#
usdex_rtx
now linksusdGeom
directly
Test#
Features#
usdex.test
andomni.asset_validator
can be used via the newusd-exchange
wheel 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_validator
module includes some optionalnumpy
implementations which improve performance ifnumpy
is available in the environment
Fixes#
Fixed
usdex.test
to properly bootstrapomni.asset_validator
when used outside of therepo_test
harnessFixed
TestCase.tmpFile()
directory caching issue
Breaking Changes#
The new
omni.asset_validator
module also requires theomni.capabilities
moduleBoth modules ship in the same package & install via the optional
test
group for theusd-exchange
wheels and for theinstall_usdex
CLI
DefineFunctionTestCase
asserts the new “redefinePrim
” overloads exist for each define functionDefineFunctionTestCase
now serializesself.rootLayer
rather than using an anonymous layerInlined
compareIdentifiers
inusdex/test/FilesystemUtils.h
Dev Tools#
Features#
An
omni_asset_validate
CLI is included when using theusd-exchange
wheel with the optional “test” extras (e.g.pip install usd-exchange[test]
)repo_version_header
now outputs a<namespace>_VERSION_STRING
macro alongside<namespace>_BUILD_STRING
Fixes#
Fixed
install_usdex
to use a fully qualified packman remote nameFixed
repo_version_header
to error whenmacro_namespace
is 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_usdex
and 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_ERROR
if 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
NameCache
class for generating unique and valid names forUsdPrims
and theirUsdProperties
It can be used in several authoring contexts, with overloads for
SdfPath
,UsdPrim
andSdfPrimSpecHandle
Deprecated
ValidChildNameCache
in favor ofNameCache
Improved python deprecation warnings
Fixes#
Fixed attribute type for
UsdUvTexture.inputs:varname
Pybind#
Features#
Added support for
pxr_python
in USD 24.11+
Test#
Fixes#
Fixed file extension bug in
TestCase.tmpLayer
Documentation#
Added
pybind
section to C++ API docsUpdated docs to explain
boost::python
vspxr_python
Added guidance around
SdfLayer
encoding & 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_core
shared library andusdex.core
python 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_core
libraryNote: A minimal subset of USD types is supported. More types may be added in the future.
RTX#
Features#
Added
usdex_rtx
shared library andusdex.rtx
python module, which provide utility functions for creating, editing, and queryingUsdShade
data models which represent MDL Materials and Shaders for use with the RTX Renderer.
Test#
Features#
Added
usdex.test
, a python module which providesunittest
based 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 ofdoctest
based test utilities.
Dev Tools#
Features#
Added
install_usdex
tool 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 --help
or the online docs for details.
Vendored
omni.asset_validator
python 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_core
andusdex_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_usdex
and 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