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
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..""" |
|
) |
|
{ |
|
} |
|
|
|
|