Skip to main content
Skip table of contents

USD Project Structure and File Organization Best Practices

Imagine inheriting a 5TB USD project with 10,000+ files scattered across dozens of folders named things like final_FINAL_v2_fixed.usda and layer_backup_copy_copy_WORKING.usda.

  • 3 hours to find the right material library

  • 2 days debugging broken variants

  • 1 week untangling circular references

  • Missed deadlines because no one knows the "source of truth"

This tutorial prevents that nightmare.

In modern 3D pipelines, a solid project structure is the foundation for scalability, collaboration, and maintainability. This tutorial shows you how to start simple, learn by doing, and scale up using proven USD naming and organization conventions—without getting stuck chasing perfection. Use your POC's and MVP as a learning path, adapt as you go, and involve your team for long-term success.

Table of Contents

GOAL

Establish robust USD project architectures with clear naming conventions, logical layer hierarchies, and scalable folder structures that prevent composition conflicts and enable collaborative workflows.

NOTES

Item

Details

Prerequisites

Basic familiarity with USD concepts and file formats

Time Investment

30–60 minutes for POC, more for scaling

Special Sources

Naming Conventions Unified

Warning

Don't over-engineer your first attempt—iterate and improve

Learning Objectives

things you will know

  • Build a minimal USD project structure for rapid prototyping
  • Understand the value of iteration and reflection in pipeline design
  • Apply best practices for scaling and stakeholder involvement
  • Reference and implement unified naming conventions for advanced use
  • Set up project templates that enforce organizational standards
  • Organize materials, variants, and overrides for efficient iteration
  • Structure layer references for maintainable asset pipelines
  •  

INTRO

Level

Level 2 – Intermediate

Target Audience

Pipeline engineers, technical artists, digital twin developers

Sources

OpenUSD docs, industry best practices, unified conventions guide

Tutorial Status

Production-Ready

Version

3.0

Tested With

KIT 107.3, USD 24.05

Difficulty

Level 2 - Intermediate

Quick-Start

Don't let perfect be the enemy of good enough!

Start with a minimal structure, learn by doing, and iterate as you go.

Minimal POC Structure:

CODE
/POC_Project/
├── Root_.usda
├── Assets/
│   ├── GMESH_SampleAsset.usda
│   └── MLIBS_SampleMaterial.usda
├── Layers/
│   └── YREFS_EquipmentReference.usda
└── README.md

  • Use this as a sandbox to test, break, and improve your USD project structure.

  • Document what works, what doesn't, and adapt as you scale.

  • Use layers when needed, do not overcomplicate things and avoid layers when they are not needed!

Quick Deep Dive

Understanding the Why Behind USD Project Structure

A well-structured USD project isn’t just about neat folders—it’s about leveraging USD’s composition engine for scalable, collaborative, and error-resistant workflows. Here’s what you need to know:

1. USD’s Layered Composition Model

USD scenes are built from layers, each with a specific role:

  • Root Layer: The entry point for your stage (e.g., 01_Root.usda).

  • Asset Layers: Contain geometry, materials, and reusable components.

  • Reference Layers: Bring together assets and define relationships.

  • Override/Adjustment Layers: Apply non-destructive changes or variants.

Key Principle:

Lower-numbered layers (e.g., 10_Base_Project.usda) have higher override strength. This mirrors the LIVRPS model—Local, Inherits, Variant, Reference, Payload, Specializes.

2. Naming and Numbering: Not Just for Looks

  • Prefixing (e.g., GMESH_, MLIBS_, YREFS_) instantly communicates file purpose.

  • Numbering (e.g., 10_, 20_, 30_) encodes composition order and override strength.

  • Y-Prefix (e.g., YREFS_Assets.usda) signals a composition layer, making debugging and automation easier.

3. Folder Structure Mirrors Workflow

  • /Assets/ for geometry, materials, and reusable components.

  • /Layers/ for composition and adjustment layers.

  • /Textures/, /Scripts/, /Archive/ for supporting resources and versioning.

