7#ifndef USDGEOM_GENERATED_POINTINSTANCER_H
8#define USDGEOM_GENERATED_POINTINSTANCER_H
13#include "pxr/usd/usdGeom/api.h"
19#include "pxr/base/vt/value.h"
26#include "pxr/base/tf/type.h"
28PXR_NAMESPACE_OPEN_SCOPE
345 static const TfType &_GetStaticTfType();
347 static bool _IsTypedSchema();
351 const TfType &_GetTfType()
const override;
789 VtInt64Array
const *ids =
nullptr)
const;
806 const int elementSize = 1);
934 const std::vector<UsdTimeCode>& times,
992 UsdStageWeakPtr& stage,
994 const VtIntArray& protoIndices,
995 const VtVec3fArray& positions,
996 const VtVec3fArray& velocities,
998 const VtVec3fArray& accelerations,
999 const VtVec3fArray& scales,
1000 const VtQuatfArray& orientations,
1001 const VtVec3fArray& angularVelocities,
1003 const SdfPathVector& protoPaths,
1004 const std::vector<bool>& mask,
1005 float velocityScale = 1.0);
1015 UsdStageWeakPtr& stage,
1017 const VtIntArray& protoIndices,
1018 const VtVec3fArray& positions,
1019 const VtVec3fArray& velocities,
1021 const VtVec3fArray& accelerations,
1022 const VtVec3fArray& scales,
1023 const VtQuathArray& orientations,
1024 const VtVec3fArray& angularVelocities,
1026 const SdfPathVector& protoPaths,
1027 const std::vector<bool>& mask,
1028 float velocityScale = 1.0);
1034 bool _GetPrototypePathsForInstanceTransforms(
1035 const VtIntArray& protoIndices,
1036 SdfPathVector* protoPaths)
const;
1040 bool _GetProtoIndicesForInstanceTransforms(
1042 VtIntArray* protoIndices)
const;
1047 bool _ComputePointInstancerAttributesPreamble(
1051 VtIntArray* protoIndices,
1052 SdfPathVector* protoPaths,
1053 std::vector<bool>* mask)
const;
1060 template<
class QuatType>
1061 bool _DoComputeInstanceTransformsAtTimes(
1063 const std::vector<UsdTimeCode>& times,
1070 template <
class QuatType>
1071 static bool _DoComputeInstanceTransformsAtTime(
1073 UsdStageWeakPtr& stage,
1075 const VtIntArray& protoIndices,
1076 const VtVec3fArray& positions,
1077 const VtVec3fArray& velocities,
1079 const VtVec3fArray& accelerations,
1080 const VtVec3fArray& scales,
1082 const VtVec3fArray& angularVelocities,
1084 const SdfPathVector& protoPaths,
1085 const std::vector<bool>& mask,
1086 float velocityScale = 1.0);
1127 VtVec3fArray* extent,
1135 VtVec3fArray* extent,
1155 std::vector<VtVec3fArray>* extents,
1156 const std::vector<UsdTimeCode>& times,
1164 std::vector<VtVec3fArray>* extents,
1165 const std::vector<UsdTimeCode>& times,
1179 bool _ComputeExtentAtTimePreamble(
1181 VtIntArray* protoIndices,
1182 std::vector<bool>* mask,
1184 SdfPathVector* protoPaths)
const;
1186 bool _ComputeExtentFromTransforms(
1187 VtVec3fArray* extent,
1188 const VtIntArray& protoIndices,
1189 const std::vector<bool>& mask,
1191 const SdfPathVector& protoPaths,
1192 const VtMatrix4dArray& instanceTransforms,
1196 bool _ComputeExtentAtTime(
1197 VtVec3fArray* extent,
1202 bool _ComputeExtentAtTimes(
1203 std::vector<VtVec3fArray>* extent,
1204 const std::vector<UsdTimeCode>& times,
1213 const int elementSize)
1219 size_t maskSize = mask.size();
1220 if (maskSize == 0 || dataArray->
size() == (
size_t)elementSize){
1223 else if ((maskSize * elementSize) != dataArray->
size()){
1224 TF_WARN(
"Input mask's size (%zu) is not compatible with the "
1225 "input dataArray (%zu) and elementSize (%d).",
1226 maskSize, dataArray->
size(), elementSize);
1230 T* beginData = dataArray->
data();
1231 T* currData = beginData;
1232 size_t numPreserved = 0;
1233 for (
size_t i = 0; i < maskSize; ++i) {
1236 for (
int j = 0; j < elementSize; ++j) {
1237 *currData = beginData[i + j];
1240 numPreserved += elementSize;
1243 if (numPreserved < dataArray->size()) {
1244 dataArray->
resize(numPreserved);
1259PXR_NAMESPACE_CLOSE_SCOPE
Stores a 4x4 matrix of double elements.
Contains an asset path and optional evaluated and resolved paths.
A path value used to locate objects in layers or scenegraphs.
Token for efficient comparison, assignment, and hashing of known strings.
TfType represents a dynamic runtime type.
Scenegraph object for authoring and retrieving numeric, string, and array valued data,...
Boundable introduces the ability for a prim to persistently cache a rectilinear, local-space,...
Encodes vectorized instancing of multiple, potentially animated, prototypes (object/instance masters)...
USDGEOM_API UsdAttribute GetScalesAttr() const
If authored, per-instance scale to be applied to each instance, before any rotation is applied.
USDGEOM_API bool VisIds(VtInt64Array const &ids, UsdTimeCode const &time) const
Ensure that the instances identified by ids are visible at time.
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 UsdAttribute GetProtoIndicesAttr() const
Required property.
USDGEOM_API bool ActivateIds(VtInt64Array const &ids) const
Ensure that the instances identified by ids are active over all time.
USDGEOM_API bool DeactivateIds(VtInt64Array const &ids) const
Ensure that the instances identified by ids are inactive over all time.
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 ComputeExtentAtTime(VtVec3fArray *extent, const UsdTimeCode time, const UsdTimeCode baseTime, const GfMatrix4d &transform) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
USDGEOM_API UsdAttribute GetVelocitiesAttr() const
If provided, per-instance 'velocities' will be used to compute positions between samples for the 'pos...
USDGEOM_API UsdAttribute GetPositionsAttr() const
Required property.
static const UsdSchemaKind schemaKind
Compile time constant representing what kind of schema this class is.
UsdGeomPointInstancer(const UsdSchemaBase &schemaObj)
Construct a UsdGeomPointInstancer on the prim held by schemaObj .
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 UsdAttribute GetInvisibleIdsAttr() const
A list of id's to make invisible at the evaluation time.
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.
virtual USDGEOM_API ~UsdGeomPointInstancer()
Destructor.
USDGEOM_API UsdRelationship GetPrototypesRel() const
Required property.
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,...
static USDGEOM_API bool ComputeInstanceTransformsAtTime(VtArray< GfMatrix4d > *xforms, UsdStageWeakPtr &stage, UsdTimeCode time, const VtIntArray &protoIndices, const VtVec3fArray &positions, const VtVec3fArray &velocities, UsdTimeCode velocitiesSampleTime, const VtVec3fArray &accelerations, const VtVec3fArray &scales, const VtQuatfArray &orientations, const VtVec3fArray &angularVelocities, UsdTimeCode angularVelocitiesSampleTime, const SdfPathVector &protoPaths, const std::vector< bool > &mask, float velocityScale=1.0)
This is an overloaded member function, provided for convenience. It differs from the above function o...
USDGEOM_API UsdAttribute CreateOrientationsfAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
See GetOrientationsfAttr(), and also Create vs Get Property Methods for when to use Get vs Create.
USDGEOM_API bool ComputeExtentAtTimes(std::vector< VtVec3fArray > *extents, const std::vector< UsdTimeCode > ×, const UsdTimeCode baseTime, const GfMatrix4d &transform) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
USDGEOM_API UsdSchemaKind _GetSchemaKind() const override
Returns the kind of schema this class belongs to.
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,...
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 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.
USDGEOM_API bool ActivateAllIds() const
Ensure that all instances are active over all time.
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.
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 bool ActivateId(int64_t id) const
Ensure that the instance identified by id is active over all 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 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 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 bool VisAllIds(UsdTimeCode const &time) const
Ensure that all instances are visible at 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 InvisId(int64_t id, UsdTimeCode const &time) const
Ensure that the instance identified by id is invisible at time.
ProtoXformInclusion
Flag for.
@ ExcludeProtoXform
Exclude the transform on the proto's root.
@ IncludeProtoXform
Include the transform on the proto's root.
@ ApplyMask
Compute and apply the PointInstancer mask.
@ IgnoreMask
Ignore the PointInstancer mask.
USDGEOM_API bool UsesOrientationsf(UsdAttribute *rotationsAttr) const
Determines if we should prefer orientationsf over orientations based on whether or not orientationsf ...
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 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 UsdAttribute GetIdsAttr() const
Ids are optional; if authored, the ids array should be the same length as the protoIndices array,...
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 bool VisId(int64_t id, UsdTimeCode const &time) const
Ensure that the instance identified by id is visible at time.
USDGEOM_API UsdAttribute GetAccelerationsAttr() const
If authored, per-instance 'accelerations' will be used with velocities to compute positions between s...
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 .
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 GetOrientationsAttr() const
If authored, per-instance orientation of each instance about its prototype's origin,...
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 GetOrientationsfAttr() const
If authored, per-instance orientation of each instance about its prototype's origin,...
UsdGeomPointInstancer(const UsdPrim &prim=UsdPrim())
Construct a UsdGeomPointInstancer on UsdPrim prim .
USDGEOM_API bool DeactivateId(int64_t id) const
Ensure that the instance identified by id is inactive over all time.
USDGEOM_API UsdAttribute GetAngularVelocitiesAttr() const
If authored, per-instance angular velocity vector to be used for interoplating orientations.
USDGEOM_API UsdRelationship CreatePrototypesRel() const
See GetPrototypesRel(), and also Create vs Get Property Methods for when to use Get vs Create.
UsdPrim is the sole persistent scenegraph object on a UsdStage, and is the embodiment of a "Prim" as ...
A UsdRelationship creates dependencies between scenegraph objects by allowing a prim to target other ...
The base class for all schema types in Usd.
Singleton registry that provides access to schema type information and the prim definitions for regis...
Represent a time value, which may be either numeric, holding a double value, or a sentinel value UsdT...
static constexpr UsdTimeCode Default()
Produce a UsdTimeCode representing the sentinel value for 'default'.
Represents an arbitrary dimensional rectangular container class.
Provides a container which may hold any type, and provides introspection and iteration over array typ...
UsdSchemaKind
An enum representing which kind of schema a given schema class belongs to.
@ ConcreteTyped
Represents a concrete typed schema.
size_t size() const
Return the total number of elements in this array.
pointer data()
Return a non-const pointer to this array's data.
void resize(size_t newSize)
Resize this array.
#define TF_CODING_ERROR(fmt, args)
Issue an internal programming error, but continue execution.
#define TF_WARN(...)
Issue a warning, but continue execution.
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...
TfToken class for efficient string referencing and hashing, plus conversions to and from stl string c...
std::vector< TfToken > TfTokenVector
Convenience types.