USD is powerful precisely because a stage is composed from many layers - but that is also why it breaks on handoff. One absolute path, one layer left behind, and the person who opens your stage gets a wall of missing-reference warnings. The fix is to trace every dependency before you ship, and you can do it without USD installed.
Why USD dependencies break on handoff
A Solaris or LOPs export writes a stage that rarely stands alone. It sublayers other .usd/.usda files, references published assets, payloads heavy geometry for lazy loading, and points at textures and volumes through asset paths. Every one of those is a file that has to travel with the stage. Handoffs break when a path is absolute (/mnt/show/… that only exists on your machine), when a layer is simply forgotten in the copy, or when a relative path resolves against the wrong root. USD does not stop you shipping a stage with dangling dependencies - it just opens broken on the other end.
.usda is plain text - so read it directly
The .usda format is human-readable USD: the composition arcs are right there as text. That means a dependency checker does not need a USD runtime, a Python binding or Houdini open - it can parse the layer itself. Hive reads the .usda in your browser and extracts every arc:
subLayers = [
@./layers/geo.usda@,
@/mnt/show/lookdev/mat.usda@
]
def "hero" (
references = @./assets/hero/hero.usd@
payload = @./assets/hero/hero_geo.usdc@
)
From that it builds the full dependency list - sublayers, references, payloads and asset paths (textures, volumes, other layers) - the same set a proper collect would gather, without evaluating the stage.
Portability and folder-resolve status
Every dependency is classified two ways:
- Portable or absolute. Relative paths (
./assets/hero/hero.usd) travel with the stage; absolute paths (/mnt/show/…or a drive letter) are pinned to one machine and are the number-one cause of a broken handoff. Hive flags every absolute path. - Resolves or missing. Against the folder you scanned, does each referenced file actually exist? A dependency that does not resolve is a missing-reference error waiting to happen - Hive lists it now, while you can still fix it.
Together those two checks answer the only question that matters before a handoff: will this stage open somewhere else?
A collect-files list for a portable handoff
Once dependencies are resolved, Hive produces a collect-files list: every layer and asset the stage needs, as a flat set you can package. It is the browser-side equivalent of a USD "collect for delivery" step - the manifest you copy so the stage arrives complete. Hand that list, plus the flagged absolutes to repath, to whoever assembles the delivery, and the Solaris handoff opens clean instead of hunting for files across a drive.
Run it in your browser
Point Hive at a project folder (Chrome or Edge via the File System Access API, or drag and drop) or paste a single .usda. It parses locally - nothing is uploaded, no USD install, no Houdini launch - and gives you the dependency tree, portability flags, resolve status and collect-files list in seconds. It sits alongside the rest of the project audit, so a stage's USD dependencies get checked in the same pass as its cache naming and structure.
Frequently asked questions
Do I need Houdini or USD installed to check dependencies?
No. Because .usda is plain-text USD, Hive parses it directly in your browser - reading sublayers, references, payloads and asset paths - without launching Houdini, Solaris or usdview, and without a USD install.
What is the difference between a sublayer, a reference and a payload?
A sublayer composes another layer directly into the stage's layer stack; a reference brings another layer's prims in under a prim; a payload is like a reference but is loaded lazily, so it can be unloaded for a lighter stage. All three point at other files, so all three are dependencies a portable handoff must carry.
How does it help me hand off a USD stage?
Hive marks every dependency portable or absolute and reports whether it resolves against the scanned folder, then builds a collect-files list - every layer and asset the stage needs - so you can package a stage that opens on another machine instead of one full of missing references.