Why?

This separation allows teams to work in parallel, supports automation, and makes onboarding new team members much faster.

4. Collaboration and Automation

  • Nucleus Sync: Stable paths and modular layers prevent sync conflicts.

  • Version Control: Modular files and clear naming make merges and rollbacks safer.

  • Automation: Consistent structure enables scripting for validation, publishing, and asset management.

5. Common Pitfalls (and How to Avoid Them)

  • Broken References: Avoid renaming files after referencing; use stable names.

  • Composition Conflicts: Use layer numbering and Y-prefixed layers to control override order.

  • Over-Engineering: Start simple, iterate, and only add complexity as needed.

Bottom Line:

A thoughtful USD project structure is your best defense against chaos as your project and team grow. It’s the foundation for scalable, maintainable, and collaborative 3D pipelines.

General Overview

A well-structured USD project is the backbone of any scalable 3D pipeline. This tutorial introduces practical strategies for structuring USD projects, from quick POC to production-ready pipelines. Start simple, iterate, and scale up using proven conventions. For advanced/production-ready structure and naming, see:

Naming Conventions Unified Guide

Overview

This guide unifies the most robust naming and organization systems for USD projects, blending:

  • 5-digit asset type prefixes (automation-ready, human/machine readable)

  • Pixar/OpenUSD and department/numbered conventions (industry alignment)

  • Digital twin/industrial/IoT patterns (specialized for manufacturing, compliance, and smart facilities)

Use this as a modular reference:

  • Core system for general pipelines

  • Industry/discipline extensions for specialized domains

  • Studio/department patterns for large teams

1. Core Asset Prefix System (5-Digit, Modular)

Asset Type Prefixes

Prefix

Category

Example Usage

GMESH

Geometry Mesh

GMESH_ConveyorBelt_001.usda

MLIBS

Material Library

MLIBS_IndustrialMaterials_v2.usda

THDRI

HDRI Texture

THDRI_FactoryLighting_8K.exr

ARIGS

Animation Rigs

ARIGS_RoboticArm_6DOF.usda

YROOT

Root Layer

YROOT_FactoryMaster.usda

BCOMP

Assembly Comp.

BCOMP_AssemblyStation_A.usda

DPROPS

Data Properties

DPROPS_ManufacturingSchema.usda

VSETS

Variant Sets

VSETS_ProductVariants_2024.usda

GSPLT

Gaussian Splats

GSPLT_SceneCapture_3DGRUT_v1.usda

  • Rationale:

    • Human/machine readable

    • Consistent, extensible

    • Supports automation and search


2. Layer Naming Conventions (All Styles)

A. 5-Digit Role-Based (Y-prefix)

Prefix

Purpose

Example

Notes

YREFS

Reference Layer

YREFS_EquipmentReference.usda

YPAYL

Payload Layer

YPAYL_HeavyMachinery_Payload.usda

….maybe

YVARI

Variant Layer

YVARI_DesignOptions_Variants.usda

YOVRD

Override Layer

YOVRD_SessionOverrides.usda

MaterialAdjust Layer

p.s. The Root is a 'Layer', but at the base, therefore we should give it a name like:

ROOT

Root Layer

ROOT_FactoryMaster.usda

  • Best for: Automation, large-scale projects, clear role separation

Why 'Y' for Layers?

The prefix 'Y' is used for layers to avoid conflicts and confusion with other asset categories—especially lighting, which traditionally uses the 'L' prefix. In many pipelines, 'L' is already reserved for lighting assets (e.g., LRIGS, LAREA), and using it for both would create ambiguity in file naming, automation, and search.

The choice of 'Y' is intentional:

  • It is visually and phonetically distinct from other prefixes, minimizing the risk of overlap or misclassification.

  • 'Y' can be associated with 'hierarchY' or 'laYer', making it mnemonic and easy to remember for both humans and automated tools.

  • It is rarely used as a prefix in other asset categories, ensuring clarity and uniqueness in large, complex projects.

