Citation and evidence

Unity USD Toolkit

6 min full readUpdated 14 references

This article's verification

Report a problem with this article

More

Use this article

Raw MarkdownExplore connections

Improve this page

Suggest editRevision historyDiscussion

Browse categories

Developer ToolsPhysical AISoftware Development

Cite this article

Unity USD Toolkit is an experimental package for Universal Scene Description (USD) scene interchange in Unity's Editor and built applications. It reads and writes .usd, .usda, .usdc and .usdz files for exchange with NVIDIA Isaac Sim and NVIDIA Omniverse.[1]

The package identifier is com.unity.usd-toolkit. The repository's package manifest identifies version 0.7.2-exp.1.[2]

Unity does not support the experimental package for production use, and any 0.x release can change its API.[1]

Scene exchange and simulation

USD represents a scene as a hierarchy of primitives, or prims, with attributes and relationships. Its composition system combines layers and referenced assets into a stage, and supports overrides without editing the original assets. A stage is the composed scene that an application reads or modifies.[3]

The toolkit exchanges static geometry, transform hierarchies, materials and textures. It does not supply a renderer or simulation runtime, and does not author or run physics. Unity renders imported scenes using its own materials and render pipeline.[1]

This distinction matters for robot learning: scene interchange is separate from simulation dynamics and control. The Orbit research framework, for example, loads robot models from USD and separately manages physics, actuator models and controllers. Those are capabilities of the simulation framework, rather than of a USD interchange package.[14]

Documented requirements

Documented requirements are Unity 6.4 or newer and:[4]

PlatformEditorBuilt playerMinimum operating system
Windows x64YesYesWindows 10 version 21H1
macOS Intel and Apple siliconYesYesmacOS 12.0
Linux x64YesNot yet documented as supportedUbuntu 24.04
Mobile, WebGL and consolesNoNoNot supported

Expanded article table

Windows requires the Microsoft Visual C++ Redistributable. Linux requires glibc 2.38 or later and a libstdc++ providing GLIBCXX_3.4.32.[4]

The manifest declares unity: 2023.1, but the manual requires 6.4 or newer. The table follows documented support rather than plugin settings.[2][4]

Import and export

Data or operationDocumented behavior
GeometryExport and import static meshes.[1]
TransformsExport baked mesh transforms or preserve an Xform hierarchy.[1]
MaterialsExchange UsdPreviewSurface values and per-submesh bindings.[1]
TexturesExport PNG textures; import material textures, including packaged .usdz textures.[1]
Unity materialsConvert imported values to URP, HDRP or Built-in materials.[1]

Expanded article table

The importer exposes both synchronous and asynchronous entry points. ImportAsync reads scene data on a worker thread, then creates Unity objects on the main thread across multiple frames. It must be called from the main thread. GetPreviewInfo returns mesh, material, triangle and vertex counts alongside stage units and the up axis.[5]

Import APIPurpose
UsdImporter.GetPreviewInfoInspect stage statistics before creating Unity objects
UsdImporter.ImportImport synchronously
UsdImporter.ImportAsyncRead in the background and build objects across frames
UsdImporter.LoadImageFileLoad a PNG or JPEG within the importer's image limits

Expanded article table

These methods are in the Unity.USDToolkit namespace.[5]

Import reports upAxis and metersPerUnit, but does not automatically rotate or scale the imported scene for those values. An Isaac Sim stage that is Z-up therefore needs a parent transform adjustment in Unity's Y-up world.[4]

The current native source also contains limited fallback conversion for Omniverse MDL shaders such as OmniPBR, OmniSurface and OmniGlass. This is not general MDL rendering: some properties are approximated, and separate OmniPBR metallic, roughness and ORM textures are not imported. The changelog places this work under Unreleased, so it should not be assumed to exist in every distributed binary.[12][8]

USD Live Sync prototype

The Live Sync sample exports the initial geometry to base_stage.usda, then sends transform changes over loopback TCP as newline-delimited JSON. A joining client receives a snapshot; later delta messages contain changed objects. Clients can send transform edits back and save a checkpoint as a USD override layer. The channel synchronizes transforms, rather than continuously retransmitting geometry.[6]

Unity accepts incoming object edits only where a UsdSyncNode enables AcceptsRemoteWrites. Authentication is also required: each connection must present a token before receiving scene data. Traffic is unencrypted and the server binds only to loopback addresses. Software running under the same user account can read the session token, so authentication does not isolate the sample from that software.[6]

