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"]
}
```