The Residential Lobby dataset has been put together as an example of the power of OpenUSD for collaborative design as it relates to the AECO industry. This dataset includes numerous individual USD assets that have been incorporated into a single main USD Stage or “World” composition. Each of the component parts of this lobby (e.g. chairs, light fixtures, etc.) are their own individual USD files which means they can be modified on their own, outside of the final composed lobby stage. Some of the files have come from popular CAD applications like Revit and Rhino, while other components originate inside of 3ds Max or have been pulled from NVIDIA’s freely available USD content library.
The modular nature within the OpenUSD platform empowers designers with a flexible non-destructive workflow where collaboration is champion.
The goals that the creative team established for this project were as follows:
Leverage the modular nature of OpenUSD to assemble the scene from multiple sources and applications (Revit, Rhino, 3ds Max, Omniverse)
Work non-destructively by using OpenUSD’s composition arcs; specifically References, Payloads and Layers in this scene
Define a project workflow so that multiple team members could work collaboratively without disrupting each other’s efforts
Incorporating external file sources
As an initial workflow decision, the creative team chose to organize all of its source files by adding a prefix to the name of files and sublayers to indicate if a source DCC (Digital Content Creation) app was used for that asset’s creation. This was done to ensure it only took a quick glance for the team to see and understand where any given part within the Lobby composition originated.
Source DCC Association
rvt = Revit Source File
rh = Rhino Source File
max = 3ds Max Source File
Each of these files was exported from its respective source 3D app to USD. In this case, the team used the available Omniverse Connectors to convert them into USD assets, but any app that can export USD should be sufficient.
Composition Arcs used
The Lobby Dataset utilizes several composition arcs and multiple USDs to create the finished environment. Here’s how they were organized and below is a high-level summary of why the creative team chose specific workflows for different aspects of the project.
The main World_Lobby.usd incorporates two main “assembly” USDs as Payloads which allows for easily adjusted runtime loading of data as needed for a particular task or focus. In this case, the team could choose to quickly unload all of the data related to the outer shell of the building or the interior lobby itself at any time so they could focus on a specific aspect of the project and enhance performance, while still having access to everything when needed. This USD file represents the “composed stage” for the scene and is where all of the other elements are brought together to form a cohesive environment. But there is a LOT going on within this project. Let’s look at each of the Payloads to better understand how this environment came together.
Examining the assembly_BaseBuildingL0.usd file, you’ll see that this composition is fairly simple in that it incorporates multiple USD files into named layers. Separate Rhino and Revit files were inserted into their own individual layers and represent the columns and interior walls of the lobby along with the curtain walls of exterior glass. This composition decision allowed the team to organize the content around their desired collaborative workflow (given different team members were working in and exporting from different CAD apps), while letting them also focus on just the architectural “shell” of the space. It’s worth noting that beyond simply combining the two CAD USDs, the team also created an additional Layer to hold all of the material application for the geometry. This meant the team was able to create, edit, review and approve the materials within this composition non-destructively and independently from the geometry.
Following the same train of thought, opening the assembly_Lobby.usd file illustrates that the team made extensive use of Layers to help add multiple other USD files that dealt with materials, lights, furniture and specialized details for the interior of the lobby. Given the layer organization and naming, multiple team members could quickly collaborate to add elements to a specific layer to update the project. They could also turn on or off specific elements within the assembly while working non-destructively.
In turn, each of these OpenUSD Layers contained multiple References to additional, individual USD assets needed as part of their USD composition. For example, the assets_Lobby_furniture.usd layer includes References to multiple free Omniverse furniture models that were positioned around the lobby interior.
Referencing a particular asset multiple times also empowers users with the ability to override some of the referenced properties of that asset so you can make each instance unique (e.g. - Materials). This sort of composition arc can be especially advantageous for assets like furniture and wall art that might require a more diverse set of looks on the same items while still saving on computing resources.
You are encouraged to open and inspect the various parts of the full composition as well as the various assembly and individual USD files to better understand how parts of the scene were organized. Keep in mind that the mindset that the team adopted was to break the project into logical, smaller pieces, and then leverage the power of OpenUSD to help organize and compose the files together into the final environment itself.
Even the folder structure of the project itself lends itself to understanding of this project’s organization.
The final composition is located within the root folder, while additional sub-folders contain the various elements.
Assembly: Contains the interior and exterior composition arcs discussed earlier.
Assets: This is where all of the individual USD assets (furniture, vegetation, etc.) used within the bigger composition were stored.
Materials: This folder housed all of the Material MDL files as well as baked textures for the USD Preview Surface display for the entire project.
Source: This is where the original converted Rhino, Revit and 3ds Max files were stored
USDZ: This dataset also includes a USDZ file that was created using the USDZ Exporter extension within Omniverse. This file contains a packaged version of the entire world_Lobby dataset.
What is important to note regarding a USDZ file like this is that since it is fully self-contained (all geometry and materials are embedded), it can be easily shared with internal or external partners without having to maintain all of the folders and dependencies between USDs. This type of packaging can be beneficial on bigger projects since it also allows for rapid integration into other composition arcs and simplifies some of the scene traversal as well as asset and folder management.
Why did the team choose to use USD Composition Arcs?
While it is possible to export all elements of a given scene and drop them into one USD file and save, structuring your working files into a more modular hierarchical OpenUSD composition makes the management and editing of the components far more predictable. Changing the parameters of one material or light that spans across an entire project propagated instantly and this became a focal point for the team. But the team could also add specific overrides to objects in the composition that might alter their position or material without removing the original information for review too. That non-destructive way of thinking helps preserve the “intent” of each contributor’s work.
The Residential Lobby dataset provides the following example composition arcs for consideration:
Including materials in a single USD file will make it easy to share across a project assembly. It also minimizes the risk of duplicate materials. Edit a material once and see the changes appear across the entire assembly file.
Lights can be organized in a single USD for universal editing. This also makes it easy to duplicate lighting schemes for various design options and also to adjust lighting for different daylight times.
As a quick aside, given that this project was managed inside of Omniverse, the team was able to take advantage of the RTX rendering to do accurate lighting and shading of the MDL surfaces directly within the stage and get the results needed. If you’re working with another render delegate (such as Storm) or inside another app like USDView, the lighting may appear very blown out if the renderer does not support UsdCamera’s exposure attribute, which we use to model the response of the camera to the physically plausible values authored for the lights’ emission. Also be aware that if your renderer does not support shadow transmission through glass, you may need to disable cast shadows on the facade glass objects to avoid the lobby being in complete shadow.
The Residential Lobby dataset offers a great learning opportunity for you to better get to grips with OpenUSD and the different advantages that each composition arc offers in an AECO project workflow.
While the workflow described above is simply one method of composing scenes within OpenUSD, in industries where design collaboration is most important, knowing how to leverage non-destructive workflows will grant superpowers to those who are willing to evolve their current pipelines.