You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

953 lines
40 KiB

#usda 1.0
(
"WARNING: THIS FILE IS GENERATED BY usdGenSchema. DO NOT EDIT."
)
class PhysicsScene "PhysicsScene" (
doc = "General physics simulation properties, required for simulation."
)
{
vector3f physics:gravityDirection = (0, 0, 0) (
displayName = "Gravity Direction"
doc = """Gravity direction vector in simulation world space. Will be
normalized before use. A zero vector is a request to use the negative
upAxis. Unitless."""
)
float physics:gravityMagnitude = -inf (
displayName = "Gravity Magnitude"
doc = """Gravity acceleration magnitude in simulation world space.
A negative value is a request to use a value equivalent to earth
gravity regardless of the metersPerUnit scaling used by this scene.
Units: distance/second/second."""
)
}
class "PhysicsRigidBodyAPI" (
doc = """Applies physics body attributes to any UsdGeomXformable prim and
marks that prim to be driven by a simulation. If a simulation is running
it will update this prim's pose. All prims in the hierarchy below this
prim should move accordingly."""
)
{
vector3f physics:angularVelocity = (0, 0, 0) (
displayName = "Angular Velocity"
doc = """Angular velocity in the same space as the node's xform.
Units: degrees/second."""
)
bool physics:kinematicEnabled = 0 (
displayName = "Kinematic Enabled"
doc = """Determines whether the body is kinematic or not. A kinematic
body is a body that is moved through animated poses or through
user defined poses. The simulation derives velocities for the
kinematic body based on the external motion. When a continuous motion
is not desired, this kinematic flag should be set to false."""
)
bool physics:rigidBodyEnabled = 1 (
displayName = "Rigid Body Enabled"
doc = "Determines if this PhysicsRigidBodyAPI is enabled."
)
rel physics:simulationOwner (
displayName = "Simulation Owner"
doc = """Single PhysicsScene that will simulate this body. By
default this is the first PhysicsScene found in the stage using
UsdStage::Traverse()."""
)
uniform bool physics:startsAsleep = 0 (
displayName = "Starts as Asleep"
doc = "Determines if the body is asleep when the simulation starts."
)
vector3f physics:velocity = (0, 0, 0) (
displayName = "Linear Velocity"
doc = """Linear velocity in the same space as the node's xform.
Units: distance/second."""
)
}
class "PhysicsMassAPI" (
doc = """Defines explicit mass properties (mass, density, inertia etc.).
MassAPI can be applied to any object that has a PhysicsCollisionAPI or
a PhysicsRigidBodyAPI."""
)
{
point3f physics:centerOfMass = (-inf, -inf, -inf) (
displayName = "Center of Mass"
doc = "Center of mass in the prim's local space. Units: distance."
)
float physics:density = 0 (
displayName = "Density"
doc = """If non-zero, specifies the density of the object.
In the context of rigid body physics, density indirectly results in
setting mass via (mass = density x volume of the object). How the
volume is computed is up to implementation of the physics system.
It is generally computed from the collision approximation rather than
the graphical mesh. In the case where both density and mass are
specified for the same object, mass has precedence over density.
Unlike mass, child's prim's density overrides parent prim's density
as it is accumulative. Note that density of a collisionAPI can be also
alternatively set through a PhysicsMaterialAPI. The material density
has the weakest precedence in density definition. Note if density is
0.0 it is ignored. Units: mass/distance/distance/distance."""
)
float3 physics:diagonalInertia = (0, 0, 0) (
displayName = "Diagonal Inertia"
doc = """If non-zero, specifies diagonalized inertia tensor along the
principal axes. Note if diagonalInertial is (0.0, 0.0, 0.0) it is
ignored. Units: mass*distance*distance."""
)
float physics:mass = 0 (
displayName = "Mass"
doc = """If non-zero, directly specifies the mass of the object.
Note that any child prim can also have a mass when they apply massAPI.
In this case, the precedence rule is 'parent mass overrides the
child's'. This may come as counter-intuitive, but mass is a computed
quantity and in general not accumulative. For example, if a parent
has mass of 10, and one of two children has mass of 20, allowing
child's mass to override its parent results in a mass of -10 for the
other child. Note if mass is 0.0 it is ignored. Units: mass.
"""
)
quatf physics:principalAxes = (0, 0, 0, 0) (
displayName = "Principal Axes"
doc = """Orientation of the inertia tensor's principal axes in the
prim's local space."""
)
}
class "PhysicsCollisionAPI" (
doc = """Applies collision attributes to a UsdGeomXformable prim. If a
simulation is running, this geometry will collide with other geometries that
have PhysicsCollisionAPI applied. If a prim in the parent hierarchy has the
RigidBodyAPI applied, this collider is a part of that body. If there is
no body in the parent hierarchy, this collider is considered to be static."""
)
{
bool physics:collisionEnabled = 1 (
displayName = "Collision Enabled"
doc = "Determines if the PhysicsCollisionAPI is enabled."
)
rel physics:simulationOwner (
displayName = "Simulation Owner"
doc = """Single PhysicsScene that will simulate this collider.
By default this object belongs to the first PhysicsScene.
Note that if a RigidBodyAPI in the hierarchy above has a different
simulationOwner then it has a precedence over this relationship."""
)
}
class "PhysicsMeshCollisionAPI" (
doc = """Attributes to control how a Mesh is made into a collider.
Can be applied to only a USDGeomMesh in addition to its
PhysicsCollisionAPI."""
)
{
uniform token physics:approximation = "none" (
allowedTokens = ["none", "convexDecomposition", "convexHull", "boundingSphere", "boundingCube", "meshSimplification"]
displayName = "Approximation"
doc = """Determines the mesh's collision approximation:
\t\"none\" - The mesh geometry is used directly as a collider without any
approximation.
\t\"convexDecomposition\" - A convex mesh decomposition is performed. This
results in a set of convex mesh colliders.
\t\"convexHull\" - A convex hull of the mesh is generated and used as the
collider.
\t\"boundingSphere\" - A bounding sphere is computed around the mesh and used
as a collider.
\t\"boundingCube\" - An optimally fitting box collider is computed around the
mesh.
\t\"meshSimplification\" - A mesh simplification step is performed, resulting
in a simplified triangle mesh collider."""
)
}
class "PhysicsMaterialAPI" (
doc = """ Adds simulation material properties to a Material. All collisions
that have a relationship to this material will have their collision response
defined through this material."""
)
{
float physics:density = 0 (
displayName = "Density"
doc = """If non-zero, defines the density of the material. This can be
used for body mass computation, see PhysicsMassAPI.
Note that if the density is 0.0 it is ignored.
Units: mass/distance/distance/distance."""
)
float physics:dynamicFriction = 0 (
displayName = "Dynamic Friction"
doc = "Dynamic friction coefficient. Unitless."
)
float physics:restitution = 0 (
displayName = "Restitution"
doc = "Restitution coefficient. Unitless."
)
float physics:staticFriction = 0 (
displayName = "Static Friction"
doc = "Static friction coefficient. Unitless."
)
}
class PhysicsCollisionGroup "PhysicsCollisionGroup" (
apiSchemas = ["CollectionAPI:colliders"]
doc = """Defines a collision group for coarse filtering. When a collision
occurs between two objects that have a PhysicsCollisionGroup assigned,
they will collide with each other unless this PhysicsCollisionGroup pair
is filtered. See filteredGroups attribute.
A CollectionAPI:colliders maintains a list of PhysicsCollisionAPI rel-s that
defines the members of this Collisiongroup.
"""
)
{
rel physics:filteredGroups (
displayName = "Filtered Groups"
doc = """References a list of PhysicsCollisionGroups with which
collisions should be ignored."""
)
bool physics:invertFilteredGroups (
displayName = "Invert Filtered Groups"
doc = """Normally, the filter will disable collisions against the selected
filter groups. However, if this option is set, the filter will disable
collisions against all colliders except for those in the selected filter
groups."""
)
string physics:mergeGroup (
displayName = "Merge With Groups"
doc = """If non-empty, any collision groups in a stage with a matching
mergeGroup should be considered to refer to the same collection. Matching
collision groups should behave as if there were a single group containing
referenced colliders and filter groups from both collections."""
)
}
class "PhysicsFilteredPairsAPI" (
doc = '''API to describe fine-grained filtering. If a collision between
two objects occurs, this pair might be filtered if the pair is defined
through this API. This API can be applied either to a body or collision
or even articulation. The "filteredPairs" defines what objects it should
not collide against. Note that FilteredPairsAPI filtering has precedence
over CollisionGroup filtering.'''
)
{
rel physics:filteredPairs (
displayName = "Filtered Pairs"
doc = "Relationship to objects that should be filtered."
)
}
class PhysicsJoint "PhysicsJoint" (
doc = """A joint constrains the movement of rigid bodies. Joint can be
created between two rigid bodies or between one rigid body and world.
By default joint primitive defines a D6 joint where all degrees of
freedom are free. Three linear and three angular degrees of freedom.
Note that default behavior is to disable collision between jointed bodies.
"""
)
{
rel physics:body0 (
displayName = "Body 0"
doc = "Relationship to any UsdGeomXformable."
)
rel physics:body1 (
displayName = "Body 1"
doc = "Relationship to any UsdGeomXformable."
)
float physics:breakForce = inf (
displayName = "Break Force"
doc = """Joint break force. If set, joint is to break when this force
limit is reached. (Used for linear DOFs.)
Units: mass * distance / second / second"""
)
float physics:breakTorque = inf (
displayName = "Break Torque"
doc = """Joint break torque. If set, joint is to break when this torque
limit is reached. (Used for angular DOFs.)
Units: mass * distance * distance / second / second"""
)
bool physics:collisionEnabled = 0 (
displayName = "Collision Enabled"
doc = "Determines if the jointed subtrees should collide or not."
)
uniform bool physics:excludeFromArticulation = 0 (
displayName = "Exclude From Articulation"
doc = "Determines if the joint can be included in an Articulation."
)
bool physics:jointEnabled = 1 (
displayName = "Joint Enabled"
doc = "Determines if the joint is enabled."
)
point3f physics:localPos0 = (0, 0, 0) (
displayName = "Local Position 0"
doc = "Relative position of the joint frame to body0's frame."
)
point3f physics:localPos1 = (0, 0, 0) (
displayName = "Local Position 1"
doc = "Relative position of the joint frame to body1's frame."
)
quatf physics:localRot0 = (1, 0, 0, 0) (
displayName = "Local Rotation 0"
doc = "Relative orientation of the joint frame to body0's frame."
)
quatf physics:localRot1 = (1, 0, 0, 0) (
displayName = "Local Rotation 1"
doc = "Relative orientation of the joint frame to body1's frame."
)
rel proxyPrim (
doc = '''The proxyPrim relationship allows us to link a
prim whose purpose is "render" to its (single target)
purpose="proxy" prim. This is entirely optional, but can be
useful in several scenarios:
- In a pipeline that does pruning (for complexity management)
by deactivating prims composed from asset references, when we
deactivate a purpose="render" prim, we will be able to discover
and additionally deactivate its associated purpose="proxy" prim,
so that preview renders reflect the pruning accurately.
- DCC importers may be able to make more aggressive optimizations
for interactive processing and display if they can discover the proxy
for a given render prim.
- With a little more work, a Hydra-based application will be able
to map a picked proxy prim back to its render geometry for selection.
\\note It is only valid to author the proxyPrim relationship on
prims whose purpose is "render".'''
)
uniform token purpose = "default" (
allowedTokens = ["default", "render", "proxy", "guide"]
doc = """Purpose is a classification of geometry into categories that
can each be independently included or excluded from traversals of prims
on a stage, such as rendering or bounding-box computation traversals.
See for more detail about how
purpose is computed and used."""
)
token visibility = "inherited" (
allowedTokens = ["inherited", "invisible"]
doc = '''Visibility is meant to be the simplest form of "pruning"
visibility that is supported by most DCC apps. Visibility is
animatable, allowing a sub-tree of geometry to be present for some
segment of a shot, and absent from others; unlike the action of
deactivating geometry prims, invisible geometry is still
available for inspection, for positioning, for defining volumes, etc.'''
)
}
class PhysicsRevoluteJoint "PhysicsRevoluteJoint" (
doc = """Predefined revolute joint type (rotation along revolute joint
axis is permitted.)"""
)
{
uniform token physics:axis = "X" (
allowedTokens = ["X", "Y", "Z"]
displayName = "Axis"
doc = "Joint axis."
)
rel physics:body0 (
displayName = "Body 0"
doc = "Relationship to any UsdGeomXformable."
)
rel physics:body1 (
displayName = "Body 1"
doc = "Relationship to any UsdGeomXformable."
)
float physics:breakForce = inf (
displayName = "Break Force"
doc = """Joint break force. If set, joint is to break when this force
limit is reached. (Used for linear DOFs.)
Units: mass * distance / second / second"""
)
float physics:breakTorque = inf (
displayName = "Break Torque"
doc = """Joint break torque. If set, joint is to break when this torque
limit is reached. (Used for angular DOFs.)
Units: mass * distance * distance / second / second"""
)
bool physics:collisionEnabled = 0 (
displayName = "Collision Enabled"
doc = "Determines if the jointed subtrees should collide or not."
)
uniform bool physics:excludeFromArticulation = 0 (
displayName = "Exclude From Articulation"
doc = "Determines if the joint can be included in an Articulation."
)
bool physics:jointEnabled = 1 (
displayName = "Joint Enabled"
doc = "Determines if the joint is enabled."
)
point3f physics:localPos0 = (0, 0, 0) (
displayName = "Local Position 0"
doc = "Relative position of the joint frame to body0's frame."
)
point3f physics:localPos1 = (0, 0, 0) (
displayName = "Local Position 1"
doc = "Relative position of the joint frame to body1's frame."
)
quatf physics:localRot0 = (1, 0, 0, 0) (
displayName = "Local Rotation 0"
doc = "Relative orientation of the joint frame to body0's frame."
)
quatf physics:localRot1 = (1, 0, 0, 0) (
displayName = "Local Rotation 1"
doc = "Relative orientation of the joint frame to body1's frame."
)
float physics:lowerLimit = -inf (
displayName = "Lower Limit"
doc = """Lower limit. Units: degrees. -inf means not limited in
negative direction."""
)
float physics:upperLimit = inf (
displayName = "Upper Limit"
doc = """Upper limit. Units: degrees. inf means not limited in
positive direction."""
)
rel proxyPrim (
doc = '''The proxyPrim relationship allows us to link a
prim whose purpose is "render" to its (single target)
purpose="proxy" prim. This is entirely optional, but can be
useful in several scenarios:
- In a pipeline that does pruning (for complexity management)
by deactivating prims composed from asset references, when we
deactivate a purpose="render" prim, we will be able to discover
and additionally deactivate its associated purpose="proxy" prim,
so that preview renders reflect the pruning accurately.
- DCC importers may be able to make more aggressive optimizations
for interactive processing and display if they can discover the proxy
for a given render prim.
- With a little more work, a Hydra-based application will be able
to map a picked proxy prim back to its render geometry for selection.
\\note It is only valid to author the proxyPrim relationship on
prims whose purpose is "render".'''
)
uniform token purpose = "default" (
allowedTokens = ["default", "render", "proxy", "guide"]
doc = """Purpose is a classification of geometry into categories that
can each be independently included or excluded from traversals of prims
on a stage, such as rendering or bounding-box computation traversals.
See for more detail about how
purpose is computed and used."""
)
token visibility = "inherited" (
allowedTokens = ["inherited", "invisible"]
doc = '''Visibility is meant to be the simplest form of "pruning"
visibility that is supported by most DCC apps. Visibility is
animatable, allowing a sub-tree of geometry to be present for some
segment of a shot, and absent from others; unlike the action of
deactivating geometry prims, invisible geometry is still
available for inspection, for positioning, for defining volumes, etc.'''
)
}
class PhysicsPrismaticJoint "PhysicsPrismaticJoint" (
doc = """Predefined prismatic joint type (translation along prismatic
joint axis is permitted.)"""
)
{
uniform token physics:axis = "X" (
allowedTokens = ["X", "Y", "Z"]
displayName = "Axis"
doc = "Joint axis."
)
rel physics:body0 (
displayName = "Body 0"
doc = "Relationship to any UsdGeomXformable."
)
rel physics:body1 (
displayName = "Body 1"
doc = "Relationship to any UsdGeomXformable."
)
float physics:breakForce = inf (
displayName = "Break Force"
doc = """Joint break force. If set, joint is to break when this force
limit is reached. (Used for linear DOFs.)
Units: mass * distance / second / second"""
)
float physics:breakTorque = inf (
displayName = "Break Torque"
doc = """Joint break torque. If set, joint is to break when this torque
limit is reached. (Used for angular DOFs.)
Units: mass * distance * distance / second / second"""
)
bool physics:collisionEnabled = 0 (
displayName = "Collision Enabled"
doc = "Determines if the jointed subtrees should collide or not."
)
uniform bool physics:excludeFromArticulation = 0 (
displayName = "Exclude From Articulation"
doc = "Determines if the joint can be included in an Articulation."
)
bool physics:jointEnabled = 1 (
displayName = "Joint Enabled"
doc = "Determines if the joint is enabled."
)
point3f physics:localPos0 = (0, 0, 0) (
displayName = "Local Position 0"
doc = "Relative position of the joint frame to body0's frame."
)
point3f physics:localPos1 = (0, 0, 0) (
displayName = "Local Position 1"
doc = "Relative position of the joint frame to body1's frame."
)
quatf physics:localRot0 = (1, 0, 0, 0) (
displayName = "Local Rotation 0"
doc = "Relative orientation of the joint frame to body0's frame."
)
quatf physics:localRot1 = (1, 0, 0, 0) (
displayName = "Local Rotation 1"
doc = "Relative orientation of the joint frame to body1's frame."
)
float physics:lowerLimit = -inf (
displayName = "Lower Limit"
doc = """Lower limit. Units: distance. -inf means not limited in
negative direction."""
)
float physics:upperLimit = inf (
displayName = "Upper Limit"
doc = """Upper limit. Units: distance. inf means not limited in
positive direction."""
)
rel proxyPrim (
doc = '''The proxyPrim relationship allows us to link a
prim whose purpose is "render" to its (single target)
purpose="proxy" prim. This is entirely optional, but can be
useful in several scenarios:
- In a pipeline that does pruning (for complexity management)
by deactivating prims composed from asset references, when we
deactivate a purpose="render" prim, we will be able to discover
and additionally deactivate its associated purpose="proxy" prim,
so that preview renders reflect the pruning accurately.
- DCC importers may be able to make more aggressive optimizations
for interactive processing and display if they can discover the proxy
for a given render prim.
- With a little more work, a Hydra-based application will be able
to map a picked proxy prim back to its render geometry for selection.
\\note It is only valid to author the proxyPrim relationship on
prims whose purpose is "render".'''
)
uniform token purpose = "default" (
allowedTokens = ["default", "render", "proxy", "guide"]
doc = """Purpose is a classification of geometry into categories that
can each be independently included or excluded from traversals of prims
on a stage, such as rendering or bounding-box computation traversals.
See for more detail about how
purpose is computed and used."""
)
token visibility = "inherited" (
allowedTokens = ["inherited", "invisible"]
doc = '''Visibility is meant to be the simplest form of "pruning"
visibility that is supported by most DCC apps. Visibility is
animatable, allowing a sub-tree of geometry to be present for some
segment of a shot, and absent from others; unlike the action of
deactivating geometry prims, invisible geometry is still
available for inspection, for positioning, for defining volumes, etc.'''
)
}
class PhysicsSphericalJoint "PhysicsSphericalJoint" (
doc = """Predefined spherical joint type (Removes linear degrees of
freedom, cone limit may restrict the motion in a given range.) It allows
two limit values, which when equal create a circular, else an elliptic
cone limit around the limit axis."""
)
{
uniform token physics:axis = "X" (
allowedTokens = ["X", "Y", "Z"]
displayName = "Axis"
doc = "Cone limit axis."
)
rel physics:body0 (
displayName = "Body 0"
doc = "Relationship to any UsdGeomXformable."
)
rel physics:body1 (
displayName = "Body 1"
doc = "Relationship to any UsdGeomXformable."
)
float physics:breakForce = inf (
displayName = "Break Force"
doc = """Joint break force. If set, joint is to break when this force
limit is reached. (Used for linear DOFs.)
Units: mass * distance / second / second"""
)
float physics:breakTorque = inf (
displayName = "Break Torque"
doc = """Joint break torque. If set, joint is to break when this torque
limit is reached. (Used for angular DOFs.)
Units: mass * distance * distance / second / second"""
)
bool physics:collisionEnabled = 0 (
displayName = "Collision Enabled"
doc = "Determines if the jointed subtrees should collide or not."
)
float physics:coneAngle0Limit = -1 (
displayName = "Cone Angle0 Limit"
doc = """Cone limit from the primary joint axis in the local0 frame
toward the next axis. (Next axis of X is Y, and of Z is X.) A
negative value means not limited. Units: degrees."""
)
float physics:coneAngle1Limit = -1 (
displayName = "Cone Angle1 Limit"
doc = """Cone limit from the primary joint axis in the local0 frame
toward the second to next axis. A negative value means not limited.
Units: degrees."""
)
uniform bool physics:excludeFromArticulation = 0 (
displayName = "Exclude From Articulation"
doc = "Determines if the joint can be included in an Articulation."
)
bool physics:jointEnabled = 1 (
displayName = "Joint Enabled"
doc = "Determines if the joint is enabled."
)
point3f physics:localPos0 = (0, 0, 0) (
displayName = "Local Position 0"
doc = "Relative position of the joint frame to body0's frame."
)
point3f physics:localPos1 = (0, 0, 0) (
displayName = "Local Position 1"
doc = "Relative position of the joint frame to body1's frame."
)
quatf physics:localRot0 = (1, 0, 0, 0) (
displayName = "Local Rotation 0"
doc = "Relative orientation of the joint frame to body0's frame."
)
quatf physics:localRot1 = (1, 0, 0, 0) (
displayName = "Local Rotation 1"
doc = "Relative orientation of the joint frame to body1's frame."
)
rel proxyPrim (
doc = '''The proxyPrim relationship allows us to link a
prim whose purpose is "render" to its (single target)
purpose="proxy" prim. This is entirely optional, but can be
useful in several scenarios:
- In a pipeline that does pruning (for complexity management)
by deactivating prims composed from asset references, when we
deactivate a purpose="render" prim, we will be able to discover
and additionally deactivate its associated purpose="proxy" prim,
so that preview renders reflect the pruning accurately.
- DCC importers may be able to make more aggressive optimizations
for interactive processing and display if they can discover the proxy
for a given render prim.
- With a little more work, a Hydra-based application will be able
to map a picked proxy prim back to its render geometry for selection.
\\note It is only valid to author the proxyPrim relationship on
prims whose purpose is "render".'''
)
uniform token purpose = "default" (
allowedTokens = ["default", "render", "proxy", "guide"]
doc = """Purpose is a classification of geometry into categories that
can each be independently included or excluded from traversals of prims
on a stage, such as rendering or bounding-box computation traversals.
See for more detail about how
purpose is computed and used."""
)
token visibility = "inherited" (
allowedTokens = ["inherited", "invisible"]
doc = '''Visibility is meant to be the simplest form of "pruning"
visibility that is supported by most DCC apps. Visibility is
animatable, allowing a sub-tree of geometry to be present for some
segment of a shot, and absent from others; unlike the action of
deactivating geometry prims, invisible geometry is still
available for inspection, for positioning, for defining volumes, etc.'''
)
}
class PhysicsDistanceJoint "PhysicsDistanceJoint" (
doc = """Predefined distance joint type (Distance between rigid bodies
may be limited to given minimum or maximum distance.)"""
)
{
rel physics:body0 (
displayName = "Body 0"
doc = "Relationship to any UsdGeomXformable."
)
rel physics:body1 (
displayName = "Body 1"
doc = "Relationship to any UsdGeomXformable."
)
float physics:breakForce = inf (
displayName = "Break Force"
doc = """Joint break force. If set, joint is to break when this force
limit is reached. (Used for linear DOFs.)
Units: mass * distance / second / second"""
)
float physics:breakTorque = inf (
displayName = "Break Torque"
doc = """Joint break torque. If set, joint is to break when this torque
limit is reached. (Used for angular DOFs.)
Units: mass * distance * distance / second / second"""
)
bool physics:collisionEnabled = 0 (
displayName = "Collision Enabled"
doc = "Determines if the jointed subtrees should collide or not."
)
uniform bool physics:excludeFromArticulation = 0 (
displayName = "Exclude From Articulation"
doc = "Determines if the joint can be included in an Articulation."
)
bool physics:jointEnabled = 1 (
displayName = "Joint Enabled"
doc = "Determines if the joint is enabled."
)
point3f physics:localPos0 = (0, 0, 0) (
displayName = "Local Position 0"
doc = "Relative position of the joint frame to body0's frame."
)
point3f physics:localPos1 = (0, 0, 0) (
displayName = "Local Position 1"
doc = "Relative position of the joint frame to body1's frame."
)
quatf physics:localRot0 = (1, 0, 0, 0) (
displayName = "Local Rotation 0"
doc = "Relative orientation of the joint frame to body0's frame."
)
quatf physics:localRot1 = (1, 0, 0, 0) (
displayName = "Local Rotation 1"
doc = "Relative orientation of the joint frame to body1's frame."
)
float physics:maxDistance = -1 (
displayName = "Maximum Distance"
doc = """Maximum distance. If attribute is negative, the joint is not
limited. Units: distance."""
)
float physics:minDistance = -1 (
displayName = "Minimum Distance"
doc = """Minimum distance. If attribute is negative, the joint is not
limited. Units: distance."""
)
rel proxyPrim (
doc = '''The proxyPrim relationship allows us to link a
prim whose purpose is "render" to its (single target)
purpose="proxy" prim. This is entirely optional, but can be
useful in several scenarios:
- In a pipeline that does pruning (for complexity management)
by deactivating prims composed from asset references, when we
deactivate a purpose="render" prim, we will be able to discover
and additionally deactivate its associated purpose="proxy" prim,
so that preview renders reflect the pruning accurately.
- DCC importers may be able to make more aggressive optimizations
for interactive processing and display if they can discover the proxy
for a given render prim.
- With a little more work, a Hydra-based application will be able
to map a picked proxy prim back to its render geometry for selection.
\\note It is only valid to author the proxyPrim relationship on
prims whose purpose is "render".'''
)
uniform token purpose = "default" (
allowedTokens = ["default", "render", "proxy", "guide"]
doc = """Purpose is a classification of geometry into categories that
can each be independently included or excluded from traversals of prims
on a stage, such as rendering or bounding-box computation traversals.
See for more detail about how
purpose is computed and used."""
)
token visibility = "inherited" (
allowedTokens = ["inherited", "invisible"]
doc = '''Visibility is meant to be the simplest form of "pruning"
visibility that is supported by most DCC apps. Visibility is
animatable, allowing a sub-tree of geometry to be present for some
segment of a shot, and absent from others; unlike the action of
deactivating geometry prims, invisible geometry is still
available for inspection, for positioning, for defining volumes, etc.'''
)
}
class PhysicsFixedJoint "PhysicsFixedJoint" (
doc = """Predefined fixed joint type (All degrees of freedom are
removed.)"""
)
{
rel physics:body0 (
displayName = "Body 0"
doc = "Relationship to any UsdGeomXformable."
)
rel physics:body1 (
displayName = "Body 1"
doc = "Relationship to any UsdGeomXformable."
)
float physics:breakForce = inf (
displayName = "Break Force"
doc = """Joint break force. If set, joint is to break when this force
limit is reached. (Used for linear DOFs.)
Units: mass * distance / second / second"""
)
float physics:breakTorque = inf (
displayName = "Break Torque"
doc = """Joint break torque. If set, joint is to break when this torque
limit is reached. (Used for angular DOFs.)
Units: mass * distance * distance / second / second"""
)
bool physics:collisionEnabled = 0 (
displayName = "Collision Enabled"
doc = "Determines if the jointed subtrees should collide or not."
)
uniform bool physics:excludeFromArticulation = 0 (
displayName = "Exclude From Articulation"
doc = "Determines if the joint can be included in an Articulation."
)
bool physics:jointEnabled = 1 (
displayName = "Joint Enabled"
doc = "Determines if the joint is enabled."
)
point3f physics:localPos0 = (0, 0, 0) (
displayName = "Local Position 0"
doc = "Relative position of the joint frame to body0's frame."
)
point3f physics:localPos1 = (0, 0, 0) (
displayName = "Local Position 1"
doc = "Relative position of the joint frame to body1's frame."
)
quatf physics:localRot0 = (1, 0, 0, 0) (
displayName = "Local Rotation 0"
doc = "Relative orientation of the joint frame to body0's frame."
)
quatf physics:localRot1 = (1, 0, 0, 0) (
displayName = "Local Rotation 1"
doc = "Relative orientation of the joint frame to body1's frame."
)
rel proxyPrim (
doc = '''The proxyPrim relationship allows us to link a
prim whose purpose is "render" to its (single target)
purpose="proxy" prim. This is entirely optional, but can be
useful in several scenarios:
- In a pipeline that does pruning (for complexity management)
by deactivating prims composed from asset references, when we
deactivate a purpose="render" prim, we will be able to discover
and additionally deactivate its associated purpose="proxy" prim,
so that preview renders reflect the pruning accurately.
- DCC importers may be able to make more aggressive optimizations
for interactive processing and display if they can discover the proxy
for a given render prim.
- With a little more work, a Hydra-based application will be able
to map a picked proxy prim back to its render geometry for selection.
\\note It is only valid to author the proxyPrim relationship on
prims whose purpose is "render".'''
)
uniform token purpose = "default" (
allowedTokens = ["default", "render", "proxy", "guide"]
doc = """Purpose is a classification of geometry into categories that
can each be independently included or excluded from traversals of prims
on a stage, such as rendering or bounding-box computation traversals.
See for more detail about how
purpose is computed and used."""
)
token visibility = "inherited" (
allowedTokens = ["inherited", "invisible"]
doc = '''Visibility is meant to be the simplest form of "pruning"
visibility that is supported by most DCC apps. Visibility is
animatable, allowing a sub-tree of geometry to be present for some
segment of a shot, and absent from others; unlike the action of
deactivating geometry prims, invisible geometry is still
available for inspection, for positioning, for defining volumes, etc.'''
)
}
class "PhysicsLimitAPI" (
doc = '''The PhysicsLimitAPI can be applied to a PhysicsJoint and will
restrict the movement along an axis. PhysicsLimitAPI is a multipleApply
schema: The PhysicsJoint can be restricted along "transX", "transY",
"transZ", "rotX", "rotY", "rotZ", "distance". Setting these as a
multipleApply schema TfToken name will define the degree of freedom the
PhysicsLimitAPI is applied to. Note that if the low limit is higher than
the high limit, motion along this axis is considered locked.'''
)
{
float limit:__INSTANCE_NAME__:physics:high = inf (
displayName = "High Limit"
doc = """Upper limit. Units: degrees or distance depending on trans or
rot axis applied to. inf means not limited in positive direction."""
)
float limit:__INSTANCE_NAME__:physics:low = -inf (
displayName = "Low Limit"
doc = """Lower limit. Units: degrees or distance depending on trans or
rot axis applied to. -inf means not limited in negative direction."""
)
}
class "PhysicsDriveAPI" (
doc = '''The PhysicsDriveAPI when applied to any joint primitive will drive
the joint towards a given target. The PhysicsDriveAPI is a multipleApply
schema: drive can be set per axis "transX", "transY", "transZ", "rotX",
"rotY", "rotZ" or its "linear" for prismatic joint or "angular" for revolute
joints. Setting these as a multipleApply schema TfToken name will
define the degree of freedom the DriveAPI is applied to. Each drive is an
implicit force-limited damped spring:
Force or acceleration = stiffness * (targetPosition - position)
+ damping * (targetVelocity - velocity)'''
)
{
float drive:__INSTANCE_NAME__:physics:damping = 0 (
doc = """Damping of the drive. Units:
\t\tif linear drive: mass/second
\t\tIf angular drive: mass*DIST_UNITS*DIST_UNITS/second/second/degrees."""
)
float drive:__INSTANCE_NAME__:physics:maxForce = inf (
displayName = "Max Force"
doc = """Maximum force that can be applied to drive. Units:
if linear drive: mass*DIST_UNITS/second/second
if angular drive: mass*DIST_UNITS*DIST_UNITS/second/second
inf means not limited. Must be non-negative.
"""
)
float drive:__INSTANCE_NAME__:physics:stiffness = 0 (
doc = """Stiffness of the drive. Units:
\t\tif linear drive: mass/second/second
\t\tif angular drive: mass*DIST_UNITS*DIST_UNITS/degree/second/second."""
)
float drive:__INSTANCE_NAME__:physics:targetPosition = 0 (
displayName = "Target Position"
doc = """Target value for position. Units:
if linear drive: distance
if angular drive: degrees."""
)
float drive:__INSTANCE_NAME__:physics:targetVelocity = 0 (
displayName = "Target Velocity"
doc = """Target value for velocity. Units:
if linear drive: distance/second
if angular drive: degrees/second."""
)
uniform token drive:__INSTANCE_NAME__:physics:type = "force" (
allowedTokens = ["force", "acceleration"]
displayName = "Type"
doc = """Drive spring is for the acceleration at the joint (rather
than the force)."""
)
}
class "PhysicsArticulationRootAPI" (
doc = """PhysicsArticulationRootAPI can be applied to a scene graph node,
and marks the subtree rooted here for inclusion in one or more reduced
coordinate articulations. For floating articulations, this should be on
the root body. For fixed articulations (robotics jargon for e.g. a robot
arm for welding that is bolted to the floor), this API can be on a direct
or indirect parent of the root joint which is connected to the world, or
on the joint itself.."""
)
{
}