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
316 Get(
const UsdStagePtr &stage,
const SdfPath &path);
355 static const TfType &_GetStaticTfType();
357 static bool _IsTypedSchema();
361 const TfType &_GetTfType()
const override;
764 VtInt64Array
const *ids =
nullptr)
const;
781 const int elementSize = 1);
884 const std::vector<UsdTimeCode>& times,
942 UsdStageWeakPtr& stage,
944 const VtIntArray& protoIndices,
945 const VtVec3fArray& positions,
946 const VtVec3fArray& velocities,
948 const VtVec3fArray& accelerations,
949 const VtVec3fArray& scales,
950 const VtQuathArray& orientations,
951 const VtVec3fArray& angularVelocities,
953 const SdfPathVector& protoPaths,
954 const std::vector<bool>& mask,
955 float velocityScale = 1.0);
961 bool _GetPrototypePathsForInstanceTransforms(
962 const VtIntArray& protoIndices,
963 SdfPathVector* protoPaths)
const;
967 bool _GetProtoIndicesForInstanceTransforms(
969 VtIntArray* protoIndices)
const;
974 bool _ComputePointInstancerAttributesPreamble(
978 VtIntArray* protoIndices,
979 SdfPathVector* protoPaths,
980 std::vector<bool>* mask)
const;
1021 VtVec3fArray* extent,
1029 VtVec3fArray* extent,
1049 std::vector<VtVec3fArray>* extents,
1050 const std::vector<UsdTimeCode>& times,
1058 std::vector<VtVec3fArray>* extents,
1059 const std::vector<UsdTimeCode>& times,
1073 bool _ComputeExtentAtTimePreamble(
1075 VtIntArray* protoIndices,
1076 std::vector<bool>* mask,
1078 SdfPathVector* protoPaths)
const;
1080 bool _ComputeExtentFromTransforms(
1081 VtVec3fArray* extent,
1082 const VtIntArray& protoIndices,
1083 const std::vector<bool>& mask,
1085 const SdfPathVector& protoPaths,
1086 const VtMatrix4dArray& instanceTransforms,
1090 bool _ComputeExtentAtTime(
1091 VtVec3fArray* extent,
1096 bool _ComputeExtentAtTimes(
1097 std::vector<VtVec3fArray>* extent,
1098 const std::vector<UsdTimeCode>& times,
1107 const int elementSize)
1113 size_t maskSize = mask.size();
1114 if (maskSize == 0 || dataArray->
size() == (size_t)elementSize){
1117 else if ((maskSize * elementSize) != dataArray->
size()){
1118 TF_WARN(
"Input mask's size (%zu) is not compatible with the " 1119 "input dataArray (%zu) and elementSize (%d).",
1120 maskSize, dataArray->
size(), elementSize);
1124 T* beginData = dataArray->
data();
1125 T* currData = beginData;
1126 size_t numPreserved = 0;
1127 for (
size_t i = 0; i < maskSize; ++i) {
1130 for (
int j = 0; j < elementSize; ++j) {
1131 *currData = beginData[i + j];
1134 numPreserved += elementSize;
1137 if (numPreserved < dataArray->size()) {
1138 dataArray->
resize(numPreserved);
1159 PXR_NAMESPACE_CLOSE_SCOPE
USDGEOM_API bool VisAllIds(UsdTimeCode const &time) const
Ensure that all instances are visible at time.
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...
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 bool InvisIds(VtInt64Array const &ids, UsdTimeCode const &time) const
Ensure that the instances identified by ids are invisible at time.
USDGEOM_API UsdAttribute GetPositionsAttr() const
Required property.
UsdGeomPointInstancer(const UsdPrim &prim=UsdPrim())
Construct a UsdGeomPointInstancer on UsdPrim prim .
size_t size() const
Return the total number of elements in this array.
#define TF_WARN(...)
Issue a warning, but continue execution.
USDGEOM_API UsdRelationship CreatePrototypesRel() const
See GetPrototypesRel(), and also Create vs Get Property Methods for when to use Get vs Create.
#define TF_CODING_ERROR(fmt, args)
Issue an internal programming error, but continue execution.
USDGEOM_API UsdAttribute GetOrientationsAttr() const
If authored, per-instance orientation of each instance about its prototype's origin,...
ProtoXformInclusion
Encodes whether to include each prototype's root prim's transformation as the most-local component of...
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...
USDGEOM_API bool VisId(int64_t id, UsdTimeCode const &time) const
Ensure that the instance identified by id is visible at time.
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 GetScalesAttr() const
If authored, per-instance scale to be applied to each instance, before any rotation is applied.
Exclude the transform on the proto's root.
Scenegraph object for authoring and retrieving numeric, string, and array valued data,...
USDGEOM_API UsdAttribute GetIdsAttr() const
Ids are optional; if authored, the ids array should be the same length as the protoIndices array,...
USDGEOM_API bool ActivateId(int64_t id) const
Ensure that the instance identified by id is active over all time.
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.
void resize(size_t newSize)
Resize this array.
USDGEOM_API UsdAttribute GetProtoIndicesAttr() const
Required property.
UsdSchemaKind
An enum representing which kind of schema a given schema class belongs to.
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 UsdRelationship GetPrototypesRel() const
Required property.
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 .
Token for efficient comparison, assignment, and hashing of known strings.
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...
Include the transform on the proto's root.
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 UsdAttribute GetVelocitiesAttr() const
If provided, per-instance 'velocities' will be used to compute positions between samples for the 'pos...
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...
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.
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,...
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.
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.
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.
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,...
Represents an arbitrary dimensional rectangular container class.
A path value used to locate objects in layers or scenegraphs.
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 bool ActivateAllIds() const
Ensure that all instances are active over all time.
MaskApplication
Encodes whether to evaluate and apply the PointInstancer's mask to computed results.
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.
Contains an asset path and an optional resolved path.
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 ...
USDGEOM_API UsdAttribute GetAngularVelocitiesAttr() const
If authored, per-instance angular velocity vector to be used for interoplating orientations.
static constexpr UsdTimeCode Default()
Produce a UsdTimeCode representing the sentinel value for 'default'.
USDGEOM_API bool DeactivateIds(VtInt64Array const &ids) const
Ensure that the instances identified by ids are inactive over all time.
TfType represents a dynamic runtime type.
Singleton registry that provides access to schema type information and the prim definitions for regis...
USDGEOM_API UsdAttribute GetInvisibleIdsAttr() const
A list of id's to make invisible at the evaluation time.
Encodes vectorized instancing of multiple, potentially animated, prototypes (object/instance masters)...
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 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.
USDGEOM_API UsdSchemaKind _GetSchemaKind() const override
Returns the kind of schema this class belongs to.
USDGEOM_API bool DeactivateId(int64_t id) const
Ensure that the instance identified by id is inactive over all 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.
Provides a container which may hold any type, and provides introspection and iteration over array typ...
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 bool ActivateIds(VtInt64Array const &ids) const
Ensure that the instances identified by ids are active over all time.
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.
TfToken class for efficient string referencing and hashing, plus conversions to and from stl string c...
USDGEOM_API bool InvisId(int64_t id, UsdTimeCode const &time) const
Ensure that the instance identified by id is invisible at time.
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.
USDGEOM_API UsdAttribute GetAccelerationsAttr() const
If authored, per-instance 'accelerations' will be used with velocities to compute positions between s...