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 | |
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:
/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)
/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)
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)
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 clarityVFX/Animation: Use
CHAR_
,PROP_
,ENV_
,VEH_
,MAT_
, etc. for classic asset typesIoT/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/
orapproved/
folder, or a postfix like_main
or_latest
if needed.
Use Case | Filename Example | Versioning Method |
---|---|---|
Referenced Asset |
| VCS/asset management |
Published/Approved |
| Tag, folder, or metadata |
Deliverable/Snapshot |
| 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
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
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
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.
Create a new project folder using the POC structure above.
Add a root layer (
01_Root.usda
) and a minimal asset (e.g.,GMESH_SampleAsset.usda
).Experiment with adding, referencing, and composing layers.
Iterate: Try breaking things, then fix and document what you learn.
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 snapshotsREADME.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.usdaFor 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
Naming Conventions Unified — Unified asset, layer, and folder conventions
OpenUSD Documentation: https://openusd.org/
Digital Twin/Industrial Best Practices: See industry extension sections in the unified guide
Community Resources
Official Documentation:
OpenUSD.org: Pixar's official USD documentation
docs.omniverse.nvidia.com: NVIDIA Omniverse guides
USD Survival Guide: Community-driven practical guide
Awesome USD: Matias Codesal
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
Download examples in
Omniverse Launcher → Library
Real-world case studies: BMW, Siemens, Zaha Hadid Architects