Skip to main content

OpenUSDLayer

Object

A durable, resolvable OpenUSD artifact. Root layers additionally carry the stage metadata - units, up axis, handedness, time-code rate - which is where USD stores it. Runtime stages and prims are deliberately not modelled; a binding resolves in a layer.

type OpenUSDLayer implements GraphNode {
assetIdentifier: String
connectedDataSourceId: String
contentHash: String
contentUrl: String
dateCreated: DateTime
dateUpdated: DateTime
description: String
exactType: String
glassMaterialPaths: [String]
glassMinimumOpacity: Float
handedness: String
id: String!
isReferencedByLayer(filter: OpenUSDLayerFilter): [OpenUSDLayer]
isReferencedByLayerEdges: [IsReferencedByLayerEdge]
kilogramsPerUnit: Float
mappingKey: String
metersPerUnit: Float
name: String
referencesLayer(filter: OpenUSDLayerFilter, transitive: Boolean = false): [OpenUSDLayer]
referencesLayerEdges: [ReferencesLayerEdge]
resolverContext: String
resolvesPrimBinding(filter: OpenUSDPrimBindingFilter): [OpenUSDPrimBinding]
resolvesPrimBindingEdges: [ResolvesPrimBindingEdge]
schemaProfile: String
timeCodesPerSecond: Float
type: [String]
upAxis: String
}

Implements​

Fields​

FieldTypeDescription
assetIdentifierStringThe USD asset path the author wrote. Identity, not a location - use contentUrl to fetch the bytes.
connectedDataSourceIdString
contentHashStringDigest of the layer's bytes, "sha256:<64 hex>". Verify downloads against it and key caches on it.
contentUrlStringA URL the caller can GET to receive exactly the bytes contentHash names. Opaque and possibly short-lived: do not parse it, persist it, or derive sibling URLs from it - composition dependencies are found through referencesLayer. Null when Mapped cannot serve the bytes; never an error. Nullable String so a signed URL can replace the pass-through later without a schema change.

The relationMapping is what pulls the asset identifier into the projection when the client did not select assetIdentifier - the fix #2949 made for Connector.contributions. parentField names the VERTEX property, not the GraphQL field: core reads it straight off the source map (RelationMappingConverter#getSourceFieldValue), which is why Thing.model maps deviceModelId and not a field Thing has. Hence openUSDAssetIdentifier.
dateCreatedDateTime
dateUpdatedDateTime
descriptionString
exactTypeString
glassMaterialPaths[String]Absolute Sdf paths of the materials this layer's author reviewed as glass. Paths, not names - a material name is not unique across scopes under composition.
glassMinimumOpacityFloatThe opacity floor a renderer applies to those materials, 0 to 1.
handednessStringRIGHT_HANDED or LEFT_HANDED.
idString!
isReferencedByLayer[OpenUSDLayer]The layers that reference this one.
Arguments: filter: OpenUSDLayerFilter
isReferencedByLayerEdges[IsReferencedByLayerEdge]
kilogramsPerUnitFloatStage metadata; present on layers that are opened as a stage root.
mappingKeyString
metersPerUnitFloatStage metadata; present on layers that are opened as a stage root.
nameString
referencesLayer[OpenUSDLayer]Composition dependencies - the layers this one references, as payloads or sublayers. One predicate covers sublayer, reference and payload arcs, because impact analysis, pinning and cache warming are all arc-kind agnostic.
Arguments: filter: OpenUSDLayerFilter, transitive: Boolean = false
referencesLayerEdges[ReferencesLayerEdge]
resolverContextStringThe asset-resolver context a stage must be opened under for this layer's asset paths to resolve.
resolvesPrimBinding[OpenUSDPrimBinding]The bindings that resolve in this layer.
Arguments: filter: OpenUSDPrimBindingFilter
resolvesPrimBindingEdges[ResolvesPrimBindingEdge]
schemaProfileStringThe load, population and variant policy a stage opened on this layer is expected to use.
timeCodesPerSecondFloatStage metadata; present on layers that are opened as a stage root.
type[String]
upAxisStringAuthored up axis, in USD's spelling - Y or Z.

Used by​