HDK
|
#include <subset.h>
Public Member Functions | |
UsdGeomSubset (const UsdPrim &prim=UsdPrim()) | |
UsdGeomSubset (const UsdSchemaBase &schemaObj) | |
virtual USDGEOM_API | ~UsdGeomSubset () |
Destructor. More... | |
USDGEOM_API UsdAttribute | GetElementTypeAttr () const |
USDGEOM_API UsdAttribute | CreateElementTypeAttr (VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const |
USDGEOM_API UsdAttribute | GetIndicesAttr () const |
USDGEOM_API UsdAttribute | CreateIndicesAttr (VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const |
USDGEOM_API UsdAttribute | GetFamilyNameAttr () const |
USDGEOM_API UsdAttribute | CreateFamilyNameAttr (VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const |
Public Member Functions inherited from UsdTyped | |
UsdTyped (const UsdPrim &prim=UsdPrim()) | |
UsdTyped (const UsdSchemaBase &schemaObj) | |
virtual USD_API | ~UsdTyped () |
Destructor. More... | |
Public Member Functions inherited from UsdSchemaBase | |
bool | IsConcrete () const |
bool | IsTyped () const |
bool | IsAPISchema () const |
Returns whether this is an API schema or not. More... | |
bool | IsAppliedAPISchema () const |
bool | IsMultipleApplyAPISchema () const |
UsdSchemaKind | GetSchemaKind () const |
Returns the kind of schema this class is. More... | |
USD_API | UsdSchemaBase (const UsdPrim &prim=UsdPrim()) |
Construct and store prim as the held prim. More... | |
USD_API | UsdSchemaBase (const UsdSchemaBase &otherSchema) |
Construct and store for the same prim held by otherSchema . More... | |
virtual USD_API | ~UsdSchemaBase () |
Destructor. More... | |
USD_API | operator bool () const |
UsdPrim | GetPrim () const |
Return this schema object's held prim. More... | |
SdfPath | GetPath () const |
Shorthand for GetPrim()->GetPath(). More... | |
USD_API const UsdPrimDefinition * | GetSchemaClassPrimDefinition () const |
Static Public Member Functions | |
static USDGEOM_API const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
static USDGEOM_API UsdGeomSubset | Get (const UsdStagePtr &stage, const SdfPath &path) |
static USDGEOM_API UsdGeomSubset | Define (const UsdStagePtr &stage, const SdfPath &path) |
static USDGEOM_API UsdGeomSubset | CreateGeomSubset (const UsdGeomImageable &geom, const TfToken &subsetName, const TfToken &elementType, const VtIntArray &indices, const TfToken &familyName=TfToken(), const TfToken &familyType=TfToken()) |
static USDGEOM_API UsdGeomSubset | CreateUniqueGeomSubset (const UsdGeomImageable &geom, const TfToken &subsetName, const TfToken &elementType, const VtIntArray &indices, const TfToken &familyName=TfToken(), const TfToken &familyType=TfToken()) |
static USDGEOM_API std::vector < UsdGeomSubset > | GetAllGeomSubsets (const UsdGeomImageable &geom) |
Returns all the GeomSubsets defined on the given imageable, geom . More... | |
static USDGEOM_API std::vector < UsdGeomSubset > | GetGeomSubsets (const UsdGeomImageable &geom, const TfToken &elementType=TfToken(), const TfToken &familyName=TfToken()) |
static USDGEOM_API TfToken::Set | GetAllGeomSubsetFamilyNames (const UsdGeomImageable &geom) |
static USDGEOM_API bool | SetFamilyType (const UsdGeomImageable &geom, const TfToken &familyName, const TfToken &familyType) |
static USDGEOM_API TfToken | GetFamilyType (const UsdGeomImageable &geom, const TfToken &familyName) |
static USDGEOM_API VtIntArray | GetUnassignedIndices (const UsdGeomImageable &geom, const TfToken &elementType, const TfToken &familyName, const UsdTimeCode &time=UsdTimeCode::EarliestTime()) |
static USDGEOM_API VtIntArray | GetUnassignedIndices (const std::vector< UsdGeomSubset > &subsets, const size_t elementCount, const UsdTimeCode &time=UsdTimeCode::EarliestTime()) |
static USDGEOM_API bool | ValidateSubsets (const std::vector< UsdGeomSubset > &subsets, const size_t elementCount, const TfToken &familyType, std::string *const reason) |
static USDGEOM_API bool | ValidateFamily (const UsdGeomImageable &geom, const TfToken &elementType, const TfToken &familyName, std::string *const reason) |
Static Public Member Functions inherited from UsdTyped | |
static USD_API const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
static USD_API UsdTyped | Get (const UsdStagePtr &stage, const SdfPath &path) |
Static Public Member Functions inherited from UsdSchemaBase | |
static const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
Static Public Attributes | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::ConcreteTyped |
Static Public Attributes inherited from UsdTyped | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::AbstractBase |
Static Public Attributes inherited from UsdSchemaBase | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::AbstractBase |
Protected Member Functions | |
USDGEOM_API UsdSchemaKind | _GetSchemaKind () const override |
Protected Member Functions inherited from UsdTyped | |
USD_API bool | _IsCompatible () const override |
Protected Member Functions inherited from UsdSchemaBase | |
virtual UsdSchemaKind | _GetSchemaType () const |
const TfType & | _GetType () const |
USD_API UsdAttribute | _CreateAttr (TfToken const &attrName, SdfValueTypeName const &typeName, bool custom, SdfVariability variability, VtValue const &defaultValue, bool writeSparsely) const |
Friends | |
class | UsdSchemaRegistry |
Encodes a subset of a piece of geometry (i.e. a UsdGeomImageable) as a set of indices. Currently supports encoding subsets of faces, points, edges, and tetrahedrons.
To apply to a geometric prim, a GeomSubset prim must be the prim's direct child in namespace, and possess a concrete defining specifier (i.e. def). This restriction makes it easy and efficient to discover subsets of a prim. We might want to relax this restriction if it's common to have multiple families of subsets on a gprim and if it's useful to be able to organize subsets belonging to a family under a common scope. See 'familyName' attribute for more info on defining a family of subsets.
Note that a GeomSubset isn't an imageable (i.e. doesn't derive from UsdGeomImageable). So, you can't author visibility for it or override its purpose.
Materials are bound to GeomSubsets just as they are for regular geometry using API available in UsdShade (UsdShadeMaterial::Bind).
For any described attribute Fallback Value or Allowed Values below that are text/tokens, the actual token is published and defined in UsdGeomTokens. So to set an attribute to the value "rightHanded", use UsdGeomTokens->rightHanded as the value.
Construct a UsdGeomSubset on UsdPrim prim
. Equivalent to UsdGeomSubset::Get(prim.GetStage(), prim.GetPath()) for a valid prim
, but will not immediately throw an error for an invalid prim
|
inlineexplicit |
Construct a UsdGeomSubset on the prim held by schemaObj
. Should be preferred over UsdGeomSubset(schemaObj.GetPrim()), as it preserves SchemaBase state.
|
virtual |
Destructor.
|
overrideprotectedvirtual |
Returns the kind of schema this class belongs to.
Reimplemented from UsdTyped.
USDGEOM_API UsdAttribute UsdGeomSubset::CreateElementTypeAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetElementTypeAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDGEOM_API UsdAttribute UsdGeomSubset::CreateFamilyNameAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetFamilyNameAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
|
static |
Creates a new GeomSubset below the given geom
with the given name, subsetName
, element type, elementType
and indices
.
If a subset named subsetName
already exists below geom
, then this updates its attributes with the values of the provided arguments (indices value at time 'default' will be updated) and returns it.
The family type is set / updated on geom
only if a non-empty value is passed in for familyType
and familyName
.
USDGEOM_API UsdAttribute UsdGeomSubset::CreateIndicesAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetIndicesAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
|
static |
Creates a new GeomSubset below the given imageable, geom
with the given name, subsetName
, element type, elementType
and indices
.
If a subset named subsetName
already exists below geom
, then this creates a new subset by appending a suitable index as suffix to subsetName
(eg, subsetName_1) to avoid name collisions.
The family type is set / updated on geom
only if a non-empty value is passed in for familyType
and familyName
.
|
static |
Attempt to ensure a UsdPrim adhering to this schema at path
is defined (according to UsdPrim::IsDefined()) on this stage.
If a prim adhering to this schema at path
is already defined on this stage, return that prim. Otherwise author an SdfPrimSpec with specifier == SdfSpecifierDef and this schema's prim type name for the prim at path
at the current EditTarget. Author SdfPrimSpec s with specifier
== SdfSpecifierDef and empty typeName at the current EditTarget for any nonexistent, or existing but not Defined ancestors.
The given path must be an absolute prim path that does not contain any variant selections.
If it is impossible to author any of the necessary PrimSpecs, (for example, in case path cannot map to the current UsdEditTarget's namespace) issue an error and return an invalid UsdPrim.
Note that this method may return a defined prim whose typeName does not specify this schema class, in case a stronger typeName opinion overrides the opinion at the current EditTarget.
|
static |
Return a UsdGeomSubset holding the prim adhering to this schema at path
on stage
. If no prim exists at path
on stage
, or if the prim at that path does not adhere to this schema, return an invalid schema object. This is shorthand for the following:
|
static |
Returns the names of all the families of GeomSubsets defined on the given imageable, geom
.
|
static |
Returns all the GeomSubsets defined on the given imageable, geom
.
USDGEOM_API UsdAttribute UsdGeomSubset::GetElementTypeAttr | ( | ) | const |
The type of element that the indices target. "elementType" can have one of the following values:
Declaration | uniform token elementType = "face" |
C++ Type | TfToken |
Usd Type | SdfValueTypeNames->Token |
Variability | SdfVariabilityUniform |
Allowed Values | face, point, edge, tetrahedron |
USDGEOM_API UsdAttribute UsdGeomSubset::GetFamilyNameAttr | ( | ) | const |
The name of the family of subsets that this subset belongs to. This is optional and is primarily useful when there are multiple families of subsets under a geometric prim. In some cases, this could also be used for achieving proper roundtripping of subset data between DCC apps. When multiple subsets belonging to a prim have the same familyName, they are said to belong to the family. A familyType value can be encoded on the owner of a family of subsets as a token using the static method UsdGeomSubset::SetFamilyType(). "familyType" can have one of the following values:
Declaration | uniform token familyName = "" |
C++ Type | TfToken |
Usd Type | SdfValueTypeNames->Token |
Variability | SdfVariabilityUniform |
|
static |
Returns the type of family that the GeomSubsets on the given geometric prim geom
, with the given family name, familyName
belong to.
This only returns the token that's encoded on geom
and does not perform any actual validation on the family of GeomSubsets. Please use ValidateFamily() for such validation.
When familyType is not set on geom
, the fallback value UsdTokens->unrestricted is returned.
|
static |
Returns all the GeomSubsets of the given elementType
belonging to the specified family, familyName
on the given imageable, geom
. If elementType
is empty, then subsets containing all element types are returned. If familyName
is left empty, then all subsets of the specified elementType
will be returned.
USDGEOM_API UsdAttribute UsdGeomSubset::GetIndicesAttr | ( | ) | const |
The set of indices included in this subset. The indices need not be sorted, but the same index should not appear more than once. Indices are invalid if outside the range [0, elementCount) for the given time on the parent geometric prim.
Declaration | int[] indices = [] |
C++ Type | VtArray<int> |
Usd Type | SdfValueTypeNames->IntArray |
|
static |
Return a vector of names of all pre-declared attributes for this schema class and all its ancestor classes. Does not include attributes that may be authored by custom/extended methods of the schemas involved.
|
static |
Utility for getting the list of indices that are not assigned to any of the GeomSubsets in the familyName
family on the given geom
at the timeCode, time
, given the element count (total number of indices in the array being subdivided).
For elementType
UsdGeomTokens->edge, the output array of indices should be interpreted in pairs, as each sequential pair of indices corresponds to an edge between the two points. Each edge will be in the order (lowIndex, highIndex).
If the elementType
is not applicable to the given geom
, an empty array is returned and a coding error is issued.
|
static |
subsets
at the timeCode, time
, given the element count (total number of indices in the array being subdivided), elementCount
.
|
static |
This method is used to encode the type of family that the GeomSubsets on the given geometric prim geom
, with the given family name, familyName
belong to.
See UsdGeomSubset::GetFamilyNameAttr for the possible values for familyType
.
When a family of GeomSubsets is tagged as a UsdGeomTokens->partition or UsdGeomTokens->nonOverlapping, the validity of the data (i.e. mutual exclusivity and/or wholeness) is not enforced by the authoring APIs. Use ValidateFamily() to validate the data in a family of GeomSubsets.
geom
.
|
static |
Validates whether the family of subsets identified by the given familyName
and elementType
on the given imageable, geom
contain valid data. If the family is designated as a partition or as non-overlapping using SetFamilyType(), then the validity of the data is checked. If the familyType is "unrestricted", then this performs only bounds checking of the values in the "indices" arrays.
If reason
is not NULL, then it is populated with a string explaining why the family is invalid, if it is invalid.
The python version of this method returns a tuple containing a (bool, string), where the bool has the validity of the family and the string contains the reason (if it's invalid).
|
static |
subsets
, given the total number of elements in the array being subdivided, elementCount
and the familyType
that the subsets belong to. For proper validation of indices in subsets
, all of the GeomSubsets must have the same 'elementType'.
If one or more subsets contain invalid data, then false is returned and reason
is populated with a string explaining the reason why it is invalid.
The python version of this method returns a tuple containing a (bool, string), where the bool has the validity of the subsets and the string contains the reason (if they're invalid).
|
friend |
|
static |
Compile time constant representing what kind of schema this class is.