This approach supports best practices for scalable, maintainable USD scene graphs and robust pipeline automation.

B. Pixar/OpenUSD Prefixes

Prefix

Purpose

Example

attr_

Attribute-specific

attr_visibility.usda

base_

Foundation/base layers

base_geometry.usda

payload_

Payload layers

payload_heavy_geo.usda

ref_

Reference layers

ref_character_rig.usda

v_

Variant/version layers

v_lod_high.usda

meta_

Metadata

meta_project_info.usda

sub_

Sublayers

sub_lighting_setup.usda

clip.

Animation clips

clip.walk_cycle.usda

  • Best for: Industry alignment, onboarding, cross-studio work

C. Digital Twin/Industrial Prefixes

Prefix

Purpose

Example

dt_

Digital Twin definition

dt_factory_layout.usda

iot_

IoT sensor integration

iot_temperature_sensors.usda

sim_

Simulation scenarios

sim_stress_test.usda

cad_

CAD geometry import

cad_assembly_v01.usda

proc_

Process workflows

proc_assembly_line.usda

maint_

Maintenance procedures

maint_schedule_q1.usda

config_

Configuration variants

config_production_setup.usda

test_

Testing scenarios

test_quality_control.usda

safety_

Safety protocols

safety_emergency_stop.usda

perf_

Performance metrics

perf_throughput_analysis.usda

  • Best for: Digital twins, manufacturing, IoT, compliance

Guidance:

  • Use the system that best fits your pipeline and team. For mixed environments, prefix with both (e.g., YREFS_iot_temperature_sensors.usda).

3. Folder/Project Structure Patterns

A. Asset-Type Driven (Modern, Automation-Ready)

CODE
/Assets/
├── Geometry/GMESH_*.usda
├── Materials/MLIBS_*.usda
├── Textures/THDRI_*.exr
├── Animation/ARIGS_*.usda
├── Assembly/BCOMP_*.usda
├── Data/DPROPS_*.usda
├── Industry/GSPLT_*.usda

--------------------------------- or even ----------------------------
/Assets/
├── GMESH_*.usda
├── MLIBS_*.usda
├── THDRI_*.exr
├── ARIGS_*.usda
├── BCOMP_*.usda
├── DPROPS_*.usda
├── GSPLT_*.usda

  • Best for: Automated pipelines, large teams, searchability

B. Department/Numbered/Classic (Pixar/Studio)

CODE
ProjectName/
├── 01_Root.usda
├── Assets/Characters/Hero_Model.usda
├── Layers/Base/10_Geometry.usda
├── Layers/Departments/Animation/
├── Libraries/Materials/03_MatLib.usda
├── Sequences/Seq010/Shot010/
├── Tools/
└── Documentation/

  • Best for: Cross-departmental, VFX/animation, onboarding

C. Facility/Plant/Smart Building (Industrial)

CODE
ManufacturingFacility/
├── 00_DigitalTwin_Root.usda
├── Systems/Production/ProductionLine_A/ASSET_Robot_Welder_V01.usda
├── Assets/Machinery/ROBOT_ABB_IRB6700_V01.usda
├── Processes/Assembly/PROC_Assembly_Main_V01.usda
├── Simulations/Performance/
├── Data/Sensors/IOT_Temperature_Grid_V01.usda
└── Documentation/Specifications/

  • Best for: Digital twins, smart buildings, compliance

4. Industry/Discipline Extensions

  • Digital Twin/Industrial: Use DT_, PROC_, ASSET_, SIM_, MAINT_, etc. for discipline-specific clarity

  • VFX/Animation: Use CHAR_, PROP_, ENV_, VEH_, MAT_, etc. for classic asset types

  • IoT/Smart Building: Use IOT_, SYS_, CTRL_, FLOOR_, etc. for sensors and systems

