I just converted a .usd in to .usda file : ![[usdLayerMasterEnvironment.usda]] # Reading ASCII Analysed with comment ```ascii #usda 1.0 // USD File Format Header - declares this as a USDA (ASCII) file, version 1.0 // STAGE METADATA - Global settings that apply to the entire scene ( endTimeCode = 1012 // Animation ends at frame 1012 framesPerSecond = 24 // Playback rate: 24 frames per second (film standard) metersPerUnit = 1 // 1 unit in the scene = 1 meter in real world startTimeCode = 1012 // Animation starts at frame 1012 (single frame scene) timeCodesPerSecond = 24 // Time sampling rate: 24 time codes per second upAxis = "Y" // Y-axis points up (Maya/Houdini convention, not Z-up like Blender) ) // PRIMARY ASSET DEFINITION - The "master" tree cluster with variant 0A def "VRT_clus_forestTrees01_lookdev_v0008_0A" ( // Prim name following OSMIUM naming convention instanceable = true // PERFORMANCE: Allows USD to optimize memory usage through instancing prepend payload = @../Assets/Cluster/VRT_clus_forestTrees01/Export/usdLookdev/v0009/VRT_clus_forestTrees01_lookdev_v0008.usd@</VRT_clus_forestTrees01> // PAYLOAD: Lazy-loads heavy geometry data from external file // "prepend" means this loads with high priority in composition // Path: ../Assets/... = relative file path to the actual tree geometry // @file.usd@</PrimPath> = USD syntax for external file reference variants = { string geo = "0A" // VARIANT SELECTION: Chooses geometry variant "0A" from the payload file } ) { // Empty block - this prim gets all its content from the payload } // FIRST INSTANCE - References the master prim and applies transforms def "VRT_clus_forestTrees01_lookdev_v0008_0A_1" ( instanceable = true // Memory optimization through instancing append references = </VRT_clus_forestTrees01_lookdev_v0008_0A> // REFERENCE: Creates a live link to the prim defined above // "append" means lower priority than the referenced prim's content // </path> = USD syntax for internal prim reference (not external file) ) { // TRANSFORM OPERATIONS - Define position, rotation, scale of this instance matrix4d xformOp:transform:duplicate1 = ( (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1) ) // Identity matrix - no transformation (probably a placeholder from duplication) matrix4d xformOp:transform:transform3 = ( (-0.22226692398867548, 0, 0.97498585348743, 0), (0, 1, 0, 0), (-0.97498585348743, 0, -0.22226692398867548, 0), (1.1555047035217285, 0.023709774017333984, 0.13247078657150269, 1) ) // 4x4 transformation matrix containing: // - Rotation (first 3x3 submatrix): rotated around Y-axis // - Translation (last column): moved to position (1.155, 0.024, 0.132) // - No scaling (determinant ≈ 1) uniform token[] xformOpOrder = ["xformOp:transform:duplicate1", "xformOp:transform:transform3"] // TRANSFORM ORDER: Specifies the order to apply transformations // "uniform" = value doesn't change over time // First applies duplicate1, then transform3 (matrix multiplication order matters!) } // SECOND INSTANCE - Another copy with different positioning def "VRT_clus_forestTrees01_lookdev_v0008_0A_2" ( instanceable = true append references = </VRT_clus_forestTrees01_lookdev_v0008_0A> // References same master prim ) { matrix4d xformOp:transform:duplicate1 = ( (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1) ) // Identity matrix again matrix4d xformOp:transform:transform4 = ( (-0.7238484263902496, 0, 0.6899590245894023, 0), (0, 1, 0, 0), (-0.6899590245894023, 0, -0.7238484263902496, 0), (0.7211060523986816, 0.023709774017333984, 2.0379838347434998, 1) ) // Different transformation: rotated and positioned at (0.721, 0.024, 2.038) uniform token[] xformOpOrder = ["xformOp:transform:duplicate1", "xformOp:transform:transform4"] } // ADDITIONAL VARIANT DEFINITIONS - Different tree types from same source file def "VRT_clus_forestTrees01_lookdev_v0008_0B" ( instanceable = true prepend payload = @../Assets/Cluster/VRT_clus_forestTrees01/Export/usdLookdev/v0009/VRT_clus_forestTrees01_lookdev_v0008.usd@</VRT_clus_forestTrees01> variants = { string geo = "0B" // Different variant - probably different tree species/shape } ) { } def "VRT_clus_forestTrees01_lookdev_v0008_0C" ( instanceable = true prepend payload = @../Assets/Cluster/VRT_clus_forestTrees01/Export/usdLookdev/v0009/VRT_clus_forestTrees01_lookdev_v0008.usd@</VRT_clus_forestTrees01> variants = { string geo = "0C" // Another tree variant } ) { } def "VRT_clus_forestTrees01_lookdev_v0008" ( instanceable = true prepend payload = @../Assets/Cluster/VRT_clus_forestTrees01/Export/usdLookdev/v0009/VRT_clus_forestTrees01_lookdev_v0008.usd@</VRT_clus_forestTrees01> variants = { string geo = "0D" // Tree variant 0D } ) { } def "VRT_clus_forestTrees01_lookdev_v0008_0E" ( instanceable = true prepend payload = @../Assets/Cluster/VRT_clus_forestTrees01/Export/usdLookdev/v0009/VRT_clus_forestTrees01_lookdev_v0008.usd@</VRT_clus_forestTrees01> variants = { string geo = "0E" // Tree variant 0E } ) { matrix4d xformOp:transform:transform9 = ( (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, -3.4186371564865112, 1) ) // Simple translation: moved -3.418 units along Z-axis (backward) uniform token[] xformOpOrder = ["xformOp:transform:transform9"] } def "VRT_clus_forestTrees01_lookdev_v0008_0F" ( instanceable = true prepend payload = @../Assets/Cluster/VRT_clus_forestTrees01/Export/usdLookdev/v0009/VRT_clus_forestTrees01_lookdev_v0008.usd@</VRT_clus_forestTrees01> variants = { string geo = "0G" // Note: Prim name says "0F" but variant is "0G" - possible naming inconsistency } ) { matrix4d xformOp:transform:transform8 = ( (0.740482808971588, 0, 0.6720753005560811, 0), (0, 1, 0, 0), (-0.6720753005560811, 0, 0.740482808971588, 0), (10.504186, 0.023709774017333984, -2.1609978675842285, 1) ) // Rotation and translation: positioned at (10.504, 0.024, -2.161) with Y-axis rotation uniform token[] xformOpOrder = ["xformOp:transform:transform8"] } ```