OpenUSD Exchange SDK Changelog#
3.0.0#
Core#
Features#
Added USD 26.08 support & made it the new default flavor
Added Python 3.13 support & made Python 3.12 the new default
Added OpenPBR Material authoring via MaterialX
definePbrMaterialanddefineGlassPbrMaterialauthor a dual context Material, driving an OpenPBR shader for themtlxrender context and aUsdPreviewSurfaceshader for the universal render context, both from a shared Material InterfaceaddColorTextureToPbrMaterial,addNormalTextureToPbrMaterial,addOrmTextureToPbrMaterial,addRoughnessTextureToPbrMaterial,addMetallicTextureToPbrMaterial,addOpacityTextureToPbrMaterial, andaddEmissiveTextureToPbrMaterialauthor both shader networks in one calladdEmissiveColorToPbrMaterialauthorsemissiveColoralongside the OpenPBR emissive luminanceaddPrimvarShaderToPbrMaterialconnects a MaterialX primvar reader to an OpenPBR surface inputUnlike the texture functions, it only affects the
mtlxrender context. UseaddPrimvarShaderToPreviewMaterialto drive the same primvar into the universal render context
computeEffectiveMtlxSurfaceShaderis the MaterialX counterpart tocomputeEffectivePreviewSurfaceShaderThe authored networks are MaterialX 1.39 compatible & each Material records its version via
MaterialXConfigAPI
Added
defineGlassPreviewMaterialfor Preview Surface only glass, with color, index of refraction, roughness, and opacityAdded
setEffectiveAttributeValueto author a value on a defined attribute only when it differs from the schema fallbackThis enables sparse authoring of layers that only contain opinions differing from schema defaults
It is especially useful with codeless schemas, which do not provide generated accessors or
TfTokenconstants for attribute names
Added
setEffectiveDisplayNameand adopted the UI Hints display name introduced in OpenUSD 25.11All display name functions now read and author both
uiHints:displayNameand the originaldisplayNamefield, so the resulting files behave consistently in every supported OpenUSD runtime
Added more primvar authoring & inspection utilities
Use
PrimvarData::createPrimvarto create & author a primvar from existingPrimvarDatain one callUse
createConstantPrimvarorsetConstantPrimvaras a shortcut for single scalar valuesUse
PrimvarData::hasUnindexedValuesto detect values which are never referenced by the indices
Added an import time warning when a second OpenUSD is installed alongside
usd-exchangeThe
usd-coreandusd-exchangewheels both provide thepxrmodules at the same paths, so package managers report success while leaving an environment that mixes two OpenUSD buildsThe warning names whichever distribution supplied the duplicate modules, as that is the one to remove
Fixes#
Fixed
getLocalTransformto maintain orientation during the internal calculationChanged color space conversion to use
GfColorunder the hoodStopped connecting the
displacementterminal of Preview MaterialsDisplacement was never driven by our Preview Surface networks & the unused terminal caused Hydra to ingest the wrong shader graph when an OpenPBR displacement terminal was also present
Fixed the public headers to compile against OpenUSD builds that use a custom namespace
Fixed default arguments for several python bindings to match the C++ signatures
definePhysicsRevoluteJoint,definePhysicsPrismaticJoint,definePhysicsSphericalJoint,alignPhysicsJoint, andconnectPhysicsJointnow defaultaxisto (1, 0, 0)definePlane,defineSphere,defineCube,defineCone,defineCylinder, anddefineCapsulenow default their dimensions andaxis
Breaking Changes#
Dropped USD 25.08, 25.02, 24.11, 24.08, and 24.05 support
The supported flavors are now 26.08 (default), 25.11, and 25.05
This removes the last of the
boostbased flavors, all supported flavors usepxr_python
The USD 25.05 flavor now uses oneTBB, so all supported flavors are consistent
Applications which link this flavor must migrate from the legacy TBB, as the two cannot coexist in one process
Changed
definePolyMeshto emit aTF_RUNTIME_ERRORwhen indexed topology leaves points, normals, uvs, displayColor, or displayOpacity unusedThis performs verification equivalent to the Validator’s
UnusedMeshTopologyCheckerThe signature is unchanged, but call sites which previously authored these meshes will now fail & need to correct their topology
Changed
defineUnrestrictedSubsetsto requireelementTypeandfamilyName, and to reject thematerialBindfamilyv2.3.0 defaulted them to
faceandmaterialBind, but that family must be a partition or non-overlapping, so the defaults authored invalid dataPass an empty token for subsets that belong to no family, or use
definePartitionedSubsetsordefineNonOverlappingSubsetsto bind materials
Removed
ValidChildNameCache, which has been deprecated since v1.1.0Use
NameCacheinstead
Deprecated
addDiffuseTextureToPreviewMaterialin favor ofaddColorTextureToPreviewMaterialBoth author a Shader named “ColorTexture”, and a Material Interface input of the same name, where the deprecated function previously authored “DiffuseTexture”, so existing call sites produce different prim & property names
Pybind#
Features#
Added pybind11 interoperability for
Gf.Vec2f
Breaking Changes#
Removed the
boost::pythonfallback fromusdex/pybind/BindingUtils.h, as all supported flavors usepxr_pythonThe
USDEX_BOOST_PYTHON_NAMESPACEmacro no longer exists, usePXR_BOOST_PYTHON_NAMESPACEdirectly
RTX#
Features#
Added a
roughnessargument to alldefineGlassMaterialsignaturesIt is exposed on the Material Interface & drives both OmniGlass
frosting_roughnessand the Preview Surfaceroughness
Added
addColorTextureToPbrMaterial
Fixes#
Fixed the symbols exported by
usdex.rtxfrom usdex.rtx import *previously raised anAttributeError
Breaking Changes#
Deprecated
addDiffuseTextureToPbrMaterialin favor ofaddColorTextureToPbrMaterialThe Material Interface input is named “ColorTexture” rather than “DiffuseTexture”
Renamed the Material Interface color input from “diffuseColor” to “color”
Both
definePbrMaterialanddefineGlassMaterialauthorinputs:color, so stronger layers & path based tools which targetinputs:diffuseColormust be updated
Changed
defineGlassMaterialto author “opacity” and “roughness” on the Material Interface, defaulting to 0.2 and 0.02 respectivelyv2.3.0 authored an opacity of 0.0 directly on the Preview Surface shader & no roughness at all, so existing calls will render differently
Changed
defineGlassMaterialto accept anindexOfRefractionabove 4.0, which is now only asoftMaxlimit metadata hintChanged
addEmissiveColorToPbrMaterialto reject color components above 1.0v2.3.0 accepted any positive value, so existing calls which passed a color brighter than white will now fail
Use the
intensityargument, which remains unbounded, to drive the emission strength
Changed
addEmissiveColorToPbrMaterialto reject OmniGlass materials, as OmniGlass does not support the OmniPBR emissive inputsv2.3.0 only required an MDL shader, so existing calls on glass materials authored inputs that OmniGlass ignored & will now fail instead
Test#
Features#
Added rules for the native UsdValidation rules that
usd-validation-nvidiadoes not adapt yet, soassertIsValidUsdruns themEach is skipped once
usd-validation-nvidiaadapts it, so a newer release supersedes ours rather than reporting the same issue twice
Breaking Changes#
Replaced Omni Asset Validator with the
usd-validation-nvidiapackage from PyPIusdex.testnow usesusd_validation_nvidia, which is whereValidationEngine,IssuePredicates, andIssuesListcome frompip install usd-exchange[test]andinstall_usdex --install-testboth install the version this SDK was tested againstThe
omni_asset_validateCLI is replaced bynvidia_usd_validate
The native OpenUSD validators are now registered & will run during
assertIsValidUsdusd-validation-nvidiaadapts OpenUSD’s ownUsdValidationregistry, so assets which previously passed may report new issuesSimilarly, some diagnostics are now emitted more than once, as the native validators re-compose the stage
Dev Tools#
Features#
Replaced Premake with CMake
A single
CMakeLists.txtserves both the internal flavor matrix and external source builds, so there is one consistent build definitionrepo buildconfigures & drives it for a given flavor, while external consumers can configure it directly with a system CMake
The packages now ship a relocatable
find_package(usd-exchange)config, so downstream C++ projects can consume the binaries directly
Added a
repo fetch_depstool to pull packman dependencies without a build, for re-use in downstream toolingModernized the wheel build using
uv&hatchlingThe libraries and bindings are stripped before packaging, which significantly reduces the wheel size
The
plugInfo.jsonfiles are patched to account for the hashed library names produced byauditwheel
Expanded the OpenUSD plugins installed by default
Added
sdr,usdMedia,usdMtlx,usdProc,usdRender,usdSkel, andusdVol, along withusdLodandusdProfileson USD 26.08 and newerusdMtlxresolves the MaterialX shader definitions &usdex_corelinks it to author OpenPBR networks, so it and the MaterialX libraries are required in every flavorThe plugin set is now identical for modular and monolithic flavors, only the backing libraries differ
Added the native OpenUSD validator plugins to the
--install-testgroupusdValidation,usdGeomValidators,usdPhysicsValidators,usdShadeValidators,usdSkelValidators, andusdUtilsValidatorsinstall for every supported flavor, whileusdLuxValidatorsrequires USD 26.08 or newerThese back the validators that
usd-validation-nvidiaadapts, so they are not installed for runtime-only deployments
Relaxed the wheel’s
testextra to acceptusd-validation-nvidiaminor & patch updates, pinning only the major versionUsers can adopt a newer validator release without waiting for a matching
usd-exchangerelease
Fixes#
Fixed lazy USD plugin loading in the Windows wheels
Exposing the bundled
usd_exchange.libsdirectory viaPXR_USD_WINDOWS_DLL_PATHwas enough for plugin discovery, but not for resolving the dependent DLLs during a lazyPlug.Load()The generated
pxr/__init__.pynow derives that directory from__file__at import time & prepends it toPATH, so no build machine paths are baked into the wheelThe wheel import check asserts that
usdMtlxandusdShadersload throughpxr.Plugfrom the installed wheel, to catch regressions and build tree leakage
Fixed the Linux wheels to include the native OpenUSD validator plugins
They have no python bindings, so they were not detected as wheel content until they were staged explicitly for
auditwheelto repair
Breaking Changes#
Windows DLLs are now installed to
binrather thanlib, following the usual convention for Windows runtimesWindows binaries are built with the v143 toolset & require Microsoft Visual Studio 2022 or newer
oneTBB and MaterialX are distributed as separate packages from OpenUSD
No changes required for
install_usdexPackman consumers must gather
onetbbandmaterialxfromdev/deps/all-deps.packman.xmlas they are no longer bundled withopenusdBuilding from source requires them to be discoverable, either via
CMAKE_PREFIX_PATHor theUSDEX_TBB_ROOTandUSDEX_MATERIALX_ROOTvariables
The packages no longer ship
dev/tools/premake, downstream projects should use CMake and thefind_package(usd-exchange)configRemoved
repo_feature_headeras CMake now generatesFeature.hrepo_version_headerstill ships, but it is unused & untested now that CMake generatesVersion.handversion.rcdirectly
Removed
repo_usdin favor of in-tree packman templates for each supported flavor
Documentation#
Added a Materials and Shaders section to Authoring USD Data, covering OpenPBR via MaterialX, Preview Surface, MDL, and render contexts
Updated the Runtime Tree for the new plugin set, the separate oneTBB & MaterialX libraries, and the Windows
bindirectoryUpdated Dev Tools & Testing and Debugging for
usd-validation-nvidiaRe-wrote Native Application Development around CMake and
find_package(usd-exchange)Updated Try the Samples for the CMake based
build.sh&build.batscripts, which assemble the runtime viainstall_usdexRe-wrote the source build section of the Deployment Guide around CMake, covering the
USDEX_*configure options, the install step, theusdex::core&usdex::rtximported targets, and how oneTBB is discoveredUpdated License Notices for the dependency changes
Updated Agent Skills covering OpenPBR materials, sparse attribute authoring with
setEffectiveAttributeValue,usd-validation-nvidia, and the CMake based install & build flowAdded the
usd-coreincompatibility & its repair to the wheel and container sections of the Deployment Guide, and to the PyPI project description
Dependencies#
Runtime Deps#
OpenUSD 26.08 (default), 25.11, 25.05
MaterialX 1.39.5 for USD 26.08, 1.39.3 for USD 25.11 and 25.05
oneTBB 2021.13.0
usd-validation-nvidia 1.21.0 (test only)
Python 3.13.15, 3.12.13 (default), 3.11.15, 3.10.20
pybind11 2.11.1
Dev Tools#
CMake 4.3.2
GCC 11.4.0
MSVC 2022-v143
doctest 2.4.5
cxxopts 2.2.0
packman 8.5
repo_tools (all matching latest public)
2.3.0#
Core#
Features#
Added GeomSubset authoring utilities for assigning materials to subsets of a
UsdGeomMeshUse
definePartitionedSubsets,defineNonOverlappingSubsets, ordefineUnrestrictedSubsetsto author subsets, then usebindMaterialSubsetsto assign each a material
Added Preview Material utilities for emissive materials
Added overloads for
defineReferenceanddefinePayloadwhich accept a source layer identifier rather than an in-memoryUsdPrimBoth signatures ensure relative asset paths to valid locations are used whenever possible
Added an overload for
computeMeshNormalswhich accepts an existingUsdGeomMeshrather than the individual topologyVtArrays
Fixes#
Fixed precision issue with
computeMeshNormals& improved context of the failure diagnostic messages
RTX#
Features#
Added RTX/MDL helpers for emissive PBR materials
Fixes#
Added missing default IOR value on
defineGlassMaterialC++ signatureThe python signature already had this default
Documentation#
Added
AGENTS.mdand.agents/skillsto provide coding assistants / agents with comprehensive authoring guidance when using OpenUSD Exchange SDK
Dependencies#
Runtime Deps#
OpenUSD 25.11, 25.08, 25.05 (default) 25.02, 24.11, 24.08, 24.05
Omni Asset Validator 1.15.1
Python 3.12.12, 3.11.14, 3.10.19 (default)
pybind 2.11.1
Dev Tools#
packman 7.35
repo_tools (all matching OpenUSD Exchange SDK v2.2.2)
doctest 2.4.5
cxxopts 2.2.0
Premake 5.0.0-beta4
GCC 11.4.0
MSVC 2019-16.11
2.2.2#
Test#
Fixes#
Improve user facing message for
TestCase.assertIsValidUsdandTestCase.assertIsInvalidUsd
2.2.1#
Core#
Fixes#
Set the
wrapSandwrapTproperty of Preview Material textures to “repeat” by default
Documentation#
Add hwloc to license notice for oneTBB flavors
Dev Tools#
Fixes#
Updated
install_usdexand the wheels to include theusdShadersplugin so theSdrregistry is functionalThis inherently activates a previously “hidden” Asset Validator check for
Sdrcompliance with materials. Some material prims which previously passed validation may start failing. Any materials created via USDEX MaterialAlgo do pass this check by default, so failures should be only for post-processed or bespoke materials.
Dependencies#
Runtime Deps#
OpenUSD 25.11, 25.08, 25.05 (default) 25.02, 24.11, 24.08, 24.05
Omni Asset Validator 1.11.2
Python 3.12.12, 3.11.14, 3.10.19 (default)
pybind 2.11.1
Dev Tools#
packman 7.34
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
2.2.0#
Core#
Features#
Added USD 25.11 support
Added
defineXformoverload which takesGfMatrix(in addition to the existing signature withGfTransform)Added
computeMeshNormalsfor provided mesh topology dataIt operates on the arrays rather than the authored Prim to allow computing normals before authoring the mesh
It uses a vector-area approach for face normals and area-weighted averaging for vertex normals
FaceVarying normals are supported via a simplified approach that assigns the same face normal to all corners of each face
This function is designed primarily to resolve USD validation issues for meshes that lack normals data
For production-quality rendering with sharp edges or complex shading requirements, users should prefer specialized mesh processing libraries which provide full edge connectivity analysis and advanced normal computation algorithms
Added
getUsdLayerEncodingto help determine the underlying encoding of USD LayersIn USD 25.11 the
SdfFileFormatPluginsfor USDC and USDA were moved fromUsdtoSdf& this function avoids the need for pre-compiler macros
Test#
Features#
Added
assertRotationsAlmostEqualto compareGf.Rotation,Gf.Quatf, orGf.QuatdNone of these types are handled by
Gf.IsCloseand the implementation can be ambiguous depending on intentThis implementation requires the compared rotations to be of the same class (
Gf.RotationvsGf.QuatfvsGf.Quatd), and to define quaternions with the same signs/sense.
Fixes#
Deprecated
assertMatricesAlmostEqualandassertVecAlmostEqualUsers should migrate to
Gf.IsCloseinstead as these types are natively supported
Deprecated
assertUsdLayerEncodingandgetUsdEncodingUse
usdex.core.getUsdLayerEncodinginstead
Dev Tools#
Features#
Added USD 25.11 support via
install_usdexUSD 25.08+ flavors use oneTBB
The python wheels remain on USD 25.05
Added
UsdUIto the runtime tree, for bothinstall_usdexand python wheelsIn USD 25.11 it is a strict dependency of
UsdUtilsThis is not linked by the
usdex_coreshared library, it is only a dependency if using python &UsdUtilsThis is not a dependency on any GUI. It provides schemas for UI features like NodeGraph color/position
Documentation#
Updated USD Authoring Guide with an explanation of the
UsdtoSdfAPI breaks in USD 25.11 and how to query USDC & USDA VersionUpdated
NameAlgodocs to explain thatuiHintbaseddisplayNameintroduced in USD 25.11 is ignored for nowFixed Native Application Guide Makefile for aarch64 (Linux ARM) builds
Fixed python doc string argument listings for
usdex.test
Dependencies#
Runtime Deps#
OpenUSD 25.11, 25.08, 25.05 (default) 25.02, 24.11, 24.08, 24.05
Omni Asset Validator 1.9.2
Python 3.12.12, 3.11.14, 3.10.19 (default)
pybind 2.11.1
Dev Tools#
packman 7.34
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
2.1.0#
Core#
Features#
Added USD 25.08 support
Added convenience functions for defining basic Gprims (plane, sphere, cube, cone, cylinder, capsule)
Added Kind configuration helpers for Components and Assemblies
Added Primvar Shader helpers for preview materials
Added
connectPhysicsJointfor connecting & re-aligning a pre-defined joint to new bodies
Fixes#
Fixed
isEditablePrimLocation()to prevent authoring new children under instanced prims or their instance proxy descendants
Pybind#
Features#
Added pybind11 interoperability for
UsdGeom.Sphere,UsdGeom.Plane,UsdGeom.Cube,UsdGeom.Cone,UsdGeom.Cylinder,UsdGeom.Cylinder_1,UsdGeom.Capsule, andUsdGeom.Capsule_1
Dev Tools#
Features#
Added
usdex.rtxandUsdSemanticsto theusd-exchangewheelAdded USD 25.08 support via
install_usdexUSD 25.08+ flavors use oneTBB
The python wheels remain on USD 25.05
Added Linux ARM (aarch64) support for USD 25.02+
Available via the python wheels and
install_usdex
Fixes#
Fixed code-signing of Windows wheels
Fixed
install_usdexbug todo with optional repo_tool dependenciesFixed license documentation for python wheels
Documentation#
Fixed Try the Python Samples guide to use a virtual environment & python wheels
Dependencies#
Runtime Deps#
OpenUSD 25.08, 25.05 (default) 25.02, 24.11, 24.08, 24.05
Omni Asset Validator 1.4.2
Python 3.12.12, 3.11.14, 3.10.19 (default)
pybind 2.11.1
Dev Tools#
packman 7.33
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
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