24 #ifndef USDGEOM_GENERATED_POINTINSTANCER_H
25 #define USDGEOM_GENERATED_POINTINSTANCER_H
30 #include "pxr/usd/usdGeom/api.h"
36 #include "pxr/base/vt/value.h"
43 #include "pxr/base/tf/type.h"
45 PXR_NAMESPACE_OPEN_SCOPE
321 Get(
const UsdStagePtr &stage,
const SdfPath &path);
360 static const TfType &_GetStaticTfType();
362 static bool _IsTypedSchema();
366 const TfType &_GetTfType()
const override;
769 VtInt64Array
const *ids =
nullptr)
const;
786 const int elementSize = 1);
889 const std::vector<UsdTimeCode>& times,
949 UsdStageWeakPtr& stage,
951 const VtIntArray& protoIndices,
952 const VtVec3fArray& positions,
953 const VtVec3fArray& velocities,
955 const VtVec3fArray& accelerations,
956 const VtVec3fArray& scales,
957 const VtQuathArray& orientations,
958 const VtVec3fArray& angularVelocities,
960 const SdfPathVector& protoPaths,
961 const std::vector<bool>& mask,
962 float velocityScale = 1.0);
968 bool _GetPrototypePathsForInstanceTransforms(
969 const VtIntArray& protoIndices,
970 SdfPathVector* protoPaths)
const;
974 bool _GetProtoIndicesForInstanceTransforms(
976 VtIntArray* protoIndices)
const;
981 bool _ComputePointInstancerAttributesPreamble(
985 VtIntArray* protoIndices,
986 SdfPathVector* protoPaths,
987 std::vector<bool>* mask)
const;
1028 VtVec3fArray* extent,
1036 VtVec3fArray* extent,
1056 std::vector<VtVec3fArray>* extents,
1057 const std::vector<UsdTimeCode>& times,
1065 std::vector<VtVec3fArray>* extents,
1066 const std::vector<UsdTimeCode>& times,
1080 bool _ComputeExtentAtTimePreamble(
1082 VtIntArray* protoIndices,
1083 std::vector<bool>* mask,
1085 SdfPathVector* protoPaths)
const;
1087 bool _ComputeExtentFromTransforms(
1088 VtVec3fArray* extent,
1089 const VtIntArray& protoIndices,
1090 const std::vector<bool>& mask,
1092 const SdfPathVector& protoPaths,
1093 const VtMatrix4dArray& instanceTransforms,
1097 bool _ComputeExtentAtTime(
1098 VtVec3fArray* extent,
1103 bool _ComputeExtentAtTimes(
1104 std::vector<VtVec3fArray>* extent,
1105 const std::vector<UsdTimeCode>& times,
1114 const int elementSize)
1120 size_t maskSize = mask.size();
1121 if (maskSize == 0 || dataArray->
size() == (size_t)elementSize){
1124 else if ((maskSize * elementSize) != dataArray->
size()){
1125 TF_WARN(
"Input mask's size (%zu) is not compatible with the "
1126 "input dataArray (%zu) and elementSize (%d).",
1127 maskSize, dataArray->
size(), elementSize);
1131 T* beginData = dataArray->
data();
1132 T* currData = beginData;
1133 size_t numPreserved = 0;
1134 for (
size_t i = 0; i < maskSize; ++i) {
1137 for (
int j = 0; j < elementSize; ++j) {
1138 *currData = beginData[i + j];
1141 numPreserved += elementSize;
1144 if (numPreserved < dataArray->size()) {
1145 dataArray->
resize(numPreserved);
1166 PXR_NAMESPACE_CLOSE_SCOPE
USDGEOM_API size_t GetInstanceCount(UsdTimeCode timeCode=UsdTimeCode::Default()) const
Returns the number of instances as defined by the size of the protoIndices array at timeCode...
USDGEOM_API UsdRelationship CreatePrototypesRel() const
See GetPrototypesRel(), and also Create vs Get Property Methods for when to use Get vs Create...
static USDGEOM_API const TfTokenVector & GetSchemaAttributeNames(bool includeInherited=true)
Return a vector of names of all pre-declared attributes for this schema class and all its ancestor cl...
USDGEOM_API bool InvisId(int64_t id, UsdTimeCode const &time) const
Ensure that the instance identified by id is invisible at time.
Compute and apply the PointInstancer mask.
virtual USDGEOM_API ~UsdGeomPointInstancer()
Destructor.
static bool ApplyMaskToArray(std::vector< bool > const &mask, VtArray< T > *dataArray, const int elementSize=1)
Contract dataArray in-place to contain only the elements whose index in mask is true.
USDGEOM_API std::vector< bool > ComputeMaskAtTime(UsdTimeCode time, VtInt64Array const *ids=nullptr) const
Computes a presence mask to be applied to per-instance data arrays based on authored inactiveIds...
USDGEOM_API UsdAttribute CreateIdsAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
See GetIdsAttr(), and also Create vs Get Property Methods for when to use Get vs Create.
UsdGeomPointInstancer(const UsdPrim &prim=UsdPrim())
Construct a UsdGeomPointInstancer on UsdPrim prim .
USDGEOM_API UsdAttribute GetAccelerationsAttr() const
If authored, per-instance 'accelerations' will be used with velocities to compute positions between s...
USDGEOM_API UsdAttribute CreateVelocitiesAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
See GetVelocitiesAttr(), and also Create vs Get Property Methods for when to use Get vs Create...
USDGEOM_API bool DeactivateId(int64_t id) const
Ensure that the instance identified by id is inactive over all time.
#define TF_WARN(...)
Issue a warning, but continue execution.
#define TF_CODING_ERROR(fmt, args)
Issue an internal programming error, but continue execution.
ProtoXformInclusion
Encodes whether to include each prototype's root prim's transformation as the most-local component of...
USDGEOM_API UsdAttribute CreateOrientationsAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
See GetOrientationsAttr(), and also Create vs Get Property Methods for when to use Get vs Create...
static USDGEOM_API UsdGeomPointInstancer Get(const UsdStagePtr &stage, const SdfPath &path)
Return a UsdGeomPointInstancer holding the prim adhering to this schema at path on stage...
USDGEOM_API UsdAttribute CreateProtoIndicesAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
See GetProtoIndicesAttr(), and also Create vs Get Property Methods for when to use Get vs Create...
Exclude the transform on the proto's root.
Scenegraph object for authoring and retrieving numeric, string, and array valued data, sampled over time.
void resize(size_t newSize)
Resize this array.
USDGEOM_API UsdAttribute GetPositionsAttr() const
Required property.
UsdSchemaKind
An enum representing which kind of schema a given schema class belongs to.
USDGEOM_API bool DeactivateIds(VtInt64Array const &ids) const
Ensure that the instances identified by ids are inactive over all time.
static USDGEOM_API UsdGeomPointInstancer Define(const UsdStagePtr &stage, const SdfPath &path)
Attempt to ensure a UsdPrim adhering to this schema at path is defined (according to UsdPrim::IsDefin...
USDGEOM_API bool InvisIds(VtInt64Array const &ids, UsdTimeCode const &time) const
Ensure that the instances identified by ids are invisible at time.
Token for efficient comparison, assignment, and hashing of known strings.
USDGEOM_API UsdAttribute GetAngularVelocitiesAttr() const
If authored, per-instance angular velocity vector to be used for interoplating orientations.
Include the transform on the proto's root.
USDGEOM_API UsdAttribute GetOrientationsAttr() const
If authored, per-instance orientation of each instance about its prototype's origin, represented as a unit length quaternion, which allows us to encode it with sufficient precision in a compact GfQuath.
USDGEOM_API bool ActivateIds(VtInt64Array const &ids) const
Ensure that the instances identified by ids are active over all time.
USDGEOM_API UsdAttribute GetIdsAttr() const
Ids are optional; if authored, the ids array should be the same length as the protoIndices array...
Stores a 4x4 matrix of double elements.
Represent a time value, which may be either numeric, holding a double value, or a sentinel value UsdT...
USDGEOM_API bool UsdGeomPointInstancerSetOrMergeOverOp(std::vector< int64_t > const &items, SdfListOpType op, UsdPrim const &prim, TfToken const &metadataName)
Applies a list operation of type op using items over the existing list operation on prim with the nam...
static const UsdSchemaKind schemaKind
Compile time constant representing what kind of schema this class is.
Boundable introduces the ability for a prim to persistently cache a rectilinear, local-space, extent.
USDGEOM_API UsdAttribute CreateAngularVelocitiesAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
See GetAngularVelocitiesAttr(), and also Create vs Get Property Methods for when to use Get vs Create...
Represents a concrete typed schema.
pointer data()
Return a non-const pointer to this array's data.
UsdPrim is the sole persistent scenegraph object on a UsdStage, and is the embodiment of a "Prim" as ...
std::vector< TfToken > TfTokenVector
Convenience types.
size_t size() const
Return the total number of elements in this array.
USDGEOM_API bool ActivateId(int64_t id) const
Ensure that the instance identified by id is active over all time.
Represents an arbitrary dimensional rectangular container class.
A path value used to locate objects in layers or scenegraphs.
USDGEOM_API UsdAttribute GetScalesAttr() const
If authored, per-instance scale to be applied to each instance, before any rotation is applied...
USDGEOM_API bool UsdGeomPointInstancerApplyNewStyleListOps()
Returns true if list ops should be composed with SdfListOp::ApplyOperations() Returns false if list o...
A UsdRelationship creates dependencies between scenegraph objects by allowing a prim to target other ...
USDGEOM_API UsdAttribute CreatePositionsAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
See GetPositionsAttr(), and also Create vs Get Property Methods for when to use Get vs Create...
MaskApplication
Encodes whether to evaluate and apply the PointInstancer's mask to computed results.
USDGEOM_API UsdAttribute GetVelocitiesAttr() const
If provided, per-instance 'velocities' will be used to compute positions between samples for the 'pos...
USDGEOM_API UsdAttribute GetProtoIndicesAttr() const
Required property.
Contains an asset path and an optional resolved path.
USDGEOM_API bool ActivateAllIds() const
Ensure that all instances are active over all time.
USDGEOM_API UsdAttribute GetInvisibleIdsAttr() const
A list of id's to make invisible at the evaluation time.
USDGEOM_API bool VisId(int64_t id, UsdTimeCode const &time) const
Ensure that the instance identified by id is visible at time.
static constexpr UsdTimeCode Default()
Produce a UsdTimeCode representing the sentinel value for 'default'.
USDGEOM_API bool ComputeExtentAtTime(VtVec3fArray *extent, const UsdTimeCode time, const UsdTimeCode baseTime) const
Compute the extent of the point instancer based on the per-instance, "PointInstancer relative" transf...
USDGEOM_API UsdAttribute CreateInvisibleIdsAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
See GetInvisibleIdsAttr(), and also Create vs Get Property Methods for when to use Get vs Create...
USDGEOM_API UsdAttribute CreateAccelerationsAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
See GetAccelerationsAttr(), and also Create vs Get Property Methods for when to use Get vs Create...
TfType represents a dynamic runtime type.
USDGEOM_API UsdRelationship GetPrototypesRel() const
Required property.
Singleton registry that provides access to schema type information and the prim definitions for regis...
USDGEOM_API bool ComputeExtentAtTimes(std::vector< VtVec3fArray > *extents, const std::vector< UsdTimeCode > ×, const UsdTimeCode baseTime) const
Compute the extent of the point instancer as in ComputeExtentAtTime , but across multiple times ...
Encodes vectorized instancing of multiple, potentially animated, prototypes (object/instance masters)...
USDGEOM_API bool ComputeInstanceTransformsAtTime(VtArray< GfMatrix4d > *xforms, const UsdTimeCode time, const UsdTimeCode baseTime, const ProtoXformInclusion doProtoXforms=IncludeProtoXform, const MaskApplication applyMask=ApplyMask) const
Compute the per-instance, "PointInstancer relative" transforms given the positions, scales, orientations, velocities and angularVelocities at time, as described in Computing an Instance Transform .
USDGEOM_API UsdAttribute CreateScalesAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
See GetScalesAttr(), and also Create vs Get Property Methods for when to use Get vs Create...
USDGEOM_API UsdSchemaKind _GetSchemaKind() const override
Returns the kind of schema this class belongs to.
USDGEOM_API bool VisAllIds(UsdTimeCode const &time) const
Ensure that all instances are visible at time.
The base class for all schema types in Usd.
UsdGeomPointInstancer(const UsdSchemaBase &schemaObj)
Construct a UsdGeomPointInstancer on the prim held by schemaObj .
Ignore the PointInstancer mask.
USDGEOM_API bool VisIds(VtInt64Array const &ids, UsdTimeCode const &time) const
Ensure that the instances identified by ids are visible at time.
USDGEOM_API bool ComputeInstanceTransformsAtTimes(std::vector< VtArray< GfMatrix4d >> *xformsArray, const std::vector< UsdTimeCode > ×, const UsdTimeCode baseTime, const ProtoXformInclusion doProtoXforms=IncludeProtoXform, const MaskApplication applyMask=ApplyMask) const
Compute the per-instance transforms as in ComputeInstanceTransformsAtTime, but using multiple sample ...
Provides a container which may hold any type, and provides introspection and iteration over array typ...
TfToken class for efficient string referencing and hashing, plus conversions to and from stl string c...