
A collection of utility algorithms for generating triangulation and quadrangulation of an input topology. More...
Public Member Functions  
HdMeshUtil (HdMeshTopology const *topology, SdfPath const &id)  
HD_API void  EnumerateEdges (std::vector< GfVec2i > *edgeVerticesOut) const 
Return a buffer filled with face vertex index pairs corresponding to the sequence in which edges are visited when iterating through the mesh topology. More...  
Triangulation  
Produces a mesh where each nontriangle face in the base mesh topology is fantriangulated such that the resulting mesh consists entirely of triangles. In order to access perface signals (face color, face selection etc) we need a mapping from primitiveID to authored face index domain. This is encoded in primitiveParams, and computed along with indices. See PrimitiveParamEncoding.  
HD_API void  ComputeTriangleIndices (VtVec3iArray *indices, VtIntArray *primitiveParams, VtIntArray *edgeIndices=nullptr) const 
Return a triangulation of the input topology. More...  
HD_API bool  ComputeTriangulatedFaceVaryingPrimvar (void const *source, int numElements, HdType dataType, VtValue *triangulated) const 
Return a triangulation of a facevarying primvar. More...  
Quadrangulation  
Produces a mesh where each nonquad face in the base mesh topology is quadrangulated such that the resulting mesh consists entirely of quads. Additionally, supports splitting each resulting quad face into a pair of triangles. This is different than simply triangulating the base mesh topology and can be useful for maintaining consistency with quadbased subdivision schemes. In order to access perface signals (face color, face selection etc) we need a mapping from primitiveID to authored face index domain. This is encoded in primitiveParams, and computed along with indices. See PrimitiveParamEncoding.  
HD_API void  ComputeQuadInfo (HdQuadInfo *quadInfo) const 
Generate a quadInfo struct for the input topology. More...  
HD_API void  ComputeQuadIndices (VtIntArray *indices, VtIntArray *primitiveParams, VtVec2iArray *edgeIndices=nullptr) const 
Return quadrangulated indices of the input topology. More...  
HD_API void  ComputeTriQuadIndices (VtIntArray *indices, VtIntArray *primitiveParams, VtVec2iArray *edgeIndices=nullptr) const 
Return triquad indices (triangulated after quadrangulation) of the input topology. More...  
HD_API bool  ComputeQuadrangulatedPrimvar (HdQuadInfo const *qi, void const *source, int numElements, HdType dataType, VtValue *quadrangulated) const 
Return a quadrangulation of a pervertex primvar. More...  
HD_API bool  ComputeQuadrangulatedFaceVaryingPrimvar (void const *source, int numElements, HdType dataType, VtValue *quadrangulated) const 
Return a quadrangulation of a facevarying primvar. More...  
A collection of utility algorithms for generating triangulation and quadrangulation of an input topology.
Definition at line 82 of file meshUtil.h.
HD_API void ComputeQuadIndices  (  VtIntArray *  indices, 
VtIntArray *  primitiveParams,  
VtVec2iArray *  edgeIndices = nullptr 

)  const 
Return quadrangulated indices of the input topology.
indices and primitiveParams are output parameters.
HD_API void ComputeQuadInfo  (  HdQuadInfo *  quadInfo  )  const 
Generate a quadInfo struct for the input topology.
HD_API bool ComputeQuadrangulatedFaceVaryingPrimvar  (  void const *  source, 
int  numElements,  
HdType  dataType,  
VtValue *  quadrangulated  
)  const 
Return a quadrangulation of a facevarying primvar.
source is a buffer of size numElements and type corresponding to dataType (e.g. HdTypeFloatVec3); the result is a VtArray<T> of the correct type written to the variable "quadrangulated". This function returns false if it can't resolve dataType.
HD_API bool ComputeQuadrangulatedPrimvar  (  HdQuadInfo const *  qi, 
void const *  source,  
int  numElements,  
HdType  dataType,  
VtValue *  quadrangulated  
)  const 
Return a quadrangulation of a pervertex primvar.
source is a buffer of size numElements and type corresponding to dataType (e.g. HdTypeFloatVec3); the result is a VtArray<T> of the correct type written to the variable "quadrangulated". This function returns false if it can't resolve dataType.
HD_API void ComputeTriangleIndices  (  VtVec3iArray *  indices, 
VtIntArray *  primitiveParams,  
VtIntArray *  edgeIndices = nullptr 

)  const 
Return a triangulation of the input topology.
indices and primitiveParams are output parameters.
HD_API bool ComputeTriangulatedFaceVaryingPrimvar  (  void const *  source, 
int  numElements,  
HdType  dataType,  
VtValue *  triangulated  
)  const 
Return a triangulation of a facevarying primvar.
source is a buffer of size numElements and type corresponding to dataType (e.g. HdTypeFloatVec3); the result is a VtArray<T> of the correct type written to the variable "triangulated". This function returns false if it can't resolve dataType.
HD_API void ComputeTriQuadIndices  (  VtIntArray *  indices, 
VtIntArray *  primitiveParams,  
VtVec2iArray *  edgeIndices = nullptr 

)  const 
Return triquad indices (triangulated after quadrangulation) of the input topology.
indices and primitiveParams are output parameters.
HD_API void EnumerateEdges  (  std::vector< GfVec2i > *  edgeVerticesOut  )  const 
Return a buffer filled with face vertex index pairs corresponding to the sequence in which edges are visited when iterating through the mesh topology.
The edges of degenerate and hole faces are included so that this sequence will correspond with either base face triangulation or quadrangulation (which typically skips over hole faces) as well as for refined surfaces which take into account faces tagged as holes as well as other nonmanifold faces.