5. Best Practices & Automation

  • Versioning:

    • For referenced assets, use stable filenames (e.g., Asset.usda).

    • Track changes and major updates using your version control system and asset management tools, not by renaming files.

    • Only use versioned filenames (e.g., Asset_v03.usda) for deliverables, snapshots, or archival purposes—not for day-to-day pipeline references.

    • Major updates should be documented in commit comments, changelogs, or asset management metadata.

    • For published/approved assets, use a publish/ or approved/ folder, or a postfix like _main or _latest if needed.

Use Case

Filename Example

Versioning Method

Referenced Asset

Asset.usda

VCS/asset management

Published/Approved

publish/Asset.usda

Tag, folder, or metadata

Deliverable/Snapshot

Asset_v03.usda

Filename version

  • Automation: Use prefix parsing in pipeline tools for routing and validation

  • Documentation: Maintain README/quick reference in each major folder

  • Team Adoption: Train, audit, and update conventions regularly

Versioning Best Practice: For all referenced assets, use stable filenames (e.g., Asset.usda). Track changes and major updates using your version control system and asset management tools, not by renaming files. Only use versioned filenames (e.g., Asset_v03.usda) for deliverables, snapshots, or archival purposes—not for day-to-day pipeline references. This ensures reference stability, reduces breakage, and aligns with industry best practices.

6. Quick Reference Tables

A. Asset Prefixes (Unified)

Prefix

Category

Example

GMESH

Geometry Mesh

GMESH_ConveyorBelt_001.usda

MLIBS

Material Library

MLIBS_IndustrialMaterials_v2.usda

...

...

...

B. Layer Prefixes (All Styles)

Prefix

Purpose

Example

YREFS

Reference Layer

YREFS_EquipmentReference.usda

base_

Base Layer

base_geometry.usda

dt_

Digital Twin

dt_factory_layout.usda

...

...

...

C. Folder Patterns

Pattern

Best For

Asset-Type

Automation, search

Department

Studio, onboarding

Facility/Plant

Industrial, compliance


Choose the system(s) that best fit your project, and document your choices for team clarity and future onboarding.

Overview

This guide unifies the most robust naming and organization systems for USD projects, blending:

  • 5-digit asset type prefixes (automation-ready, human/machine readable)

  • Pixar/OpenUSD and department/numbered conventions (industry alignment)

  • Digital twin/industrial/IoT patterns (specialized for manufacturing, compliance, and smart facilities)

Use this as a modular reference:

  • Core system for general pipelines

  • Industry/discipline extensions for specialized domains

  • Studio/department patterns for large teams

Core Principles for USD Project Structure

  • Composition-Aware Structure:

    Organize folders and files to reflect USD's layered composition system.

    Example: Place foundational assets in /Assets/, and use /Layers/ for Y-prefixed composition layers (e.g., YREFS_Assets.usda).

  • LIVRPS-Informed Numbering:

    Use layer numbering (e.g., 10_Base_Project.usda, 20_Materials.usda) to mirror override strength and composition order.

  • Collaboration-First Design:

    Structure for Nucleus sync, version control, and parallel team workflows.

    Example: Use stable asset names and folders for shared resources.


A More Detailed Understanding

  • Explore the unified naming conventions for asset types, layers, and folders.

  • Learn how to adapt the structure to your team's needs, whether VFX, digital twins, or industrial applications.

  • Use the modular approach: start with the POC, then layer on best practices as your project grows.

  • Understand the rationale behind each convention and how it supports automation, collaboration, and maintainability.

Layer Numbering Best Practice

Use numbers to indicate layer strength and override order, following LIVRPS principles:

  • 10_Base_Project.usda (strongest, local opinions)

  • 20_Materials.usda (material definitions)

  • 25_MatAdjustment.usda (overrides)

  • 30_VarAdjustment.usda (variants)

This makes the composition stack predictable and maintainable. </aside>

Why Numbering Matters:

Layer numbering is not just for organization—it's a direct reflection of USD's composition engine. Lower numbers (e.g., 10, 20) are stronger and override higher numbers (e.g., 30, 40). This prevents accidental overrides, circular references, and makes debugging much easier in large projects.

