UniversalSceneDescription 7.2.0
dotnet add package UniversalSceneDescription --version 7.2.0
NuGet\Install-Package UniversalSceneDescription -Version 7.2.0
<PackageReference Include="UniversalSceneDescription" Version="7.2.0" />
<PackageVersion Include="UniversalSceneDescription" Version="7.2.0" />
<PackageReference Include="UniversalSceneDescription" />
paket add UniversalSceneDescription --version 7.2.0
#r "nuget: UniversalSceneDescription, 7.2.0"
#:package UniversalSceneDescription@7.2.0
#addin nuget:?package=UniversalSceneDescription&version=7.2.0
#tool nuget:?package=UniversalSceneDescription&version=7.2.0

Universal Scene Description for .NET
Pixar's OpenUSD - Universal Scene Description - packaged
as a single, drop-in NuGet for .NET 10. Bundles the managed bindings, the native
USD runtime, and the Pixar plugin tree under the standard runtimes/<rid>/native/
NuGet convention, so the .NET SDK automatically deploys everything into your
output folder. No build steps, no environment variables, no plugin
registration code.
USD is a high-performance extensible software platform for collaboratively constructing animated 3D scenes, designed to meet the needs of large-scale film and visual effects production.
Install
dotnet add package UniversalSceneDescription
Quick start
using UniversalSceneDescription;
using pxr;
// Configures the native loader and registers the bundled Pixar plugin tree.
// Idempotent and thread-safe - call once at startup.
UsdRuntime.Initialize();
using var stage = UsdStage.CreateNew("hello.usda");
UsdGeomXform.Define(stage, new SdfPath("/Hello"));
UsdGeomSphere.Define(stage, new SdfPath("/Hello/World"));
stage.Save();
That's it. The UsdRuntime.Initialize() call points USD at the usd/ plugin
folder that the .NET SDK dropped next to your executable, and makes sure the OS
loader can resolve the native DLLs.
What's in the box
| Component | Source | Where it lands |
|---|---|---|
Managed USD.NET.dll (pxr.* SWIG bindings) |
Unity com.unity.usd.core |
lib/net10.0/ |
Native USD runtime (usd_*, UsdCs, tbb, Imath, Alembic, per platform extension) |
Pixar OpenUSD (Unity com.unity.usd.core distribution) |
runtimes/<rid>/native/ |
Pixar plugin tree (plugInfo.json + generated schemas for usdGeom, usdShade, usdSkel, usdLux, usdPhysics, usdRender, …) |
Pixar OpenUSD | runtimes/<rid>/native/usd/ |
UniversalSceneDescription.UsdRuntime helper |
this package | UniversalSceneDescription namespace |
The .NET SDK auto-deploys everything under runtimes/<rid>/native/ to your build
output (preserving the usd/ subdirectory layout) - dotnet run, dotnet test,
and dotnet publish all just work.
Configuration
Override the plugin location at runtime:
UsdRuntime.Initialize(
pluginPath: "/custom/path/to/usd",
nativeLibraryDirectory: "/custom/path/to/native");
To suppress the bundled native runtime entirely (rare - only useful if you ship your own USD build):
<PackageReference Include="UniversalSceneDescription" Version="7.1.0">
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
Opt out of the automatic plugin-tree staging (rare - only needed if you
want to stage the usd/ plugin folder somewhere other than next to the
executable, or you ship your own USD build):
<PropertyGroup>
<DisableUsdPluginStaging>true</DisableUsdPluginStaging>
</PropertyGroup>
Platform support
| Runtime identifier | Status | Native asset folder |
|---|---|---|
win-x64 |
✅ Shipping | runtimes/win-x64/native/ |
linux-x64 |
✅ Shipping | runtimes/linux-x64/native/ |
osx-x64 |
✅ Shipping | runtimes/osx-x64/native/ |
osx-arm64 |
✅ Shipping | runtimes/osx-arm64/native/ |
The csproj globs runtimes/**/*, so refreshing any per-RID folder with a newer
platform USD build is enough to ship updated native support - no csproj edit
needed. Each per-RID folder includes runtime notes and currently ships binaries
from Unity's com.unity.usd.core plugin distribution.
UsdRuntime itself is fully cross-platform: on Linux it prepends the native
directory to LD_LIBRARY_PATH, on macOS to DYLD_LIBRARY_PATH and
DYLD_FALLBACK_LIBRARY_PATH, on Windows to PATH. PXR_PLUGINPATH_NAME is
set on every platform so libplug discovers the bundled plugin tree.
Learn USD
Credits
- Pixar Animation Studios - authors of OpenUSD.
- Unity Technologies - the managed C# bindings vendored here are extracted
from the
com.unity.usd.corepackage. - 3DEngine - packaging and .NET 10 helper API.
License
MPL-2.0 - see file for details. OpenUSD itself is licensed under the Modified Apache 2.0 License.
Issues, PRs and contributions welcome at github.com/EggyStudio/UniversalSceneDescription.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 7.2.0 | 57 | 4/29/2026 |
| 7.1.0 | 44 | 4/28/2026 |
| 7.0.2 | 44 | 4/28/2026 |
| 7.0.1 | 41 | 4/28/2026 |
| 7.0.0 | 50 | 4/28/2026 |
| 6.0.0 | 1,266 | 9/9/2024 |
| 5.1.2 | 274 | 9/9/2024 |
| 5.1.1 | 304 | 9/9/2024 |
| 5.1.0 | 322 | 9/9/2024 |
| 5.0.9 | 344 | 9/9/2024 |
| 5.0.8 | 344 | 9/9/2024 |
| 5.0.7 | 332 | 9/9/2024 |
| 5.0.6 | 318 | 9/9/2024 |
| 5.0.5 | 263 | 9/9/2024 |
| 5.0.4 | 253 | 9/9/2024 |
| 5.0.2 | 312 | 9/9/2024 |
| 5.0.1 | 350 | 9/9/2024 |
| 5.0.0 | 501 | 9/9/2024 |
| 4.0.1 | 357 | 7/6/2024 |
| 4.0.0 | 315 | 7/6/2024 |