The 3D Handbook
Topic

USD for environment artists

What OpenUSD is, how its layers, references, variants and payloads let several artists work on one scene without overwriting each other, and how Houdini, Unreal, Blender and Omniverse support it today.

pipelinefile-formatsusdcollaboration

USD (Universal Scene Description, now usually called OpenUSD) is Pixar's open framework for describing 3D scenes. Pixar calls it "the core of Pixar's 3D graphics pipeline, used in every 3D authoring and rendering application" (OpenUSD documentation: Introduction to USD). It provides "interchange of elemental assets (e.g. models) or animations" (OpenUSD documentation: Introduction to USD), but its main strength is that it lets many people and tools work on one scene at the same time without overwriting each other.

For game environment artists, USD matters most in large-scene layout, film and virtual-production crossovers, and Houdini-heavy pipelines. Day-to-day game asset export is still mostly FBX, which Unity and Unreal treat as their primary import format (aras-p.info: Blender FBX importer via ufbx); see 3D file formats.

#The core ideas

USD has its own vocabulary. These are the main terms.

  • Stage: the scene you are looking at, composed from many files.
  • Prim: one thing in the scene hierarchy, such as a mesh, a light or a group.
  • Layer: a file. "Prims and their contents are organized into a file abstraction known as a Layer" (OpenUSD documentation: Introduction to USD).
  • Sublayer: stacks whole USD layers on top of each other; subLayers is USD's most basic composition arc (OpenUSD documentation: Introduction to USD). Stronger layers win where they disagree.
  • Reference: pulls another file's hierarchy into your scene at a chosen place, composing the tree under the target prim into the prim that references it (OpenUSD documentation: Introduction to USD).
  • Variant set: bundles several variations of an asset into a single package (OpenUSD documentation: Introduction to USD); for example clean, damaged and destroyed versions of a building.
  • Payload: a reference whose loading is deferred, so it can be loaded or unloaded after the stage is opened (OpenUSD documentation: Introduction to USD), so a huge city can open quickly with distant blocks unloaded.

All edits on top of referenced assets are overrides. USD describes this as "non-destructively editing them (as overrides)" (OpenUSD documentation: Introduction to USD).

SideFX's Houdini docs explain sublayers versus references in plain terms: sublayers stack whole files, with the stronger file's values winning, while references bring part of another file into a specific place in your scene; referencing is how you reuse one file in several places, because "sublayering the same file twice has no effect" (Houdini documentation: USD in Solaris).

A stack of three horizontal layer cards labelled, from top, lighting.usda (strongest), dressing.usda and layout.usda. Arrows from the layout layer point to three separate asset files labelled rock.usd, house.usd with variants clean and ruined, and tree.usd, marked as references. On the right, a composed stage shows the final scene. The top layer is in orange.
A shared environment as USD. Layout, set dressing and lighting each live in their own layer, stacked by strength. Assets are referenced, not copied, and a variant set switches the house between clean and ruined. Each artist edits only their own file.Diagram by the handbook author
One of the free sample scenes on the OpenUSD downloads page. Opening a real stage like this in usdview, Houdini or another USD tool is the quickest way to see how a set is split into many referenced files and prims.Pixar Animation Studios, via openusd.org

#Up axis and units

USD stores the up axis per stage. The metadatum upAxis has legal values "Y" and "Z", and "the fallback will be "Y"" in a generic installation (OpenUSD API documentation: Encoding Stage UpAxis). Assets from a Z-up tool referenced into a Y-up stage need care: OpenUSD notes that a "conscientious set/environment-construction tool could examine the up axis of referenced assets as they are being referenced" (OpenUSD API documentation: Encoding Stage UpAxis). See coordinate systems and handedness and units, scale and axes.

#Support in common tools

Houdini (Solaris). "Houdini's tooling and support for USD is collectively known as Solaris" (Houdini documentation: USD in Solaris). Its LOP networks are built around USD: "each node accepts an incoming USD scene, modifies it, and outputs a new scene" (Houdini documentation: USD in Solaris). You are "always authoring in the strongest opinion", so Houdini handles override strength for you (Houdini documentation: USD in Solaris). See procedural modeling.

Unreal Engine. Unreal supports USD "through the USD Stage panel and bi-directional Python workflows" (Unreal Engine 5.8 Documentation: Universal Scene Description in Unreal Engine). A USD Stage Actor "acts as a container for the contents of a loaded USD file", and the stage "handles live updates as you make changes to the source USD file on disk" (Unreal Engine 5.8 Documentation: Universal Scene Description in Unreal Engine). It loads .usd, .usda, .usdc and .usdz and supports static and skeletal meshes, HISM, materials with PreviewSurface, lights, cameras, variants and animation (Unreal Engine 5.8 Documentation: Universal Scene Description in Unreal Engine). Limits: it is labelled Beta, and "Unreal Engine does not automatically create lightmaps for assets loaded on the USD Stage" (Unreal Engine 5.8 Documentation: Universal Scene Description in Unreal Engine). You need the USD Importer plugin (Unreal Engine 5.8 Documentation: Universal Scene Description in Unreal Engine).

Blender. Blender has USD import and export, and support changes with each release. Blender 4.5 added export of text objects, writes MaterialX materials as OpenPBR Surface, and imports animated camera properties and skeleton rest poses (Blender Developer Documentation: Blender 4.5 LTS: Pipeline & I/O). Check the release notes for your version before relying on a feature.

NVIDIA Omniverse is "a development platform for building and operating 3D applications and services at scale", and its documentation presents OpenUSD as its foundation for data interoperability (NVIDIA Omniverse documentation: Introduction).

Tool USD role Notes
Houdini Native USD authoring (Solaris, LOPs) Strongest support (Houdini documentation)
Unreal Engine Open a live stage or import Beta; no automatic lightmaps on the stage (Unreal Engine 5.8 Documentation)
Blender Import and export Changing per release (Blender Developer Documentation)
Omniverse Platform built on OpenUSD For building 3D apps and services (NVIDIA Omniverse documentation)

#Common mistakes

#Further reading and watching

References

  1. Pixar Animation Studios · Introduction to USD · OpenUSD documentation, 2026 · docs · accessed 2026-10-21
  2. Aras Pranckevičius · Blender FBX importer via ufbx · aras-p.info, 2025 · article · accessed 2026-10-20
  3. SideFX · USD in Solaris · Houdini documentation, 2026 · docs · accessed 2026-10-21
  4. Pixar Animation Studios · Encoding Stage UpAxis · OpenUSD API documentation, 2026 · docs · accessed 2026-10-21
  5. Epic Games · Universal Scene Description in Unreal Engine · Unreal Engine 5.8 Documentation, 2026 · docs · accessed 2026-10-21
  6. Blender Foundation · Blender 4.5 LTS: Pipeline & I/O · Blender Developer Documentation (release notes), 2025 · docs · accessed 2026-10-20
  7. NVIDIA · Introduction (Omniverse Developer Overview) · NVIDIA Omniverse documentation, 2026 · docs · accessed 2026-10-21

Also consulted

Last updated 2026-10-22