Getting Started

Example Project Structures

Production-Scale

CODE
USD_Project/
├── 01_Root.usda
├── Assets/
│   ├── GMESH_MainProduct.usda
│   └── MLIBS_Materials.usda
├── Layers/
│   ├── YREFS_Assets.usda
│   ├── YPAYL_HeavyAssets.usda
│   └── YVARI_Options.usda
├── Textures/
├── Scripts/
└── Archive/

Use for large teams, production, and automation. Scales well and supports clear separation of concerns.

Minimal POC

CODE
POC_Project/
├── 01_Root.usda
├── Assets/GMESH_SampleAsset.usda
├── Layers/YROOT_POC.usda
└── README.md

Best for rapid prototyping, learning, and experimentation. Expand as you grow.

Industrial Digital Twin

CODE
Factory_DigitalTwin/
├── 00_DigitalTwin_Root.usda
├── Systems/Production/GMESH_Robot_ABB.usda
├── Processes/PROC_Assembly_Main.usda
├── Simulations/SIM_StressTest.usda
└── Data/IOT_TemperatureGrid.usda

Ideal for manufacturing, IoT, and compliance-heavy projects. Supports discipline-specific extensions.

  1. Create a new project folder using the POC structure above.

  2. Add a root layer (01_Root.usda) and a minimal asset (e.g., GMESH_SampleAsset.usda).

  3. Experiment with adding, referencing, and composing layers.

  4. Iterate: Try breaking things, then fix and document what you learn.

  5. Expand: As your needs grow, reference the unified conventions to add more structure and automation.

Asset Organization Strategy

  • Asset Libraries: Store reusable assets in /Assets/ with clear, stable names (e.g., GMESH_MainProduct.usda).

  • Variants: Use dedicated variant layers (e.g., YVARI_Options.usda) and folders for product options, configurations, or states.

  • Overrides: Place overrides in their own layers (e.g., 25_MatAdjustment.usda) to keep changes modular and non-destructive.

  • Material Libraries: Centralize materials in /Assets/MLIBS_Materials.usda or /Materials/ for easy reuse and updates.

  • Documentation: Include a README.md in each major folder to explain structure and conventions.

Collaborative Workflows

  • Nucleus Sync: Organize for Omniverse Nucleus or similar cloud sync. Use stable, predictable paths and avoid renaming referenced files.

  • Version Control: Use Git, Perforce, or similar systems. Track changes via commit messages and tags, not by renaming files.

  • Parallel Development: Structure so multiple teams can work on different layers/assets without conflicts. Use modular layers and asset libraries.

  • Asset Management: Integrate with asset management tools for tracking, approvals, and publishing.

Project Templates

USD Project Template Checklist:

  • /01_Root.usda as the stage entry point
  • /Assets/ for reusable components (geometry, materials, variants)
  • /Layers/ for composition layers (Y-prefixed, numbered)
  • /Textures/ for all texture resources
  • /Scripts/ for automation tools
  • /Archive/ for version history and snapshots
  • README.md in each major folder
  • Use stable filenames for all referenced assets
  • Document all naming conventions and structure choices

Industry Adaptation

  • Use discipline-specific prefixes for industrial/digital twin projects:

    Prefix Purpose Example:
    DT_ Digital Twin | DT_Factory_Layout.usda
    IOT_ IoT Sensor Data | IOT_TemperatureGrid.usda
    SIM_ Simulation | SIM_StressTest.usda
    PROC_ Process Workflow | PROC_Assembly_Main.usda

  • For more, see 02.4_Naming_Conventions_Unified.md

  • Digital Twins/Industrial: Use discipline-specific prefixes and folder patterns (see unified guide)

  • VFX/Animation: Use classic asset types and department folders

  • IoT/Smart Building: Integrate sensor and system naming conventions

  • Hybrid Teams: Combine or prefix as needed (e.g., YREFS_iot_temperature_sensors.usda)