The Isaac Sim client guide targets Isaac Sim 6.0.1 on Windows, installed on the same machine. Its Kit extension mounts the Unity stage beneath a wrapper that handles the Y-up to Z-up conversion and stage units. Isaac Sim can send poses back to permitted Unity objects, including physics-driven poses after rigid bodies and colliders are configured in Isaac Sim. An object needs a single controlling application to avoid conflicting updates.[7]

The client includes graphical and standalone launchers, including a headless mode. Isaac Sim is obtained separately; the package does not redistribute NVIDIA software.[7]

Limitations and file handling

The documented limitations include skinned meshes, animation, variant sets, payload streaming, MaterialX materials and physics schemas. Importing a mesh with a collider option is not equivalent to importing a complete robot physics description.[4]

The main-branch importer confines texture reads to the stage directory unless AllowExternalAssetPaths is explicitly enabled. It checks file and image dimensions before decoding and rejects paths that escape through links. These are defensive checks, not a guarantee that arbitrary USD files are harmless.[5]

The changelog distinguishes dated version entries from Unreleased changes. Version 0.7.0, dated September 12, 2026, introduced Live Sync; version 0.7.2, dated September 17, records import diagnostics, opacity handling and additional UV sets. Later security and native-payload work remains in the Unreleased section.[8]

Installation and native implementation

Install through Package Manager from Git, a folder or tarball. Git installations require Git LFS to download native libraries; run git lfs pull after cloning.[1]

The managed API calls a native OpenUSD wrapper through P/Invoke. Each desktop platform has its own native binary. Changes to the wrapper's binary interface require rebuilding the corresponding platform payload, and an already-loaded Unity native plugin requires an Editor restart before a replacement takes effect.[11]

The third-party inventory identifies OpenUSD 26.05 and oneTBB 2020.3. Their licenses are separate from the package license: OpenUSD uses the Tomorrow Open Source Technology License 1.0, while oneTBB uses Apache License 2.0.[13]

License

The toolkit is licensed under the Unity Companion License for Unity-dependent projects.[9] The license permits use in connection with content authored or distributed under a valid Unity engine license, and restricts use for competitive analysis or developing a competing product or service.[10]

References

  1. ^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9Unity Technologies. Unity USD Toolkit README. Repository documentation, accessed October 8, 2026.
  2. ^1 ^2Unity Technologies. Unity USD Toolkit package manifest. Version `0.7.2-exp.1`, accessed October 8, 2026.
  3. ^Pixar Animation Studios. Introduction to USD. OpenUSD documentation, accessed October 8, 2026.
  4. ^1 ^2 ^3 ^4 ^5Unity Technologies. Unity USD Toolkit User Manual. English edition, accessed October 8, 2026.
  5. ^1 ^2 ^3Unity Technologies. UsdImporter.cs. Managed importer source, accessed October 8, 2026.
  6. ^1 ^2Unity Technologies. Live Sync Example guide. Accessed October 8, 2026.
  7. ^1 ^2Unity Technologies. USD Live Sync Isaac Sim client guide. Accessed October 8, 2026.
  8. ^1 ^2Unity Technologies. Unity USD Toolkit changelog. Accessed October 8, 2026.
  9. ^Unity Technologies. Unity USD Toolkit license notice. Accessed October 8, 2026.
  10. ^Unity Technologies. Unity Companion License. Version 1.4, October 29, 2024.
  11. ^Unity Technologies. Building the Native Plugin. Accessed October 8, 2026.
  12. ^Unity Technologies. UsdExporter.cpp. Native material conversion source, accessed October 8, 2026.
  13. ^Unity Technologies. Third-Party Notices. OpenUSD and oneTBB inventory, accessed October 8, 2026.
  14. ^Mittal, M., et al. Orbit: A Unified Simulation Framework for Interactive Robot Learning Environments. IEEE Robotics and Automation Letters 8(6), 2023; arXiv version revised February 16, 2024. DOI: 10.1109/LRA.2023.3270034.

Improve this article

Add missing citations, update stale details, or suggest a clearer explanation. Every suggestion is reviewed for sourcing before it goes live.

v1 · 1,277 words · full history

Fact-checks are independent of edits: a reviewer re-verifies the article against its sources and stamps the date. How we verify

Research and drafting on this wiki are AI-assisted, under named human editorial standards. How AI is used here

Reviewer note: Independent full-article review against 14 primary and research references, October 8, 2026. Checked subject identity, specifications, availability, limitations and citation support.

Cite this page: AI Wiki. "Unity USD Toolkit." aiwiki.ai, updated 7 Oct 2026, fact-checked 7 Oct 2026. CC BY 4.0. https://aiwiki.ai/wiki/unity_usd_toolkit

Suggest edit