Canonical USD example for MuJoCo Physics. This contains three items:
floor - a static floor centered at origin of sides 100m x 100m two_cubes - a standard example where 2 cubes have a hinge joint between them. two_cubes_scene - a scene made up of the floor at (0, 0, 0) and two_cubes at (0, 0, 30). PiperOrigin-RevId: 607809323 Change-Id: I9931d89441653ce7aaf5145ee42c71c0c8f9ffcb
This commit is contained in:
committed by
Copybara-Service
parent
1b93226fb0
commit
dbf7afaeaa
Vendored
+19
@@ -0,0 +1,19 @@
|
||||
#usda 1.0
|
||||
(
|
||||
defaultPrim = "root"
|
||||
upAxis = "Z"
|
||||
)
|
||||
|
||||
def Xform "root" () {
|
||||
def "floor_geo" (
|
||||
prepend references = [@./Floor_geo.usda@]
|
||||
)
|
||||
{
|
||||
|
||||
}
|
||||
def "floor_collision" (
|
||||
prepend references = [@./Floor_physics.usda@]
|
||||
)
|
||||
{
|
||||
}
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
#usda 1.0
|
||||
(
|
||||
defaultPrim = "root"
|
||||
metersPerUnit = 1.0
|
||||
upAxis = "Z"
|
||||
)
|
||||
|
||||
def Cube "root" ()
|
||||
{
|
||||
color3f[] primvars:displayColor = [(0.5, 0.5, 0.5)]
|
||||
double size = 100
|
||||
quatf xformOp:orient = (1, 0, 0, 0)
|
||||
float3 xformOp:scale = (1, 1, 0.01)
|
||||
double3 xformOp:translate = (0, 0, -0.5)
|
||||
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
#usda 1.0
|
||||
(
|
||||
defaultPrim = "root"
|
||||
metersPerUnit = 1.0
|
||||
upAxis = "Z"
|
||||
)
|
||||
|
||||
def Cube "root" (
|
||||
prepend apiSchemas = ["PhysicsCollisionAPI"]
|
||||
)
|
||||
{
|
||||
double size = 100
|
||||
bool physics:collisionEnabled = 1
|
||||
double size = 1.0
|
||||
quatf xformOp:orient = (1, 0, 0, 0)
|
||||
float3 xformOp:scale = (1, 1, 0.01)
|
||||
double3 xformOp:translate = (0, 0, -0.5)
|
||||
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
|
||||
token visibility = "invisible"
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
#usda 1.0
|
||||
(
|
||||
defaultPrim = "root"
|
||||
upAxis = "Z"
|
||||
)
|
||||
|
||||
def Xform "root"(
|
||||
assetInfo = {
|
||||
asset identifier = @./FirstCube.usda@
|
||||
string name = "FirstCube"
|
||||
}
|
||||
kind = "component"
|
||||
prepend apiSchemas = ["PhysicsRigidBodyAPI"]
|
||||
)
|
||||
{
|
||||
def "FirstCube_geometry" (
|
||||
prepend references = [@./FirstCube_geo.usda@]
|
||||
)
|
||||
{
|
||||
}
|
||||
def "FirstCube_collision" (
|
||||
prepend references = [@./FirstCube_physics.usda@]
|
||||
)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
#usda 1.0
|
||||
(
|
||||
defaultPrim = "root"
|
||||
metersPerUnit = 1.0
|
||||
upAxis = "Z"
|
||||
)
|
||||
|
||||
def Cube "root" ()
|
||||
{
|
||||
color3f[] primvars:displayColor = [(1.0, 0, 0)]
|
||||
double size = 1.0
|
||||
quatf xformOp:orient = (1, 0, 0, 0)
|
||||
float3 xformOp:scale = (1.0, 1.0, 1.0)
|
||||
double3 xformOp:translate = (0, 0, 0)
|
||||
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
#usda 1.0
|
||||
(
|
||||
defaultPrim = "root"
|
||||
metersPerUnit = 1.0
|
||||
upAxis = "Z"
|
||||
kilogramsPerUnit = 1.0
|
||||
)
|
||||
|
||||
def Cube "root" (
|
||||
prepend apiSchemas = ["PhysicsCollisionAPI", "PhysicsMassAPI"]
|
||||
)
|
||||
{
|
||||
color3f[] primvars:displayColor = [(1.0, 1.0, 0)]
|
||||
float physics:mass = 1
|
||||
bool physics:collisionEnabled = 1
|
||||
double size = 1.0
|
||||
quatf xformOp:orient = (1, 0, 0, 0)
|
||||
float3 xformOp:scale = (1.0, 1.0, 1.0)
|
||||
double3 xformOp:translate = (0, 0, 0)
|
||||
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
|
||||
token visibility = "invisible"
|
||||
}
|
||||
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#usda 1.0
|
||||
(
|
||||
defaultPrim = "root"
|
||||
upAxis = "Z"
|
||||
)
|
||||
|
||||
def Xform "root"(
|
||||
assetInfo = {
|
||||
asset identifier = @./SecondCube.usda@
|
||||
string name = "SecondCube"
|
||||
}
|
||||
kind = "component"
|
||||
)
|
||||
{
|
||||
def "SecondCube_geometry" (
|
||||
prepend references = [@./SecondCube_geo.usda@]
|
||||
)
|
||||
{
|
||||
}
|
||||
def "SecondCube_collision" (
|
||||
prepend references = [@./SecondCube_physics.usda@]
|
||||
)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
#usda 1.0
|
||||
(
|
||||
defaultPrim = "root"
|
||||
metersPerUnit = 1.0
|
||||
upAxis = "Z"
|
||||
)
|
||||
|
||||
def Cube "root" ()
|
||||
{
|
||||
color3f[] primvars:displayColor = [(0, 0, 1)]
|
||||
double size = 1.0
|
||||
quatf xformOp:orient = (1, 0, 0, 0)
|
||||
float3 xformOp:scale = (1.0, 1.0, 1.0)
|
||||
double3 xformOp:translate = (0.0, 0, 0)
|
||||
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
#usda 1.0
|
||||
(
|
||||
defaultPrim = "root"
|
||||
metersPerUnit = 1.0
|
||||
upAxis = "Z"
|
||||
kilogramsPerUnit = 1.0
|
||||
)
|
||||
|
||||
def Cube "root" (
|
||||
prepend apiSchemas = ["PhysicsCollisionAPI", "PhysicsMassAPI"]
|
||||
)
|
||||
{
|
||||
color3f[] primvars:displayColor = [(0, 1, 1)]
|
||||
float physics:mass = 1
|
||||
bool physics:collisionEnabled = 1
|
||||
double size = 1.0
|
||||
quatf xformOp:orient = (1, 0, 0, 0)
|
||||
float3 xformOp:scale = (1.0, 1.0, 1.0)
|
||||
double3 xformOp:translate = (0.0, 0, 0)
|
||||
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
|
||||
token visibility = "invisible"
|
||||
}
|
||||
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
#usda 1.0
|
||||
# Two Cubes linked together with a single hinge joint at the top of the two
|
||||
# cubes.
|
||||
# USD Quaternions are WXYZ
|
||||
# X=Right, Y=Forward, Z=Up
|
||||
(
|
||||
defaultPrim = "root"
|
||||
upAxis = "Z"
|
||||
metersPerUnit = 1.0
|
||||
kilogramsPerUnit = 1.0
|
||||
subLayers = [
|
||||
@./TwoCubes_physics.usda@,
|
||||
]
|
||||
)
|
||||
|
||||
def Xform "root"(
|
||||
assetInfo = {
|
||||
asset identifier = @./TwoCubes.usda@
|
||||
string name = "TwoCubes"
|
||||
}
|
||||
kind = "component"
|
||||
)
|
||||
{
|
||||
def "first_cube" (
|
||||
prepend references = [@./FirstCube.usda@]
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
def "second_cube" (
|
||||
prepend references = [@./SecondCube.usda@]
|
||||
)
|
||||
{
|
||||
quatf xformOp:orient = (1, 0, 0, 0)
|
||||
float3 xformOp:scale = (1.0, 1.0, 1.0)
|
||||
double3 xformOp:translate = (1.0, 0, 0)
|
||||
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
#usda 1.0
|
||||
(
|
||||
defaultPrim = "root"
|
||||
upAxis = "Z"
|
||||
metersPerUnit = 1.0
|
||||
)
|
||||
over "root" {
|
||||
def Scope "Joints"
|
||||
{
|
||||
def PhysicsJoint "two_cubes_joint" (
|
||||
prepend apiSchemas = ["PhysicsLimitAPI", "PhysicsLimitAPI:transY", "PhysicsLimitAPI:transZ", "PhysicsLimitAPI:rotX", "PhysicsLimitAPI:rotY", "PhysicsDriveAPI:rotZ"]
|
||||
)
|
||||
{
|
||||
rel physics:body0 = </root/first_cube>
|
||||
rel physics:body1 = </root/second_cube>
|
||||
float limit:rotX:physics:high = 0
|
||||
float limit:rotX:physics:low = 0
|
||||
float limit:rotY:physics:high = 0
|
||||
float limit:rotY:physics:low = -2
|
||||
float limit:rotZ:physics:high = 0
|
||||
float limit:rotZ:physics:low = 0
|
||||
float limit:transX:physics:high = 0
|
||||
float limit:transX:physics:low = 0
|
||||
float limit:transY:physics:high = 0
|
||||
float limit:transY:physics:low = 0
|
||||
float limit:transZ:physics:high = 0
|
||||
float limit:transZ:physics:low = 0
|
||||
point3f physics:localPos0 = (0, 1.0, 0)
|
||||
point3f physics:localPos1 = (-0.5, 0, 0.5)
|
||||
quatf physics:localRot0 = (1, 0, 0, 0)
|
||||
quatf physics:localRot1 = (1, 0, 0, 0)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
#usda 1.0
|
||||
(
|
||||
defaultPrim = "root"
|
||||
metersPerUnit = 1.0
|
||||
upAxis = "Z"
|
||||
kilogramsPerUnit = 1.0
|
||||
)
|
||||
|
||||
def Xform "root"(
|
||||
kind = "assembly"
|
||||
)
|
||||
{
|
||||
def "Floor" (
|
||||
prepend references = [@../floor/Floor.usda@]
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
def "TwoCubes" (
|
||||
prepend references = [@../two_cubes/TwoCubes.usda@]
|
||||
)
|
||||
{
|
||||
double3 xformOp:translate = (0, 0, 30.0)
|
||||
quatf xformOp:orient = (1, 0, 0, 0)
|
||||
float3 xformOp:scale = (1.0, 1.0, 1.0)
|
||||
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user