Best Practices

  • Iterate, don't over-engineer: Your first structure is a learning tool, not the final product.

  • Reflect and document: After each iteration, note what worked and what didn't.

  • Involve stakeholders: The best structure is one your whole team can use and maintain.

  • Leverage automation: Use naming conventions and folder patterns that support scripting and search.

  • Scale intentionally: As your project grows, adopt more of the unified conventions for clarity and maintainability.

Validation Tools & Extensions

  • USD Structure Validation:

    • Use usdchecker (command-line) to validate composition and structure: usdchecker --composition ./01_Root.usda

    • Use usdview for quick load and structure checks: usdview --no-render ./01_Root.usda

    • For Omniverse users, explore available extensions or apps for project structure validation (e.g., Nucleus browser, Omniverse extensions for consistency checking).

    • Consider integrating validation scripts into your CI/CD pipeline for automated checks.

How to Know You Succeeded

  • You can find any asset or material in seconds, not hours.

  • Adding a new variant or override doesn't break the project.

  • Team members can onboard quickly and contribute with confidence.

  • Your structure scales from POC to production without chaos.

  • Success Metrics:

    • Find any asset in <10 seconds

    • No broken references after a week of team edits

    • New team members can contribute within their first day

FAQ

Q: How should I start structuring a new USD project?

A: Begin with a minimal, clear folder structure (Root, Assets, Layers, README). Start simple, iterate as you learn, and expand as your needs grow. Use the POC structure as a sandbox for experimentation.

Q: What are the most important naming conventions for USD projects?

A: Use clear, stable, and consistent names for all assets and layers. Prefix files by type (e.g., GMESH_, MLIBS_, YREFS_) and use numbers to indicate composition order and override strength (e.g., 10_Base_Project.usda, 20_Materials.usda).

Q: How do I avoid broken references and composition conflicts?

A: Always use stable filenames and folder paths for referenced assets. Avoid renaming files after they are referenced. Use layer numbering and Y-prefixed layers to make the composition stack predictable.

Q: How do I organize for team collaboration and version control?

A: Structure your project for Nucleus sync or version control (Git, Perforce). Use modular layers and asset libraries so multiple teams can work in parallel. Track changes via commit messages, not by renaming files.

Q: What tools can help validate my USD project structure?

A: Use usdchecker (CLI), usdview, and Omniverse Composer for structure and reference validation. Integrate validation scripts into your CI/CD pipeline for automated checks.

Q: How do I scale my project from POC to production?

A: Start with a minimal structure, document what works, and gradually adopt more unified conventions as your project grows. Involve stakeholders and reflect after each iteration.

Q: Where can I find more examples or templates?

A: See the “Related Resources” section at the end of this tutorial for links to official documentation, community guides, and real-world case studies.

Notes & References

Community Resources

Official Documentation:

Community Support:

  • NVIDIA Developer Forums: Technical questions and troubleshooting

  • USD Interest Group: Industry working group for standards

  • Discord Communities: Real-time chat with practitioners

Training Programs:

  • NVIDIA DLI: Deep Learning Institute USD courses

  • SIGGRAPH Sessions: Annual conference presentations

  • Vendor Training: Maya, Houdini, Blender USD-specific training

When USD+Omniverse is Right for You

Strong Fit Indicators:

  • ✅ Multi-tool workflows with conversion pain

  • ✅ Team collaboration challenges

  • ✅ XR/digital twin requirements

  • ✅ Performance needs at scale

  • ✅ Future-proofing against vendor lock-in

Consider Alternatives When:

  • ❌ Single-tool, single-user workflows

  • ❌ Simple file sharing needs

  • ❌ Legacy system integration constraints

  • ❌ Limited technical resources for learning curve

Series Navigation

Previous: Benefits of USD and how it integrates into Omniverse and Nucleus server

Next: Benefits of USD and how it integrates into Omniverse and Nucleus server

Series Index: Authoring and optimizing USD workflows for industrial use with Omniverse

Related Resources

Reference Guides

🔗 External Documentation

Project Examples

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.