# Write USD Composition

INPUT → A selection of Multiverse Compounds (mvUsdCompondShape) and Maya groups (transform)
OUTPUT → USD Composition File (.usd/.usdc/.usda/.usdz)

This shelf button allows to write a hierarchy of nodes consisting of any number of Multiverse Compound nodes (which may contain multiple layers) and of Maya "group" nodes (Maya transforms), to a USD file on disk. We call this file a USD “composition”.

Typically, the user will create this hierarchy of Compounds and transforms in the Maya Outliner, then write it out as a composition and read it back as a single Compound.

Options are available to control how to write the Compounds into the composition: as a "reference" or as "delayed reference" (payload).

In case the various compounds that form the composition have pending (unwritten) overrides, an option will allow to automatically write them and sync them to the Composition.

Use the time settings to output a static or animated or topology varying composition.

It's important to note that a composition can contain other compositions too: in Multiverse you should aim at a "consolidation" workflow where individual Compounds are organized into hierarchies to be written as Compositions. Once "composed" the viewport draw will be much faster than having many individual Compounds nodes. An example of a composition is J Cube's Esper Room, or the Pixar's Kitchen.

Bottom line is that ideally you should streamline your scene into as few Compounds as possible when in the lighting and rendering stage of your pipeline: for example you would have a Compound for each main character and one to three Compounds for your set (near, min, far bg).


Writing compositions is also available through the Multiverse Python API:


See the relative API documentation

# Input

A selected hierarchy of Maya group nodes (transform) and Multiverse Compound nodes (mvUsdCompoundShape).

# File Output

By default, when no extension is typed, this will write a single .usd binary file.

You can also explicitly type the extension:

  • .usd binary file — default in case you don't type an extension.

  • .usdc binary file — exactly the same as .usd: there is no valid reason to specify a .usdc extension, simply use .usd if you want to write binary files.

  • .usda ASCII file — ASCII files should only be used for inspection and for debugging purposes.

  • .usdz — this will write a single .usdz archive file possibly containing textures as well (if you have authored with USD Preview Materials). We call this an “AR asset”. When choosing USDZ the data will be flattened automatically regardless if you set the flatten option on/off.


    .usdz files are used for augmented reality in the Apple ecosystem such as on iOS and macOS, see the relative doc USDZ output for AR. You can also read back USDZ fees in Maya using the Multiverse Read USD (or via the Multiverse Python API).

The composition may reference other USD files, either as USD reference or payload, alternatively all contents can be flattened into a single file without any dependency.

Typically you will read compositions in Maya via the Multiverse Read USD (or via the Multiverse Python API) to be used as-is or to be written out again as part of another “composition”.

Alternatively you can read this USD file in any other USD-enabled DCC application such as Houdini | Solaris.

# Static / Animated Composition

Using the Time Settings you can either write:

  • Static composition — This is a single USD file, with a single frame containing a single “sample” of data (at the current frame in Maya) which will persist through time.
  • Animated composition — This is a single USD file, with multiple frames (for a frame range you can specify) each containing either a single “sample” of data per frame, or multiple “samples” of data per frame.

# Compositions of USD skinned characters

You can write compositions where a relationship has been established between two Compounds: one containing a skeleton and another one containing a matching character hierarchy. The USD Skeleton Workflow contains a detailed explanation for this.

# Reference

Section Parameter Description
Write Settings Write as Compound Layers Consolidates a single compound node with multiple layers (at least more than one layer) by writing all layers as USD "subLayers" rather than as USD "references".
Strip Namespaces Strip any namespace from the written nodes.
Merge Transform and Shape Write pairs of Maya transform and Maya shape nodes into a single merged node representing both transform and shape in a single node.
Flatten into single file Flatten your composition into a single USD file containing everything. If you do not flatten a composition, then assets are written as USD references.
Write and Sync Pending Overrides Automatically write all pending (unwritten) overrides present on compound nodes of this composition. Then auto-sync after writing.
Compound Write Mode. Inherited from Compound When writing the composition, for each Multiverse Compound encountered, check and use the value of the “Composition Write Mode” which is locally specified in the UI of each Multiverse Compound (mvUsdCompondShape).
As References When writing the composition, for each Multiverse Compound encountered, write it as a USD Reference. A reference is loaded immediately in the GUI and also when rendering.
As Payloads (Delayed Reference) When writing the composition, for each Multiverse Compound encountered, write it as a USD Payload. A payload is loaded in delayed fashion only at render time.
Time Settings Current Frame Write a single “sample” of data at the current frame. This produces a static composition.
Frame Range Write a single “sample” or multiple “samples” of data for the specified frame range. This produces an animated composition.
Start The first frame to write
End The last frame to write
Increment Write every 1 frame or every n-frames according to your n-increment
Sub-frames How many “samples” to write for each frame (they will be equally spaced).
Sub-frames span From the center of the frame, how large is the interval span for each “sample”.
Frames per second Writes the desired frames per second / timecode per second in the header of USD files.
Preview A preview of your time samples.
Last Updated: 5/26/2022, 3:36:09 PM