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
325 Get(
const UsdStagePtr &stage,
const SdfPath &path);
364 static const TfType &_GetStaticTfType();
366 static bool _IsTypedSchema();
370 const TfType &_GetTfType()
const override;
773 VtInt64Array
const *ids =
nullptr)
const;
790 const int elementSize = 1);
893 const std::vector<UsdTimeCode>& times,
951 UsdStageWeakPtr& stage,
953 const VtIntArray& protoIndices,
954 const VtVec3fArray& positions,
955 const VtVec3fArray& velocities,
957 const VtVec3fArray& accelerations,
958 const VtVec3fArray& scales,
959 const VtQuathArray& orientations,
960 const VtVec3fArray& angularVelocities,
962 const SdfPathVector& protoPaths,
963 const std::vector<bool>& mask,
964 float velocityScale = 1.0);
970 bool _GetPrototypePathsForInstanceTransforms(
971 const VtIntArray& protoIndices,
972 SdfPathVector* protoPaths)
const;
976 bool _GetProtoIndicesForInstanceTransforms(
978 VtIntArray* protoIndices)
const;
983 bool _ComputePointInstancerAttributesPreamble(
987 VtIntArray* protoIndices,
988 SdfPathVector* protoPaths,
989 std::vector<bool>* mask)
const;
1030 VtVec3fArray* extent,
1038 VtVec3fArray* extent,
1058 std::vector<VtVec3fArray>* extents,
1059 const std::vector<UsdTimeCode>& times,
1067 std::vector<VtVec3fArray>* extents,
1068 const std::vector<UsdTimeCode>& times,
1082 bool _ComputeExtentAtTimePreamble(
1084 VtIntArray* protoIndices,
1085 std::vector<bool>* mask,
1087 SdfPathVector* protoPaths)
const;
1089 bool _ComputeExtentFromTransforms(
1090 VtVec3fArray* extent,
1091 const VtIntArray& protoIndices,
1092 const std::vector<bool>& mask,
1094 const SdfPathVector& protoPaths,
1095 const VtMatrix4dArray& instanceTransforms,
1099 bool _ComputeExtentAtTime(
1100 VtVec3fArray* extent,
1105 bool _ComputeExtentAtTimes(
1106 std::vector<VtVec3fArray>* extent,
1107 const std::vector<UsdTimeCode>& times,
1116 const int elementSize)
1122 size_t maskSize = mask.size();
1123 if (maskSize == 0 || dataArray->
size() == (size_t)elementSize){
1126 else if ((maskSize * elementSize) != dataArray->
size()){
1127 TF_WARN(
"Input mask's size (%zu) is not compatible with the " 1128 "input dataArray (%zu) and elementSize (%d).",
1129 maskSize, dataArray->
size(), elementSize);
1133 T* beginData = dataArray->
data();
1134 T* currData = beginData;
1135 size_t numPreserved = 0;
1136 for (
size_t i = 0; i < maskSize; ++i) {
1139 for (
int j = 0; j < elementSize; ++j) {
1140 *currData = beginData[i + j];
1143 numPreserved += elementSize;
1146 if (numPreserved < dataArray->size()) {
1147 dataArray->
resize(numPreserved);
1168 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...