USD Asset Resolver#

2026-07-09

7 min read

Overview#

USD layers can contain asset paths in sublayers, references, payloads and asset-valued attributes.
Usually these paths point directly to files on disk. An USD Asset Resolver adds an indirection layer: USD stores an asset identifier and asks the resolver to turn it into a resolved path that can be opened.
In Prism this allows USD files to store identifiers such as:

prism:asset:Characters/Knight:USD:latest

At load time Prism can resolve this identifier to the matching USD product version in the current Prism project.
This keeps USD layers more portable and allows a stage to follow dynamic Prism versions such as latest or approved until they are pinned.
Prism's resolver integration is based on the open source CachedResolver.
Prism includes compiled resolver builds for Prism Standalone, Houdini 21.0.631 and Maya 2027.1.
The upstream project can be used to compile compatible builds for other Houdini, Maya or USD versions.

How It Works#

An asset resolver has a few important concepts:
  • Asset identifier: The path or token authored in the USD file, for example prism:shot:sq010:sh010:USD:latest.

  • Resolved path: The concrete file path that USD opens after the resolver evaluates the identifier.

  • Resolver plugin: The USD plugin that implements the resolver behavior.

  • Resolver context: Extra state used during resolution, for example version pinning data.

Prism Identifiers#

Prism writes resolver identifiers with the prism: prefix.
Asset products use this shape:

prism:asset:<asset_path>:<product>:<version>

Shot products use this shape:

prism:shot:<sequence>:<shot>:<product>:<version>

The version part can be an explicit product version, latest or approved.
Explicit versions resolve to a specific product version. latest resolves to the newest available non-master version. approved resolves to the newest version with the approved status from the active Project Management integration.
When PRISM_USD_AR_DATE_CUTOFF is set, dynamic version resolution only considers product versions older than the timestamp in that environment variable.
This is mainly used for Deadline jobs so farm renders keep the submitted scene state even if newer product versions are published after submission.

Enable Asset Resolver#

The resolver can be enabled in the project settings:
Prism Settings > Project > USD > Use Asset Resolver
[USD Asset Resolver - Project Settings]
In Prism Standalone, Prism loads the bundled resolver when the USD plugin is available and the resolver setting is enabled.
For Houdini, Maya and external USD tools, the process has to be started with the resolver paths already available in the environment.
Prism ships launcher scripts as examples and user utilities:
USD/ExternalModules/usd_plugins/UsdAssetResolver_v0.7.8/run_houdini.bat
USD/ExternalModules/usd_plugins/UsdAssetResolver_v0.7.8/run_maya.bat

Using Resolver Identifiers#

When the resolver is enabled, Prism USD workflows can author prism: identifiers instead of absolute file paths.
This is useful when referencing products from the Product Browser or when editing references in the Prism USD Reference Editor.
In the USD Layer Manager, resolver-enabled layers include dynamic version entries such as latest and, when a Project Management integration is active, approved.
When a layer is authored with a dynamic identifier token, Prism keeps that token visible in the version dropdown instead of only showing the currently resolved concrete version.
[USD Asset Resolver - Reference Editor]
The authored identifier stays in the USD layer. When USD opens the stage, the resolver asks Prism for the matching product version path and USD opens that resolved file.
External tools can only open these identifiers when the Prism resolver plugin, a matching USD build and the Prism project context are available.
Hint

Master versions should be disabled or avoided when using the USD Asset Resolver. Dynamic resolver versions are intended to point at regular published product versions.

Version Pinning#

Dynamic identifiers are useful during lookdev, layout and shot work, but published scenes and render jobs often need a fixed state.
Prism can pin resolver identifiers to specific resolved product versions.
In the Scene Browser, right-click an asset task, shot task, or shot browser entry and choose Pin Versions... when the resolver is enabled.
Prism opens the latest USD product version for that context as the stage to inspect and shows the available referenced versions.
[USD Asset Resolver - Version Pinning]
The Version Pinning dialog can leave a reference with no override or pin it to latest, approved or an explicit product version.
The dialog also allows switching the pinning context directly (for example between entity and task contexts) without leaving the dialog.
Prism stores the pinning data in a pinning.usda resolver context file next to the selected entity or task context.
When a resolver context initializes, Prism assigns the mapping file path for the current stage context.
When a stage is opened with that resolver context, the pinned mapping is applied before dynamic resolution.
Some DCCs may need the stage to be refreshed, reopened or recooked after changing pins.

Frequently Asked Questions#

What is the difference between latest and approved?

latest resolves to the newest available non-master product version. approved resolves to the newest version with the approved status from the active Project Management integration. For Shotgrid the default approved status is apr; for other managers it defaults to approved and can be overridden with PRISM_USD_APPROVED_STATUS.

Where are pinned versions stored?

Prism stores pin mappings in a pinning.usda file for the related asset, shot or task context. The resolver context reads this file and maps authored identifiers to the pinned resolved versions.

Can render farm jobs open files with prism: identifiers?

Yes, if the farm process starts with the matching resolver plugin, USD build and Prism project environment. For Deadline submissions, PRISM_USD_AR_DATE_CUTOFF can keep latest and approved from resolving to versions published after the job was submitted.

Can the resolver be compiled for other Houdini or Maya versions?

Yes. Prism's resolver is based on the open source CachedResolver from VFX-UsdAssetResolver. That project can be compiled against different USD builds used by Houdini, Maya or other USD hosts.

Should I use master versions with the Asset Resolver?

It is recommended to disable master versions or avoid master-version workflows when using the resolver. Prism's dynamic resolver behavior is designed around regular product versions, latest, approved and explicit version pins.