Universal Scene Description in UE4

Describes how to bring USD files into Unreal Engine 4 and work with their contents.

Windows
MacOS
Linux

Computer graphic productions (films, games, or other forms) typically generate, store, and transmit a great deal of 3D data. That data comes from various sources (animators, lighting or shading artists, modelers, fx artists, and more) who use a wide range of applications (Unreal Engine, Maya, Houdini, Blender) in the pipeline, each of which have historically had their own proprietary form of scene description tailored to the specific needs and workflows of the task or application.

The Universal Scene Description (USD) format was developed by Pixar to address the need to robustly and scalably interchange and augment arbitrary 3D scenes that may be composed of many elemental assets. USD not only provides a rich toolset for reading, writing, editing, and rapidly previewing 3D geometry and shading, but it also provides for the interchange of elemental assets (for example, models) or animations.

Unlike other interchange packages, however, USD also enables assembly and organization of any number of assets into virtual sets, scenes, and shots, which you can then transmit from application to application, and non-destructively edit them (as overrides), with a single, consistent API, in a single scenegraph.

USD in Unreal Engine 4

There are two ways to work with USD files in Unreal Engine:

  • USD Stage Actor/USD Stage Editor: Instead of converting USD data into native Unreal Engine Assets like Static Meshes and Materials, you can work natively with your USD data using the USD Stage Actor and the USD Stage Editor window. This workflow makes it faster to get your USD data into Unreal, gives you a clearer view of how your USD content was originally structured, and handles live updates as you make changes to the source USD file on disk.

  • Python USD Import/Export: The bi-directional Python workflow provides the ability to import objects from USD files into Unreal Assets and spawn Actors in the Level. It also has the ability to export objects back out to USD files. Due to the differences between UE4 and USD assets, the conversion will result in loss of quality.

Using the USD Stage Actor/USD Stage Editor workflow provides the following benefits:

  • Load .usd, .usda (ASCII), .usdc (binary) and .usdz formats.

  • Visualize the USD Scenegraph and Layers hierarchy.

  • Support Static Meshes, Skeletal Meshes, Hierarchical Static Mesh components (HISM), Materials, Lights, Cameras, Variants, Animations, and Blend Shapes.

  • Support Materials (PreviewSurface and DisplayColor).

  • Supports Textures in USD Preview Surface.

  • Enable or disable payloads (to load and unload content).

  • Support for USD plugins, such as Alembic or Custom Path Resolver.

Although currently in Beta, we recommend this approach for the majority of users who need USD support. The following sections describe how to use this method to interact with your USD content.

Enabling the USD Import Plugin

Before you can work with a USD file in the Unreal Editor, you will need to enable the USD Importer Plugin from the Plugins menu:

  1. From the Edit menu, select Plugins.

    Enabling the USD Importer plugin

  2. Search for USD in the search bar, then enable the USD Importer Plugin and restart the editor.

    The USD Importer plugin

When the Editor restarts, you'll see a new USD Stage Editor option listed under the Window menu:

USD Stage option in the Window menu

The Place Actors panel also lists some new USD Actors that you can add to your Level:

Place Actors panel

Live USD Stage Workflow

To work with your USD content inside the editor, follow the steps below:

  1. From the Window menu, select USD Stage Editor.

  2. From the menu in the USD Stage Editor panel, choose File > Open and browse to your USD file.

The panel will be populated with the scene hierarchy read from the USD file you selected.

Depending on the complexity of your USD data, loading times may vary. If you have larger scenes, you can set up a USD Stage Actor to not load any data from the USD file initially, then load only individual payloads as needed. See USD Stage Actor Properties below.

A USD Stage Actor will also be added to your Level if it did not contain one. This Actor is a container for the USD data read from the file, and provides a location for that data in the Level.

The 3D scene objects that are loaded from the USD file and that you see in the viewport are fully compatible with most other Unreal Engine features, and you can treat them exactly like other Actors you'd work with in Unreal Engine. You can also select individual objects from the USD scene in the Viewport and manipulate them, such as moving Actors and assigning new materials.

From the USD Stage Editor, you can switch between any variants defined in the USD file and see the scene reflect those changes immediately:

You can add additional USD prims that can reference the content found in other USD files, including Animated Skeletal Meshes. Animations in the USD file are associated with a Level Sequence, which you can use to scrub or play back the animation.

If you make changes to your USD Stage in the USD Stage Editor, you can write those changes back out to the USD file by saving the USD data by using File > Save.

Accessing and Authoring USD Animations in Unreal Engine 4

Animations stored within a USD file are accessible from a specially-generated Level Sequence spawned by the USD Stage Actor:

Double click on the Level Sequence in the Details panel to open the sequence. USD xform animations are displayed as Transform tracks in Sequencer. Other forms of animation such as floats, boolean, and skeletal bones, are displayed via the Time track. In the image above, you can see the USD animation data represented as a key/value pair at each timecode for the duration of the animation.

Through the USD Stage generated Level Sequence, it is possible to bind to an Actor that is spawned on the USD Stage and add additional animation through a Transform track:

  1. Click the Track+, highlight the Actor to Sequence option, and select your Actor from the list.

  2. Next, click the + button to create a Transform track for the Actor.

  3. Using keyframes, animate the transform data of your Actor.

USD animation data is baked. When you save the data back to the USD file the xform values will be updated to match. To delete an animation, you can delete either the binding or the new Transform track. This will erase all time varying values from the USD xform transform attribute.

Importing USD Content into Unreal Engine 4

Actors displayed on the USD Stage can be imported into the UE4 Content Browser through any of the following import options:

  • Using File > Import Into Level. This process will import both assets (static mesh, skeletal mesh, materials, textures, and so on) and Actors.

  • Using the Add/Import button in the Content Browser. This process will only import assets.

  • Dragging and dropping the file into the Content Browser. This process will only import assets.

  • Using Action > Import option in the USD Stage panel. This process will import both assets and Actors. After the import process is complete, assets on the USD stage are replaced with new Actors from the Content Browser.

USD Stage Editor

The USD Stage Editor outlines the scene hierarchy from the USD file and offers you tools to modify the USD data. This includes:

  • Opening, saving, and reloading USD files.

  • Toggling visibility and payloads, or selecting variants for primitives.

  • Creating new layers, opening existing layers, or muting layers.

  • Add or remove prims and alter their references.

Rows in orange are composition arcs, and you can right-click any prim to add references to it (or clear references from it). Other right-click options include the ability to add or remove prims, and the ability to toggle, load, or unload payloads.

The Details panel in the USD Stage Editor displays information about the current selection, and provides the ability to choose between any defined Variants.

USD Stage Actor Properties

After you create a USD Actor, you can use the properties in the Details panel to control how the Actor accesses and uses the data in its USD file.

USD Stage Actor details panel

Property

Description

Root Layer

Selects a USD file to use for this Actor.

Initial Load Set

Defines what parts of the USD scene to load when starting the Level. Load All loads all data in the stage, Load None refrains from loading any objects in the stage until you load them in the USD Stage Editor window.

Purposes to Load

Defines which prims to load based on Purposes found in the USD file.

  • Load All: loads all data in the stage.

  • Load None: refrains from loading any objects in the stage until you load them in the USD Stage Editor window.

Time

The time code to evaluate the USD stage for this Actor.

Level Sequence

The Level Sequence that is associated with this Actor.

Select Skin
Light
Dark
Help shape the future of Unreal Engine documentation! Tell us how we're doing so we can serve you better.
Take our survey
Dismiss

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback