Cube#
Axis-aligned box geometry. With PhysicsCollisionAPI applied it becomes a box shape whose half extents are |size| / 2 scaled component-wise by the prim’s world scale.
Type chain:
Gprim,Boundable,XformableApplicable APIs:
MaterialBindingAPI,PhysicsArticulationRootAPI,PhysicsCollisionAPI,PhysicsFilteredPairsAPI,PhysicsMassAPI,PhysicsMeshCollisionAPI,PhysicsRigidBodyAPI,PhysxArticulationAPI,PhysxCollisionAPI,PhysxContactReportAPI,PhysxConvexDecompositionCollisionAPI,PhysxConvexHullCollisionAPI,PhysxRigidBodyAPI,PhysxSDFMeshCollisionAPI,PhysxSphereFillCollisionAPI,PhysxSplinesSurfaceVelocityAPI,PhysxSurfaceVelocityAPI,PhysxTriangleMeshCollisionAPI,PhysxTriangleMeshSimplificationCollisionAPI,PhysxTriggerAPITransform columns: yes,
XformableUses blocks:
prim
What USD population writes#
Geometry attributes of a Gprim are published only from a curated list (size, radius, height, axis, points, faceVertexIndices, faceVertexCounts, orientation, doubleSided, …) and only when the prim carries a shape-consuming API such as PhysicsCollisionAPI. For a Cube that is exactly size. extent, normals, visibility, purpose, primvars and xformOp:* are never published under the PHYSICS domain. A Cube without a shape API gets a row only as an ancestor or relationship target, with no geometry.
Columns#
Raw fallback is the USD schema value. Producer writes is what ovstage population puts in the column for a USD stage. Parser default applies on the consumer when the column is absent, in stage units. diverges means writing the raw fallback literally parses differently from omitting the column (the parser default): USD population may well publish that very value for an unauthored attribute, so the marker is about the column being present, not about its value.
Column |
Type |
Units |
Raw fallback |
Producer writes |
Parser default |
If absent |
|---|---|---|---|---|---|---|
|
float64 |
length |
2.0 |
resolved USD value (authored, else raw fallback) |
1.0 |
Half extent 0.5 (times world scale). The producer always publishes the resolved value, 2.0 when unauthored, which yields half extent 1.0. Omitting the column therefore produces a box half the size USD population gives. Always write it. |
Derived values#
half_extents =
abs(size) * 0.5 * abs(worldScale). Component-wise, using the scale decomposed from the composed world transform. The runtime does not apply the transform scale again.
Interactions#
PhysicsCollisionAPI: Geometry is read only when the collision API is applied to this prim. extent is never read and never published.
Known divergences#
defect (consumer)
size: Absent size resolves to 1.0 on the consumer but USD population always publishes the resolved fallback 2.0. Capsule, Cylinder and Cone seed the USD fallbacks in the consumer; Cube does not. Only a hand-populated stage that omits the column is affected.