7 #ifndef USDGEOM_GENERATED_POINTINSTANCER_H
8 #define USDGEOM_GENERATED_POINTINSTANCER_H
351 static const TfType &_GetStaticTfType();
353 static bool _IsTypedSchema();
357 const TfType &_GetTfType()
const override;
795 VtInt64Array
const *
ids =
nullptr)
const;
812 const int elementSize = 1);
937 const std::vector<UsdTimeCode>& times,
997 const VtIntArray& protoIndices,
998 const VtVec3fArray& positions,
999 const VtVec3fArray& velocities,
1001 const VtVec3fArray& accelerations,
1002 const VtVec3fArray& scales,
1003 const VtQuatfArray& orientations,
1004 const VtVec3fArray& angularVelocities,
1007 const std::vector<bool>&
mask,
1008 float velocityScale = 1.0);
1020 const VtIntArray& protoIndices,
1021 const VtVec3fArray& positions,
1022 const VtVec3fArray& velocities,
1024 const VtVec3fArray& accelerations,
1025 const VtVec3fArray& scales,
1026 const VtQuathArray& orientations,
1027 const VtVec3fArray& angularVelocities,
1030 const std::vector<bool>&
mask,
1031 float velocityScale = 1.0);
1037 bool _GetPrototypePathsForInstanceTransforms(
1038 const VtIntArray& protoIndices,
1043 bool _GetProtoIndicesForInstanceTransforms(
1045 VtIntArray* protoIndices)
const;
1050 bool _ComputePointInstancerAttributesPreamble(
1054 VtIntArray* protoIndices,
1056 std::vector<bool>*
mask)
const;
1063 template<
class QuatType>
1064 bool _DoComputeInstanceTransformsAtTimes(
1066 const std::vector<UsdTimeCode>& times,
1073 template <
class QuatType>
1074 static bool _DoComputeInstanceTransformsAtTime(
1078 const VtIntArray& protoIndices,
1079 const VtVec3fArray& positions,
1080 const VtVec3fArray& velocities,
1082 const VtVec3fArray& accelerations,
1083 const VtVec3fArray& scales,
1085 const VtVec3fArray& angularVelocities,
1088 const std::vector<bool>&
mask,
1089 float velocityScale = 1.0);
1130 VtVec3fArray* extent,
1138 VtVec3fArray* extent,
1158 std::vector<VtVec3fArray>* extents,
1159 const std::vector<UsdTimeCode>& times,
1167 std::vector<VtVec3fArray>* extents,
1168 const std::vector<UsdTimeCode>& times,
1182 bool _ComputeExtentAtTimePreamble(
1184 VtIntArray* protoIndices,
1185 std::vector<bool>*
mask,
1189 bool _ComputeExtentFromTransforms(
1190 VtVec3fArray* extent,
1191 const VtIntArray& protoIndices,
1192 const std::vector<bool>&
mask,
1195 const VtMatrix4dArray& instanceTransforms,
1199 bool _ComputeExtentAtTime(
1200 VtVec3fArray* extent,
1205 bool _ComputeExtentAtTimes(
1206 std::vector<VtVec3fArray>* extent,
1207 const std::vector<UsdTimeCode>& times,
1216 const int elementSize)
1222 size_t maskSize = mask.size();
1223 if (maskSize == 0 || dataArray->size() == (size_t)elementSize){
1226 else if ((maskSize * elementSize) != dataArray->size()){
1227 TF_WARN(
"Input mask's size (%zu) is not compatible with the "
1228 "input dataArray (%zu) and elementSize (%d).",
1229 maskSize, dataArray->size(), elementSize);
1233 T* beginData = dataArray->data();
1234 T* currData = beginData;
1235 size_t numPreserved = 0;
1236 for (
size_t i = 0; i < maskSize; ++i) {
1239 for (
int j = 0;
j < elementSize; ++
j) {
1240 *currData = beginData[i +
j];
1243 numPreserved += elementSize;
1246 if (numPreserved < dataArray->
size()) {
1247 dataArray->resize(numPreserved);
Exclude the transform on the proto's root.
UsdGeomPointInstancer(const UsdSchemaBase &schemaObj)
Compute and apply the PointInstancer mask.
USDGEOM_API UsdRelationship CreatePrototypesRel() const
USDGEOM_API bool DeactivateIds(VtInt64Array const &ids) const
static constexpr UsdTimeCode Default()
USDGEOM_API bool ComputeExtentAtTimes(std::vector< VtVec3fArray > *extents, const std::vector< UsdTimeCode > ×, const UsdTimeCode baseTime) const
USDGEOM_API UsdAttribute CreateOrientationsAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
GT_API const UT_StringHolder time
#define PXR_NAMESPACE_OPEN_SCOPE
USDGEOM_API UsdAttribute CreatePositionsAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
USDGEOM_API UsdAttribute CreateIdsAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
GLsizei const GLchar *const * path
static const UsdSchemaKind schemaKind
USDGEOM_API bool ActivateId(int64_t id) const
USDGEOM_API UsdRelationship GetPrototypesRel() const
USDGEOM_API UsdAttribute CreateAngularVelocitiesAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
UsdGeomPointInstancer(const UsdPrim &prim=UsdPrim())
USDGEOM_API UsdAttribute CreateAccelerationsAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
UsdStagePtr UsdStageWeakPtr
USDGEOM_API UsdAttribute CreateScalesAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
USDGEOM_API UsdAttribute CreateProtoIndicesAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
static bool ApplyMaskToArray(std::vector< bool > const &mask, VtArray< T > *dataArray, const int elementSize=1)
static USDGEOM_API const TfTokenVector & GetSchemaAttributeNames(bool includeInherited=true)
Represents a concrete typed schema.
USDGEOM_API UsdAttribute GetOrientationsAttr() const
USDGEOM_API UsdAttribute GetPositionsAttr() const
USDGEOM_API bool InvisIds(VtInt64Array const &ids, UsdTimeCode const &time) const
std::vector< class SdfPath > SdfPathVector
USDGEOM_API size_t GetInstanceCount(UsdTimeCode timeCode=UsdTimeCode::Default()) const
USDGEOM_API bool UsdGeomPointInstancerSetOrMergeOverOp(std::vector< int64_t > const &items, SdfListOpType op, UsdPrim const &prim, TfToken const &metadataName)
USDGEOM_API UsdAttribute GetScalesAttr() const
USDGEOM_API UsdAttribute GetAccelerationsAttr() const
virtual USDGEOM_API ~UsdGeomPointInstancer()
Destructor.
std::vector< TfToken > TfTokenVector
Convenience types.
USDGEOM_API bool ComputeExtentAtTime(VtVec3fArray *extent, const UsdTimeCode time, const UsdTimeCode baseTime) const
static USDGEOM_API UsdGeomPointInstancer Get(const UsdStagePtr &stage, const SdfPath &path)
USDGEOM_API std::vector< bool > ComputeMaskAtTime(UsdTimeCode time, VtInt64Array const *ids=nullptr) const
GA_API const UT_StringHolder transform
USDGEOM_API UsdSchemaKind _GetSchemaKind() const override
USDGEOM_API UsdAttribute CreateInvisibleIdsAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
USDGEOM_API bool UsdGeomPointInstancerApplyNewStyleListOps()
USDGEOM_API UsdAttribute GetVelocitiesAttr() const
USDGEOM_API UsdAttribute GetAngularVelocitiesAttr() const
USDGEOM_API bool VisId(int64_t id, UsdTimeCode const &time) const
USDGEOM_API UsdAttribute GetInvisibleIdsAttr() const
USDGEOM_API bool ActivateAllIds() const
USDGEOM_API UsdAttribute GetOrientationsfAttr() const
#define PXR_NAMESPACE_CLOSE_SCOPE
USDGEOM_API bool InvisId(int64_t id, UsdTimeCode const &time) const
static USDGEOM_API UsdGeomPointInstancer Define(const UsdStagePtr &stage, const SdfPath &path)
USDGEOM_API bool VisIds(VtInt64Array const &ids, UsdTimeCode const &time) const
USDGEOM_API bool ActivateIds(VtInt64Array const &ids) const
USDGEOM_API UsdAttribute CreateVelocitiesAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
USDGEOM_API bool ComputeInstanceTransformsAtTime(VtArray< GfMatrix4d > *xforms, const UsdTimeCode time, const UsdTimeCode baseTime, const ProtoXformInclusion doProtoXforms=IncludeProtoXform, const MaskApplication applyMask=ApplyMask) const
USDGEOM_API bool VisAllIds(UsdTimeCode const &time) const
USDGEOM_API UsdAttribute GetProtoIndicesAttr() const
Ignore the PointInstancer mask.
USDGEOM_API bool UsesOrientationsf(UsdAttribute *rotationsAttr) const
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
USDGEOM_API UsdAttribute CreateOrientationsfAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
USDGEOM_API UsdAttribute GetIdsAttr() const
USDGEOM_API bool DeactivateId(int64_t id) const
Include the transform on the proto's root.