USD Assembly Pipeline

I designed and automated an assembly workflow that uses Universal Scene Description (USD) to manage set dressing organization and keep consistency between assemblies across shots. Read more below for details!

sunny-set
Sunny's Apartment Assembly, made with USD
sunny-anim
Shot of Sunny's Apartment within Animation
sunny-final
Final rendered shot of Sunny


Asset Steps

  1. The modeling team publishes their work which exports the proxy (and render, if it exists) versions of the model to USD and stores them on the network.
  2. The surfacing team publishes their work which exports the textured render of the model and stores it on the network.
  3. When a set dressing artist first opens an assembly asset, a base USD file named after the asset is created and imported into their Maya scene. When the base USD is created:
    1. The USD kind is set to assembly. This is done so that an assembly can be imported into another assembly in the future if needed.
    2. The base prim is set to be the default prim for the USD. All assets in the future are automatically imported into the contents prim.
    create-usd-code
  4. The set dressers use the USD Manager tool to add and remove assets to the USD, then they can move them around as needed.


  5. usd-manager-gui

    1. The tool queries ShotGrid to gather project data and assemble a list of all a ssets in the project, with icons that indicate whether an assembly is able to pull in that asset.
      1. Green icons indicate that the asset's USD file exists on the network so the artist can therefore import the asset into their assembly.
      2. Red icons indicate that the asset cannot be imported.
      3. Yellow icons indicate an assembly asset.
    2. The artist can check the assets they want to import into the assembly (Import Checked Assets).
      1. When they import an asset, it creates a prim with a USD reference. Then, the proxy model and the textured render model are added as sublayers of this prim with their corresponding purposes set.
      import-asset-code import-asset-code
    3. The artist can check the assets they want to remove from the assembly (Remove Checked Assets).
    4. The artist can choose to reload the USD if they would like to reload any changes made to any USD references while they were working with it (Reload All Assets).
  6. From here, the assembly can be pulled into layout, animation, and lighting shots. Each discipline has either proxy or render purpose set on the assembly as per what they use (layout has proxies, animation and lighting have renders).


Shot Steps

  1. Layout imports the assembly they are assigned into their shot (in the future I would like to be able to have the pipeline query ShotGrid instead for assigned assembly to a shot rather than have layout artists choose it). These sets are added to the set sublayer of the general shot layer. Then, a layout layer is created and targeted for any extra changes layout may need to make to the assembly.
  2. Animation imports the general shot layer into their scene. An Animation sublayer is then created about the Layout sublayer and targeted for any changes animation needs to make to the assembly.
  3. Lighting imports the general shot layer into their scene. Similarly, a Lighting sublayer is created and targeted. The assembly's stage display purpose is set to render to show only textured assets.
import-asset-code

Above is a picture of the USD layer editor once it reaches the lighting discipline.