HDK
|
#include <boundable.h>
Static Public Member Functions | |
static USDGEOM_API const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
static USDGEOM_API UsdGeomBoundable | Get (const UsdStagePtr &stage, const SdfPath &path) |
static USDGEOM_API bool | ComputeExtentFromPlugins (const UsdGeomBoundable &boundable, const UsdTimeCode &time, VtVec3fArray *extent) |
static USDGEOM_API bool | ComputeExtentFromPlugins (const UsdGeomBoundable &boundable, const UsdTimeCode &time, const GfMatrix4d &transform, VtVec3fArray *extent) |
Static Public Member Functions inherited from UsdGeomXformable | |
static USDGEOM_API const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
static USDGEOM_API UsdGeomXformable | Get (const UsdStagePtr &stage, const SdfPath &path) |
static USDGEOM_API bool | GetTimeSamples (std::vector< UsdGeomXformOp > const &orderedXformOps, std::vector< double > *times) |
static USDGEOM_API bool | GetTimeSamplesInInterval (std::vector< UsdGeomXformOp > const &orderedXformOps, const GfInterval &interval, std::vector< double > *times) |
static USDGEOM_API bool | GetLocalTransformation (GfMatrix4d *transform, std::vector< UsdGeomXformOp > const &ops, const UsdTimeCode time) |
static USDGEOM_API bool | IsTransformationAffectedByAttrNamed (const TfToken &attrName) |
Static Public Member Functions inherited from UsdGeomImageable | |
static USDGEOM_API const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
static USDGEOM_API UsdGeomImageable | Get (const UsdStagePtr &stage, const SdfPath &path) |
static USDGEOM_API const TfTokenVector & | GetOrderedPurposeTokens () |
Static Public Member Functions inherited from UsdTyped | |
static USD_API const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
static USD_API UsdTyped | Get (const UsdStagePtr &stage, const SdfPath &path) |
Static Public Member Functions inherited from UsdSchemaBase | |
static const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
Static Public Attributes | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::AbstractTyped |
Static Public Attributes inherited from UsdGeomXformable | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::AbstractTyped |
Static Public Attributes inherited from UsdGeomImageable | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::AbstractTyped |
Static Public Attributes inherited from UsdTyped | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::AbstractBase |
Static Public Attributes inherited from UsdSchemaBase | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::AbstractBase |
Protected Member Functions | |
USDGEOM_API UsdSchemaKind | _GetSchemaKind () const override |
Protected Member Functions inherited from UsdGeomXformable | |
USDGEOM_API UsdSchemaKind | _GetSchemaKind () const override |
Protected Member Functions inherited from UsdTyped | |
USD_API bool | _IsCompatible () const override |
Protected Member Functions inherited from UsdSchemaBase | |
virtual UsdSchemaKind | _GetSchemaType () const |
const TfType & | _GetType () const |
USD_API UsdAttribute | _CreateAttr (TfToken const &attrName, SdfValueTypeName const &typeName, bool custom, SdfVariability variability, VtValue const &defaultValue, bool writeSparsely) const |
Friends | |
class | UsdSchemaRegistry |
Boundable introduces the ability for a prim to persistently cache a rectilinear, local-space, extent.
Boundable introduces the notion of "extent", which is a cached computation of a prim's local-space 3D range for its resolved attributes at the layer and time in which extent is authored. We have found that with composed scene description, attempting to cache pre-computed bounds at interior prims in a scene graph is very fragile, given the ease with which one can author a single attribute in a stronger layer that can invalidate many authored caches - or with which a re-published, referenced asset can do the same.
Therefore, we limit to precomputing (generally) leaf-prim extent, which avoids the need to read in large point arrays to compute bounds, and provides UsdGeomBBoxCache the means to efficiently compute and (session-only) cache intermediate bounds. You are free to compute and author intermediate bounds into your scenes, of course, which may work well if you have sufficient locks on your pipeline to guarantee that once authored, the geometry and transforms upon which they are based will remain unchanged, or if accuracy of the bounds is not an ironclad requisite.
When intermediate bounds are authored on Boundable parents, the child prims will be pruned from BBox computation; the authored extent is expected to incorporate all child bounds.
Definition at line 82 of file boundable.h.
Construct a UsdGeomBoundable on UsdPrim prim
. Equivalent to UsdGeomBoundable::Get(prim.GetStage(), prim.GetPath()) for a valid prim
, but will not immediately throw an error for an invalid prim
Definition at line 94 of file boundable.h.
|
inlineexplicit |
Construct a UsdGeomBoundable on the prim held by schemaObj
. Should be preferred over UsdGeomBoundable(schemaObj.GetPrim()), as it preserves SchemaBase state.
Definition at line 102 of file boundable.h.
|
virtual |
Destructor.
|
overrideprotectedvirtual |
Returns the kind of schema this class belongs to.
Reimplemented from UsdTyped.
Reimplemented in UsdGeomPointInstancer, UsdGeomMesh, UsdGeomNurbsPatch, UsdGeomHermiteCurves, UsdGeomNurbsCurves, UsdProcGenerativeProcedural, UsdGeomPlane, UsdVolVolume, UsdGeomCapsule, UsdGeomCapsule_1, UsdGeomCone, UsdGeomCylinder_1, UsdGeomTetMesh, UsdGeomCylinder, UsdGeomPoints, UsdSkelRoot, UsdSkelSkeleton, UsdLuxRectLight, UsdGeomCube, UsdGeomSphere, UsdLuxCylinderLight, UsdLuxPortalLight, UsdLuxDiskLight, UsdLuxSphereLight, UsdGeomCurves, UsdGeomGprim, UsdLuxBoundableLightBase, and UsdGeomPointBased.
USDGEOM_API bool UsdGeomBoundable::ComputeExtent | ( | const UsdTimeCode & | time, |
VtVec3fArray * | extent | ||
) |
If an extent is authored on this boundable, it queries the extent
from the extent attribute, otherwise if ComputeExtentFunction is registered for the boundable's type, it computes the extent
at time
. Returns true when extent is successfully populated, false otherwise.
|
static |
Compute the extent for the Boundable prim boundable
at time time
. If successful, populates extent
with the result and returns true
, otherwise returns false
.
The extent computation is based on the concrete type of the prim represented by boundable
. Plugins that provide a Boundable prim type may implement and register an extent computation for that type using UsdGeomRegisterComputeExtentFunction. ComputeExtentFromPlugins will use this function to compute extents for all prims of that type. If no function has been registered for a prim type, but a function has been registered for one of its base types, that function will be used instead.
|
static |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Computes the extent as if the matrix transform
was first applied.
USDGEOM_API UsdAttribute UsdGeomBoundable::CreateExtentAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetExtentAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
|
static |
Return a UsdGeomBoundable holding the prim adhering to this schema at path
on stage
. If no prim exists at path
on stage
, or if the prim at that path does not adhere to this schema, return an invalid schema object. This is shorthand for the following:
USDGEOM_API UsdAttribute UsdGeomBoundable::GetExtentAttr | ( | ) | const |
Extent is a three dimensional range measuring the geometric extent of the authored gprim in its own local space (i.e. its own transform not applied), without accounting for any shader-induced displacement. If any extent value has been authored for a given Boundable, then it should be authored at every timeSample at which geometry-affecting properties are authored, to ensure correct evaluation via ComputeExtent(). If no extent value has been authored, then ComputeExtent() will call the Boundable's registered ComputeExtentFunction(), which may be expensive, which is why we strongly encourage proper authoring of extent.
An authored extent on a prim which has children is expected to include the extent of all children, as they will be pruned from BBox computation during traversal.
Declaration | float3[] extent |
C++ Type | VtArray<GfVec3f> |
Usd Type | SdfValueTypeNames->Float3Array |
|
static |
Return a vector of names of all pre-declared attributes for this schema class and all its ancestor classes. Does not include attributes that may be authored by custom/extended methods of the schemas involved.
|
friend |
Definition at line 141 of file boundable.h.
|
static |
Compile time constant representing what kind of schema this class is.
Definition at line 88 of file boundable.h.