{"id":5547,"library":"usd-core","title":"Pixar's Universal Scene Description (USD) Core Python Library","description":"Pixar's Universal Scene Description (USD) is a robust system designed for scalably encoding and interchanging static and time-sampled 3D geometry, shading, and lighting data across various Digital Content Creation applications. The `usd-core` package, available on PyPI, provides the fundamental Python bindings for authoring, composing, and reading USD data. It is actively maintained by Pixar Animation Studios, with new versions typically released every 3-4 months. The current version is 26.3, continuously evolving the OpenUSD ecosystem.","status":"active","version":"26.3","language":"en","source_language":"en","source_url":"https://github.com/PixarAnimationStudios/OpenUSD","tags":["3D","USD","graphics","scene description","animation","VFX"],"install":[{"cmd":"pip install usd-core","lang":"bash","label":"Install core USD Python library"},{"cmd":"pip install usd-core types-usd","lang":"bash","label":"Install with auto-complete types (optional)"}],"dependencies":[{"reason":"Required Python interpreter version for the package.","package":"python","version":">=3.8, <3.14"},{"reason":"Provides type hints for improved IDE auto-completion. Not strictly required for runtime.","package":"types-usd","optional":true}],"imports":[{"note":"USD Python modules are nested under the 'pxr' namespace.","wrong":"import Usd","symbol":"Usd, UsdGeom, Sdf, Gf","correct":"from pxr import Usd, UsdGeom, Sdf, Gf"}],"quickstart":{"code":"from pxr import Usd, UsdGeom\nimport os\n\n# Create a new USD stage in memory or on disk\noutput_filename = os.environ.get('USD_OUTPUT_FILE', 'HelloWorld.usda')\nstage = Usd.Stage.CreateNew(output_filename)\n\n# Define a root transform prim at the path /hello\nxformPrim = UsdGeom.Xform.Define(stage, '/hello')\n\n# Define a sphere prim nested under the transform at /hello/world\nspherePrim = UsdGeom.Sphere.Define(stage, '/hello/world')\n\n# Set a radius for the sphere\nspherePrim.GetRadiusAttr().Set(2.0)\n\n# Save the stage to a file\nstage.GetRootLayer().Save()\n\nprint(f\"Created {output_filename} with a sphere at /hello/world\")","lang":"python","description":"This quickstart demonstrates how to create a simple USD stage, define a transform (Xform) and a sphere (UsdGeom.Sphere) prim, set an attribute, and save the stage to a .usda file. All core USD Python modules are accessed via the `pxr` namespace."},"warnings":[{"fix":"Upgrade your Python environment to 3.9 or higher (up to <3.14 as per PyPI).","message":"Python 3.8 support is deprecated as of a recent OpenUSD release (noted in CHANGELOG) and will be removed in the subsequent release. Users on Python 3.8 should plan to upgrade.","severity":"breaking","affected_versions":">=26.03 (deprecation, removal in next major)"},{"fix":"If `usdview` or full imaging capabilities are needed, refer to NVIDIA's OpenUSD developer resources for pre-built binaries or the OpenUSD GitHub repository for build instructions.","message":"The `usd-core` PyPI package provides only the core USD libraries for authoring, composing, and reading. It *does not* include optional plugins, imaging features, or tools like `usdview` (Pixar's scene inspector). For a full USD experience, including `usdview` and other utilities, you generally need to download pre-built binaries from NVIDIA or build OpenUSD from source.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Migrate UI metadata to use the `uiHints` dictionary for prims and properties, which supports features like `shownIf` and `valueLabels`.","message":"The older `displayName`, `displayGroup`, and `hidden` metadata APIs within `UsdUI` were deprecated in v25.11 in favor of a new, dictionary-valued `uiHints` metadata field.","severity":"deprecated","affected_versions":">=25.11"},{"fix":"Ensure your C++ toolchain and project settings are updated to be compatible with C++11 ABI and, for Visual Studio, enable the `/permissive-` flag.","message":"Beginning with the 26.03 release, the `usd-core` PyPI package utilizes the C++11 ABI. Furthermore, clients building C++ code against OpenUSD with Visual Studio must enable the `/permissive-` (strict standards conformance) flag.","severity":"breaking","affected_versions":">=26.03"},{"fix":"Avoid using negative layer offset scales. For `.sdf` files, ensure they are in a modern format to prevent future compatibility issues.","message":"Support for negative layer offset scale has been removed, and the `PCP_ALLOW_NEGATIVE_LAYER_OFFSET_SCALE` environment variable has been removed. Additionally, the `SDF_FILE_FORMAT_LEGACY_IMPORT` environment variable is now set to 'warn' by default, indicating that legacy `.sdf` file format header support will be removed in a future release.","severity":"deprecated","affected_versions":">=26.03 (removal of negative layer offset scale), all versions (legacy .sdf warning)"},{"fix":"Ensure you are using a recent `usd-core` version (22.03 or newer). As a workaround for older versions or persistent issues, setting the environment variable `CONDA_DLL_SEARCH_MODIFICATION_ENABLE=1` might resolve the problem.","message":"Users on Windows running Python 3.8+ within `conda` environments may encounter DLL loading failures (e.g., `DLL load failed while importing _tf`). This was addressed in USD 22.03.","severity":"gotcha","affected_versions":"Earlier versions, especially on Windows with Python 3.8+ in Conda."}],"env_vars":null,"last_verified":"2026-04-13T00:00:00.000Z","next_check":"2026-07-12T00:00:00.000Z"}