Asset Guide#
Practical recommendations for creating consistent USD digital twin assets at the equipment level for AI Factories - racks, CDUs, chillers, and building shells.
These recommendations target USD assets that are:
Valid USD
Structurally consistent and placeable in the 3D world
Portable across platforms
Performant for real-time applications
High visual quality
Enriched with product and ecosystem-specific metadata
Equipped with connection points for thermal, electrical, and airflow interfaces
Overview#
CAD conversion rarely produces a perfect USD representation. Content and structure issues are common. Three avenues exist to fix them:
Fix in source - Change the CAD/DCC content so it converts cleanly
Fix in the converter - Adjust the converter or connector settings
Fix in Scene Optimizer - Apply processors to optimize and transform the USD data post-conversion
Scene Optimizer processors can be tested interactively in USD Composer and saved as presets for automated pipelines. Refer to the VFI Guide Content Iteration Cycle for the data flow diagram.
Prerequisites#
AIF Content Guidance#
1. Source Content Guidance (DCC/CAD)#
Addressing these in the source files reduces rework downstream.
Keep asset orientation functional to drag and drop into the digital twin environment. For example, a rack should be standing up, not lying down.
Keep the world center at the base of the component where you would want the mounting point to occur when dragging and dropping a component into the stage. For example, rack world center should be treated as the floor level where you want the rack to contact when dragging and dropping it into the stage.
Sub geometry pivots should be placed in the center of the geometry bounding box or placed to support functional rotation transformations of sub geometry structures. For example, rotate a door around the door hinge point.
Keep hierarchies organized and plan for downstream use cases. For example, create a sub hierarchy for internal components so that the “internal” group can be identified and extracted into a separate USD payload downstream.
Tag geometry with breadcrumb data for downstream processing. For example, if an assembly contains both internal and external components, tag them so a downstream process can break these into separate payloads.
Keep hierarchy and naming consistent and descriptive. Material naming is especially important for running replacement material automation downstream.
Consistent units and orientation (bake into geometry on conversion if necessary):
Units: meters (metersPerUnit = 1.0)
Up Axis: +Z
Front/Forward: +X
If orientation and units need to differ in the source, unit changes can be baked in downstream using Scene Optimizer’s scene units processor. Orientation can be adjusted in the creation of the final component stage in USD.
2. Conversion#
Generally, instancing should be enabled. However, if you need to reorganize the hierarchy after conversion, disabling instancing simplifies this task. You can re-implement instancing using Scene Optimizer’s de-duplicate meshes processor and custom scripts.
Evaluate if you need UVs. Unused UVs are unnecessary data that bloats memory. OmniPBR uses tri-planar UV projections on the fly without the need for surface UVs.
Be careful with creating primVar data that will not be used, as this needlessly increases memory consumption. For example, do not create UVs in conversion if you are not going to use texture-mapped materials.
3. Validation#
Fix validation failures before continuing. Some have an automatic fixer in the Asset Validator framework, some can be fixed by applying a Scene Optimizer processor, and others are best addressed in the source data. Re-validate after applying fixes.
4. Enhancements and Changes#
Scene Optimizer presets can address common tasks such as the following:
Re-orient assets when the source orientation differs from the target
Set pivot locations for articulated parts
Separate internal structures into a dedicated payload
Set Kind on prims
Replace materials
Custom Python processors extend Scene Optimizer with arbitrary logic, so the range of possible transformations is not limited to built-in operations.
5. Aggregation#
If the data structure changes (for example, separation of internal and external data), aggregate the results into a single main component file with payloads:
Set Kind on the root prim
Combine internal and external components into a single main file
Add a data layer specifying the component version and type
Add component-specific metadata to the default prim
6. Final Validation#
Final component validation:
Material requirements (if changed at step 4)
Atomic asset requirements (portability/encapsulation)
Units requirements (if changed at step 4 or 5)
Custom Validation Rules - Refer to Validators for usage, writing custom rules, and the full list of AIF validation rules.
See also
CAD to USD - Step-by-step conversion workflow
Scene Optimizer Presets - Optimization presets reference
Validators - Full list of validation rules
Connection Points - Define connection points on assets