Data Exchange and Interoperability
This domain tests moving USD in and out of a pipeline without breaking references, materials, or units.
Formats and packaging
.usdais text,.usdcis binary,.usdresolves by content.usdcatconverts between them.- USDZ is a zero-compression zip with 64-byte alignment and no absolute paths, required by ARKit and QuickLook. Build it with
usdziporUsdUtils.CreateNewUsdzPackage, and validate withusdchecker --arkit. - Package-relative addressing looks like
@./asset.usdz[textures/albedo.png]@, keeping dependencies inside the package. - Ar maps logical
SdfAssetPaths to real paths. Custom resolvers implementArResolver;SdfAssetPathkeeps paths unresolved until needed.
Materials and DCC interop
UsdShade networks are the exchange currency. MaterialX maps through usdMtlx (source asset plus shader translation); glTF and FBX import through plugins producing UsdGeom and UsdShade; Alembic geometry is wrapped or converted. Always check upAxis (Y vs Z) and metersPerUnit on import - mismatch is the most common interop defect.
Worked example
A chair exported to USDZ loses its texture in QuickLook. The texture was referenced by an absolute path outside the package. Copy the texture beside the layer, author the relative @./textures/albedo.png@, repackage, and the layer resolves inside the zip via package-relative paths.
Traps
Shipping absolute paths or a compressed USDZ; omitting defaultPrim so the package opens empty; skipping unit and axis conversion; and assuming a glTF or FBX round trip preserves variants, composition arcs, or USD-specific metadata - it does not.