#usda 1.0 ( customLayerData = { dictionary cameraSettings = { string boundCamera = "/CameraRoot/Camera" } dictionary renderSettings = { int "rtx:post:dlss:execMode" = 0 bool "rtx:translucency:enabled" = 0 } } defaultPrim = "World" endTimeCode = 36000 metersPerUnit = 0.01 startTimeCode = 0 timeCodesPerSecond = 60 upAxis = "Y" ) def Xform "World" { def OmniGraph "ActionGraph" { token evaluationMode = "Automatic" token evaluator:type = "execution" token fabricCacheBacking = "Shared" int2 fileFormatVersion = (1, 7) token pipelineStage = "pipelineStageSimulation" def OmniGraphNode "on_loaded" ( prepend apiSchemas = ["NodeGraphNodeAPI"] ) { token node:type = "omni.graph.action.OnLoaded" int node:typeVersion = 1 custom uint outputs:execOut ( customData = { bool isExecution = 1 } ) uniform token ui:nodegraph:node:expansionState = "minimized" uniform float2 ui:nodegraph:node:pos = (430, -120) } def OmniGraphNode "on_tick" ( prepend apiSchemas = ["NodeGraphNodeAPI"] ) { custom uint inputs:framePeriod = 0 custom bool inputs:onlyPlayback = 1 token node:type = "omni.graph.action.OnTick" int node:typeVersion = 1 custom double outputs:absoluteSimTime custom double outputs:deltaSeconds custom double outputs:frame custom bool outputs:isPlaying custom uint outputs:tick ( customData = { bool isExecution = 1 } ) custom double outputs:time custom double outputs:timeSinceStart custom double state:accumulatedSeconds = 0 custom uint state:frameCount = 0 uniform token ui:nodegraph:node:expansionState = "minimized" uniform float2 ui:nodegraph:node:pos = (490, 40) } def OmniGraphNode "read_xform" ( prepend apiSchemas = ["NodeGraphNodeAPI"] ) { custom rel inputs:prim = ( customData = { dictionary omni = { dictionary graph = { string relType = "target" } } } ) custom token inputs:primPath = "" custom bool inputs:usePath = 0 token node:type = "omni.graph.nodes.GetPrimLocalToWorldTransform" int node:typeVersion = 2 custom matrix4d outputs:localToWorldTransform uniform token ui:nodegraph:node:expansionState = "minimized" uniform float2 ui:nodegraph:node:pos = (500, -250) } def OmniGraphNode "read_collider" ( prepend apiSchemas = ["NodeGraphNodeAPI"] ) { custom int inputs:_debugStamp custom bool inputs:applySkelBinding = 0 custom string inputs:attrNamesToImport = "*" custom bool inputs:computeBoundingBox = 0 custom bool inputs:enableBundleChangeTracking = 1 custom bool inputs:enableChangeTracking custom string inputs:pathPattern = "" custom rel inputs:prims = ( customData = { dictionary omni = { dictionary graph = { string relType = "target" } } } ) custom string inputs:typePattern = "*" custom timecode inputs:usdTimecode = nan token node:type = "omni.graph.nodes.ReadPrimsV2" int node:typeVersion = 1 custom bool state:applySkelBinding = 0 custom string state:attrNamesToImport custom bool state:computeBoundingBox = 0 custom bool state:enableBundleChangeTracking custom bool state:enableChangeTracking custom uint64[] state:inputPrimPaths = [] custom string state:pathPattern custom uint64[] state:primPaths = [] custom string state:typePattern custom timecode state:usdTimecode = -1 uniform token ui:nodegraph:node:expansionState = "minimized" uniform float2 ui:nodegraph:node:pos = (800, 190) def Output "outputs_primsBundle" { } } def OmniGraphNode "grid_create" ( prepend apiSchemas = ["NodeGraphNodeAPI"] ) { custom int2 inputs:dims = (64, 64) custom uint inputs:execIn prepend uint inputs:execIn.connect = [ , , ] custom float2 inputs:size = (100, 100) custom matrix4d inputs:transform prepend matrix4d inputs:transform.connect = token node:type = "omni.warp.WarpGridCreate" int node:typeVersion = 1 custom uint outputs:execOut ( customData = { bool isExecution = 1 } ) uniform token ui:nodegraph:node:expansionState = "minimized" uniform float2 ui:nodegraph:node:pos = (810, -56) def Output "outputs_mesh" { } } def OmniGraphNode "cloth_simulate" ( prepend apiSchemas = ["NodeGraphNodeAPI"] ) { custom rel inputs:cloth prepend rel inputs:cloth = custom float inputs:clothDensity = 100 custom float inputs:clothEdgeBendingStiffness = 0.01 custom float inputs:clothEdgeDampingStiffness = 0 custom float inputs:clothTriAreaStiffness = 1000000 custom float inputs:clothTriDampingStiffness = 100 custom float inputs:clothTriElasticStiffness = 1000000 custom rel inputs:collider prepend rel inputs:collider = custom float inputs:colliderContactDistance = 5 custom float inputs:colliderContactQueryRange = 100 custom float inputs:contactDampingStiffness = 10000 custom float inputs:contactElasticStiffness = 500000 custom float inputs:contactFrictionCoeff = 0.75 custom float inputs:contactFrictionStiffness = 10000 custom bool inputs:enabled = 1 custom uint inputs:execIn prepend uint inputs:execIn.connect = custom float inputs:globalScale = 100 custom vector3f inputs:gravity = (0, -980, 0) custom float inputs:groundAltitude = 8 custom bool inputs:groundEnabled = 1 custom int inputs:substepCount = 32 custom double inputs:time = 0 prepend double inputs:time.connect = token node:type = "omni.warp.WarpClothSimulate" int node:typeVersion = 1 custom uint outputs:execOut ( customData = { bool isExecution = 1 } ) uniform token ui:nodegraph:node:expansionState = "minimized" uniform float2 ui:nodegraph:node:pos = (1117, 11) def Output "outputs_cloth" { } } def OmniGraphNode "bundle_inspect_changes" ( prepend apiSchemas = ["NodeGraphNodeAPI"] ) { custom rel inputs:bundle prepend rel inputs:bundle = custom uint inputs:execIn prepend uint inputs:execIn.connect = token node:type = "omni.warp.WarpOgnBundleInspectChanges" int node:typeVersion = 1 custom string outputs:attrsChanged custom uint outputs:execOut ( customData = { bool isExecution = 1 } ) custom bool outputs:topologyChanged uniform token ui:nodegraph:node:expansionState = "minimized" uniform float2 ui:nodegraph:node:pos = (1385, 25) def Output "outputs_bundle" { } } def OmniGraphNode "write_prims" ( prepend apiSchemas = ["NodeGraphNodeAPI"] ) { custom string inputs:attrNamesToExport = "*" prepend string inputs:attrNamesToExport.connect = custom uint inputs:execIn prepend uint inputs:execIn.connect = custom token inputs:layerIdentifier custom string inputs:pathPattern = "*" custom rel inputs:prims = ( customData = { dictionary omni = { dictionary graph = { string relType = "target" } } } ) custom rel inputs:primsBundle prepend rel inputs:primsBundle = custom bool inputs:scatterUnderTargets = 0 custom string inputs:typePattern = "*" custom bool inputs:usdWriteBack = 1 prepend bool inputs:usdWriteBack.connect = token node:type = "omni.graph.nodes.WritePrimsV2" int node:typeVersion = 1 custom uint outputs:execOut ( customData = { bool isExecution = 1 } ) custom string state:attrNamesToExport = "*" custom token state:layerIdentifier custom string state:pathPattern = "*" custom uint64 state:primBundleDirtyId custom uint64[] state:prims = [] custom bool state:scatterUnderTargets = 0 custom string state:typePattern = "*" custom bool state:usdWriteBack = 1 uniform token ui:nodegraph:node:expansionState = "minimized" uniform float2 ui:nodegraph:node:pos = (1670, 50) } } def Scope "Looks" { def "CeramicMaterial" ( prepend payload = @./assets/materials/ceramic_material.usda@ ) { over "CeramicMaterial" { over "Shader" { color3f inputs:diffuse_reflection_color = (0.75, 0.75, 0.75) ( customData = { float3 default = (0.2, 0.2, 0.2) } displayGroup = "Albedo" displayName = "Albedo Color" doc = "This is the albedo base color" hidden = false renderType = "color" ) } } } def "ClothMaterial" ( prepend payload = @./assets/materials/cloth_material.usda@ ) { over "ClothMaterial" { over "Shader" { color3f inputs:diffuse_reflection_color = (0.8, 0.35, 0.125) ( customData = { float3 default = (0.2, 0.2, 0.2) } displayGroup = "Albedo" displayName = "Albedo Color" doc = "This is the albedo base color" hidden = false renderType = "color" ) } } } } def Mesh "Cloth" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { rel material:binding = ( bindMaterialAs = "weakerThanDescendants" ) float3 xformOp:rotateXYZ = (0, 0, 0) float3 xformOp:scale = (1, 1, 1) double3 xformOp:translate = (0, 100, 0) uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"] } def "Collider" ( prepend payload = @./assets/geometries/bunny.usd@ ) { float3 xformOp:rotateXYZ = (0, 0, 0) float3 xformOp:scale = (1, 1, 1) double3 xformOp:translate = (0, 25, 0) uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"] over "Bunny" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { rel material:binding = ( bindMaterialAs = "weakerThanDescendants" ) } } } def Xform "Environment" { double3 xformOp:rotateXYZ = (0, 0, 0) double3 xformOp:scale = (1, 1, 1) double3 xformOp:translate = (0, 0, 0) uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"] def "Stage" ( prepend payload = @./assets/environments/stage.usda@ ) { } } def Xform "CameraRoot" { double3 xformOp:rotateXYZ = (-20, 10, 0) double3 xformOp:scale = (1, 1, 1) double3 xformOp:translate = (0, 30, 0) uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"] def Camera "Camera" { float2 clippingRange = (1, 10000000) float focalLength = 25 float focusDistance = 375 float fStop = 0 bool omni:kit:cameraLock = 0 double3 xformOp:rotateYXZ = (0, 0, 0) double3 xformOp:scale = (1, 1, 1) double3 xformOp:translate = (0, 0, 400) uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateYXZ", "xformOp:scale"] } }