HDK
|
A mesh of polygons. More...
#include <GT_PrimPolygonMesh.h>
Public Member Functions | |
GT_PrimPolygonMesh () | |
Default constructor. More... | |
GT_PrimPolygonMesh (const GT_DataArrayHandle &vtx_counts, const GT_DataArrayHandle &vtx_indices, const GT_AttributeListHandle &shared, const GT_AttributeListHandle &vertex, const GT_AttributeListHandle &uniform, const GT_AttributeListHandle &detail, GT_IndexingMode indexing=GT_INDEXING_QUICK, GT_Size min_vertex_count=0, GT_Size max_vertex_count=0) | |
Useful constructor. More... | |
GT_PrimPolygonMesh (const GT_CountArray &vtx_counts, const GT_DataArrayHandle &vtx_indices, const GT_AttributeListHandle &shared, const GT_AttributeListHandle &vertex, const GT_AttributeListHandle &uniform, const GT_AttributeListHandle &detail) | |
GT_PrimPolygonMesh (const GT_PrimPolygonMesh &pmesh, const GT_AttributeListHandle &shared, const GT_AttributeListHandle &vertex, const GT_AttributeListHandle &uniform, const GT_AttributeListHandle &detail) | |
GT_PrimPolygonMesh (const GT_PrimPolygonMesh &pmesh, const GT_DataArrayHandle &vtx_indices, const GT_AttributeListHandle &shared) | |
GT_PrimPolygonMesh (const GT_PrimPolygonMesh &pmesh) | |
Copy c-tor. More... | |
GT_PrimPolygonMesh (const GT_PrimPolygon &poly) | |
Construct a polygon mesh from a GT_PrimPolygon. More... | |
const char * | className () const override |
bool | save (UT_JSONWriter &w) const override |
GT_Size | getFaceCount () const |
Return the number of faces in the mesh. More... | |
GT_PrimitiveHandle | getFace (GT_Offset i) const |
Return a pointer to the individual face. More... | |
GT_Size | getVertexCount () const |
Return the number of vertices. More... | |
GT_Size | getPointCount () const |
Return the number of points. More... | |
GT_PrimitiveHandle | doHarden () const override |
Harden all attributes so there are no dangling dependencies. More... | |
GT_PrimitiveHandle | doSoftCopy () const override |
GT_PrimitiveHandle | doAttributeMerge (const GT_Primitive &src, const UT_StringMMPattern *vertex, const UT_StringMMPattern *point, const UT_StringMMPattern *uniform, const UT_StringMMPattern *detail) const override |
The virtual implementation of attribute merging. More... | |
GT_Offset | getPoint (GT_Offset face, GT_Offset v) const |
Return the point index for a given face and vertex. More... | |
GT_Offset | getVertexOffset (GT_Offset face) const |
Return the offset into the vertex list for the given face. More... | |
GT_Size | getVertexCount (GT_Offset face) const |
Return the length of the vertex list for the given face. More... | |
void | getEdgePoints (GT_Offset face, GT_Offset vertex, GT_Offset &p0, GT_Offset &p1) const |
bool | isConvexed () const |
Returns true if this mesh has been convexed. More... | |
void | setConvexed (bool c) |
Set the convex flag on the mesh. More... | |
GT_DataArrayHandle | getFaceCounts (GT_IndexingMode indexing=GT_INDEXING_QUICK) const |
Return an array containing the face counts per-face. More... | |
const GT_DataArrayHandle | getUsedPointList (GT_IndexingMode idx=GT_INDEXING_QUICK) const |
GT_PrimitiveHandle | convex (int max_points_per_poly=3, bool keep_degenerate=false, bool allow_interrupt=true, bool allow_indirect_flattening=false, const UT_Set< int > *holes=nullptr) const |
GT_PrimitiveHandle | adoptConvexing (const GT_DataArrayHandle &verts, const GT_DataArrayHandle &uniform_indexing, const GT_DataArrayHandle &vertex_indexing, const GT_DataArrayHandle &vert_info, const GT_DataArrayHandle &prim_info) const |
void | getConvexArrays (GT_DataArrayHandle &verts, GT_DataArrayHandle &uniform_indexing, GT_DataArrayHandle &vertex_indexing, GT_DataArrayHandle &vert_info, GT_DataArrayHandle &prim_info) const |
UT_IntrusivePtr < GT_PrimPolygonMesh > | removeUnusedPoints (const int32 *idx=nullptr) const |
GT_PrimPolygonMesh * | createPointNormalsIfMissing (const UT_StringRef &P=GA_Names::P, bool normalize=true, bool *error=nullptr) const |
Create point normals on a new mesh if no normals are found. If no point or vertex normals are found, generate point normals from P and return a new mesh. If normals are found, return NULL. More... | |
GT_PrimPolygonMesh * | createVertexNormalsIfMissing (const UT_StringRef &P=GA_Names::P, fpreal cuspangledegrees=GT_DEFAULT_ADJUSTED_CUSP_ANGLE, bool normalize=true, bool *error=nullptr) const |
GT_PrimPolygonMesh * | createTangentsIfMissing (bool *error=nullptr) |
bool | createFastTangents (GT_DataArrayHandle *tanu_h, GT_DataArrayHandle *tanv_h) const |
bool | splitMesh (GT_Size polygon_limit, UT_Array< GT_PrimitiveHandle > &split_meshes, bool remove_unused_points=true) const |
Divide a mesh into smaller meshes if it exceeds the poly_limit. If this mesh has more than polygon_limit polygons, this will split the mesh into multiple sub-meshes, attempting to keep them all roughly the same number of polygons. If this mesh has fewer than polygon_limit polygons, it will return false and not add any meshes to split_meshes. If remove_unused_points is true, each submesh will have unused points removed. More... | |
bool | partitionByMaterial (const GT_DataArrayHandle &mat_id, UT_Array< GT_PrimitiveHandle > &sub_meshes, GT_Size polygon_limit=SYS_INT32_MAX) const |
bool | updateGeoPrim (const GU_ConstDetailHandle &dtl, const GT_RefineParms &refine) override |
update any cached data for geometry and its attributes More... | |
void | enlargeBounds (UT_BoundingBox boxes[], int nsegments) const override |
int | getPrimitiveType () const override |
bool | refine (GT_Refine &refiner, const GT_RefineParms *parms) const override |
int | getMotionSegments () const override |
int64 | getMemoryUsage () const override |
void | init (const GT_DataArrayHandle &vtx_counts, const GT_DataArrayHandle &vtx_indices, const GT_AttributeListHandle &shared, const GT_AttributeListHandle &vertex, const GT_AttributeListHandle &uniform, const GT_AttributeListHandle &detail, GT_IndexingMode indexing=GT_INDEXING_QUICK, GT_Size min_vertex_count=0, GT_Size max_vertex_count=0) |
void | init (const GT_CountArray &vtx_counts, const GT_DataArrayHandle &vtx_indices, const GT_AttributeListHandle &shared, const GT_AttributeListHandle &vertex, const GT_AttributeListHandle &uniform, const GT_AttributeListHandle &detail) |
GT_Size | getMinVertexCount () const |
GT_Size | getMaxVertexCount () const |
const GT_DataArrayHandle & | getVertexList () const override |
const GT_CountArray & | getFaceCountArray () const |
const GT_AttributeListHandle & | getShared () const |
const GT_AttributeListHandle & | getVertex () const |
const GT_AttributeListHandle & | getUniform () const |
const GT_AttributeListHandle & | getDetail () const |
const GT_ElementSetMapPtr & | pointSetMap () const |
void | setPointSetMap (const GT_ElementSetMapPtr &v) |
void | addPointSet (const UT_StringHolder &name, const GT_ElementSetPtr &set) |
const GT_ElementSetMapPtr & | faceSetMap () const |
void | setFaceSetMap (const GT_ElementSetMapPtr &v) |
void | addFaceSet (const UT_StringHolder &name, const GT_ElementSetPtr &set) |
const GT_AttributeListHandle & | getVertexAttributes () const override |
const GT_AttributeListHandle & | getPointAttributes () const override |
const GT_AttributeListHandle & | getUniformAttributes () const override |
const GT_AttributeListHandle & | getDetailAttributes () const override |
bool | faceNormals (UT_Vector3 *N, int segment=0, const UT_StringRef &P=GA_Names::P) const |
bool | faceNormals (UT_Vector3D *N64, int segment=0, const UT_StringRef &P=GA_Names::P) const |
bool | faceNormals (fpreal16 *N16, int segment=0, const UT_StringRef &P=GA_Names::P) const |
GT_DataArrayHandle | faceNormals (int segment=0, const UT_StringRef &P=GA_Names::P, GT_Storage store=GT_STORE_REAL32) const |
bool | pointNormals (UT_Vector3T< fpreal16 > *N, GT_Size npts, int segment=0, const UT_StringRef &P=GA_Names::P, bool normalize=true, const fpreal32 *pntdata=nullptr) const |
bool | pointNormals (UT_Vector3 *N, GT_Size npts, int segment=0, const UT_StringRef &P=GA_Names::P, bool normalize=true, const fpreal32 *pntdata=nullptr) const |
bool | pointNormals (UT_Vector3D *N, GT_Size npts, int segment=0, const UT_StringRef &P=GA_Names::P, bool normalize=true, const fpreal32 *pntdata=nullptr) const |
GT_DataArrayHandle | createPointNormals (int segment=0, const UT_StringRef &P=GA_Names::P, bool normalize=true, const fpreal32 *pntdata=nullptr, GT_Storage store=GT_STORE_REAL32) const override |
bool | vertexNormals (UT_Vector3T< fpreal16 > *N, GT_Size npts, int segment=0, const UT_StringRef &P=GA_Names::P, fpreal maxangledegrees=GT_DEFAULT_ADJUSTED_CUSP_ANGLE, bool normalize=true) const |
bool | vertexNormals (UT_Vector3 *N, GT_Size npts, int segment=0, const UT_StringRef &P=GA_Names::P, fpreal maxangledegrees=GT_DEFAULT_ADJUSTED_CUSP_ANGLE, bool normalize=true) const |
bool | vertexNormals (UT_Vector3D *N, GT_Size npts, int segment=0, const UT_StringRef &P=GA_Names::P, fpreal maxangledegrees=GT_DEFAULT_ADJUSTED_CUSP_ANGLE, bool normalize=true) const |
virtual GT_DataArrayHandle | createVertexNormals (int segment=0, const UT_StringRef &P=GA_Names::P, fpreal maxangledegrees=GT_DEFAULT_ADJUSTED_CUSP_ANGLE, bool normalize=true, GT_Storage store=GT_STORE_REAL32) const |
fpreal | computePerimeter (int seg) const override |
fpreal | computeSurfaceArea (int seg) const override |
fpreal | computeVolume (const UT_Vector3 &ref_P, int seg) const override |
Public Member Functions inherited from GT_Primitive | |
GT_Primitive () | |
GT_Primitive (const GT_Primitive &src) | |
virtual | ~GT_Primitive () |
virtual bool | getUniqueID (int64 &id) const |
virtual void | enlargeRenderBounds (UT_BoundingBox boxes[], int nsegments) const |
virtual void | getVelocityRange (UT_Vector3 &min, UT_Vector3 &max, const UT_StringRef &attribute_name=GA_Names::v) const |
const GT_TransformHandle & | getPrimitiveTransform () const |
void | setPrimitiveTransform (const GT_TransformHandle &x) |
Set the transform for a the primitive. More... | |
GT_PrimitiveHandle | clone () const |
virtual bool | hasDataArray (const UT_StringRef &name, GT_Owner owner_scope[], int num_owners, GT_Storage *storage=NULL, GT_Size *tuple_size=NULL) const |
void | setStaticGeometry (bool static_geo) |
Return true if the primitive represents geometry at frame 'fr'. More... | |
bool | isStaticGeometry () const |
bool | isFrameInfoAvailable () const |
bool | getDataIdHash (int64 &hash, int segment=0, bool cache_data_id=false) const |
virtual bool | getTopologyVersion (int64 &version) const |
Returns the topology version for the primitive. More... | |
GT_DataArrayHandle | findAttribute (const UT_StringRef &name, GT_Owner &owner, int segment) const |
void | dumpAttributeLists (const char *label, bool data_too) const |
print out all attribute lists More... | |
void | dumpPrimitive () const |
bool | saveAttributeLists (UT_JSONWriter &w) const |
virtual const GT_ViewportRefineOptions & | viewportRefineOptions () const |
GT_PrimitiveHandle | harden () const |
GT_PrimitiveHandle | copyTransformed (const GT_TransformHandle &x, bool force=false) const |
void | refineCopyTransformFrom (const GT_Primitive &src) |
GT_PrimitiveHandle | attributeMerge (const GT_Primitive &src, const UT_StringMMPattern *vertex_pattern, const UT_StringMMPattern *point_pattern, const UT_StringMMPattern *uniform_pattern, const UT_StringMMPattern *detail_pattern) const |
bool | enlargeWidth (UT_BoundingBox boxes[], int nsegments, fpreal defwidth=-1) const |
const GT_AttributeListHandle & | getAttributeList (GT_Owner owner) const |
Public Member Functions inherited from UT_IntrusiveRefCounter< GT_Primitive > | |
SYS_FORCE_INLINE | UT_IntrusiveRefCounter () noexcept |
Default constructor: Sets counter to 0. More... | |
SYS_FORCE_INLINE | UT_IntrusiveRefCounter (const UT_IntrusiveRefCounter &) noexcept |
Copy constructor: Sets counter to 0. More... | |
UT_IntrusiveRefCounter & | operator= (const UT_IntrusiveRefCounter &) noexcept |
Assignment operator: Does not modify counter. More... | |
SYS_FORCE_INLINE uint32 | use_count () const noexcept |
Return current counter. More... | |
SYS_FORCE_INLINE bool | conditionalAddRef () noexcept |
Protected Member Functions | |
void | hardenAttributes () |
virtual GT_PrimPolygonMesh * | clone (const GT_DataArrayHandle &vtx_counts, const GT_DataArrayHandle &vtx_indices, const GT_AttributeListHandle &shared, const GT_AttributeListHandle &vertex, const GT_AttributeListHandle &uniform, const GT_AttributeListHandle &detail, GT_IndexingMode indexing=GT_INDEXING_QUICK, GT_Size min_vertex_count=0, GT_Size max_vertex_count=0) const |
virtual GT_PrimPolygonMesh * | clone (const GT_CountArray &vtx_counts, const GT_DataArrayHandle &vtx_indices, const GT_AttributeListHandle &shared, const GT_AttributeListHandle &vertex, const GT_AttributeListHandle &uniform, const GT_AttributeListHandle &detail) const |
virtual GT_PrimPolygonMesh * | clone (const GT_AttributeListHandle &shared, const GT_AttributeListHandle &vertex, const GT_AttributeListHandle &uniform, const GT_AttributeListHandle &detail) const |
virtual GT_PrimPolygonMesh * | clone (const GT_DataArrayHandle &vtx_indices, const GT_AttributeListHandle &shared) const |
Protected Member Functions inherited from GT_Primitive | |
void | enlargeP (UT_BoundingBox &box, const GT_AttributeListHandle &list, int segment) const |
void | enlargeP (UT_BoundingBox &B, const GT_DataArrayHandle &P) const |
Convenience method to enlarge a bounding box given a position attribute. More... | |
void | enlargePw (UT_BoundingBox &B, const GT_DataArrayHandle &P) const |
Protected Member Functions inherited from UT_IntrusiveRefCounter< GT_Primitive > | |
SYS_FORCE_INLINE | ~UT_IntrusiveRefCounter () |
Destructor: Only derived classes can destruct this. More... | |
Protected Attributes | |
GT_AttributeListHandle | myShared |
GT_AttributeListHandle | myVertex |
GT_AttributeListHandle | myUniform |
GT_AttributeListHandle | myDetail |
Additional Inherited Members | |
Static Public Member Functions inherited from GT_Primitive | |
static int | createPrimitiveTypeId () |
static GT_AttributeListHandle | mergeAttributeLists (bool &changed, const GT_AttributeListHandle &src, const GT_AttributeListHandle &merge, const UT_StringMMPattern *pattern, const UT_StringMMPattern *alternate=NULL) |
static bool | computeVelocityRange (UT_Vector3 &vmin, UT_Vector3 &vmax, const GT_DataArrayHandle &v) |
static GT_PrimitiveHandle | refineDetail (const GU_ConstDetailHandle &detail, const GT_RefineParms *parms) |
static GT_PrimitiveHandle | refinePrimitive (const GT_PrimitiveHandle &primh, const GT_RefineParms *parms) |
static void * | operator new (size_t size) |
static void * | operator new (size_t size, void *p) |
static void | operator delete (void *p, size_t size) |
A mesh of polygons.
Definition at line 35 of file GT_PrimPolygonMesh.h.
|
inline |
Default constructor.
Definition at line 39 of file GT_PrimPolygonMesh.h.
|
inline |
Useful constructor.
Definition at line 46 of file GT_PrimPolygonMesh.h.
|
inline |
Definition at line 63 of file GT_PrimPolygonMesh.h.
GT_PrimPolygonMesh::GT_PrimPolygonMesh | ( | const GT_PrimPolygonMesh & | pmesh, |
const GT_AttributeListHandle & | shared, | ||
const GT_AttributeListHandle & | vertex, | ||
const GT_AttributeListHandle & | uniform, | ||
const GT_AttributeListHandle & | detail | ||
) |
Copy the topology information from the source pmesh, but use different attribute lists.
GT_PrimPolygonMesh::GT_PrimPolygonMesh | ( | const GT_PrimPolygonMesh & | pmesh, |
const GT_DataArrayHandle & | vtx_indices, | ||
const GT_AttributeListHandle & | shared | ||
) |
Create a new polygon mesh with re-mapped vertices (used by removeUnusedPoints).
Since the polygon faces are remapped you'll have to pass in a new face set map.
GT_PrimPolygonMesh::GT_PrimPolygonMesh | ( | const GT_PrimPolygonMesh & | pmesh | ) |
Copy c-tor.
GT_PrimPolygonMesh::GT_PrimPolygonMesh | ( | const GT_PrimPolygon & | poly | ) |
Construct a polygon mesh from a GT_PrimPolygon.
void GT_PrimPolygonMesh::addFaceSet | ( | const UT_StringHolder & | name, |
const GT_ElementSetPtr & | set | ||
) |
Access to the face sets
void GT_PrimPolygonMesh::addPointSet | ( | const UT_StringHolder & | name, |
const GT_ElementSetPtr & | set | ||
) |
Access to the point sets
GT_PrimitiveHandle GT_PrimPolygonMesh::adoptConvexing | ( | const GT_DataArrayHandle & | verts, |
const GT_DataArrayHandle & | uniform_indexing, | ||
const GT_DataArrayHandle & | vertex_indexing, | ||
const GT_DataArrayHandle & | vert_info, | ||
const GT_DataArrayHandle & | prim_info | ||
) | const |
Using the indirect arrays and vertex list from a convexed mesh, convex this mesh (assumes topology is the same).
|
inlineoverridevirtual |
Implements GT_Primitive.
Reimplemented in GT_PrimSubdivisionMesh.
Definition at line 99 of file GT_PrimPolygonMesh.h.
|
inlineprotectedvirtual |
Reimplemented in GT_PrimSubdivisionMesh.
Definition at line 441 of file GT_PrimPolygonMesh.h.
|
inlineprotectedvirtual |
Reimplemented in GT_PrimSubdivisionMesh.
Definition at line 455 of file GT_PrimPolygonMesh.h.
|
inlineprotectedvirtual |
Reimplemented in GT_PrimSubdivisionMesh.
Definition at line 465 of file GT_PrimPolygonMesh.h.
|
inlineprotectedvirtual |
Reimplemented in GT_PrimSubdivisionMesh.
Definition at line 472 of file GT_PrimPolygonMesh.h.
Methods for GEO/GU support.
Reimplemented from GT_Primitive.
Methods for GEO/GU support.
Reimplemented from GT_Primitive.
|
overridevirtual |
Methods for GEO/GU support.
Reimplemented from GT_Primitive.
GT_PrimitiveHandle GT_PrimPolygonMesh::convex | ( | int | max_points_per_poly = 3 , |
bool | keep_degenerate = false , |
||
bool | allow_interrupt = true , |
||
bool | allow_indirect_flattening = false , |
||
const UT_Set< int > * | holes = nullptr |
||
) | const |
Ensure all polygons in the mesh are convex
If the holes
set is passed in, then the faces in that set will be excluded from the convexed result.
bool GT_PrimPolygonMesh::createFastTangents | ( | GT_DataArrayHandle * | tanu_h, |
GT_DataArrayHandle * | tanv_h | ||
) | const |
Create quick tangents (not MikkT) for fast viewer tangent generation. Tangents are not created in this mesh. NOTE: Not working very well yet.
|
overridevirtual |
Compute shared normals. This will use the shared attribute named P to compute the normals for each shared point.
Reimplemented from GT_Primitive.
GT_PrimPolygonMesh* GT_PrimPolygonMesh::createPointNormalsIfMissing | ( | const UT_StringRef & | P = GA_Names::P , |
bool | normalize = true , |
||
bool * | error = nullptr |
||
) | const |
Create point normals on a new mesh if no normals are found. If no point or vertex normals are found, generate point normals from P and return a new mesh. If normals are found, return NULL.
If the segement is less than 0, normals for all segments will be computed (if required)
GT_PrimPolygonMesh* GT_PrimPolygonMesh::createTangentsIfMissing | ( | bool * | error = nullptr | ) |
Create point normals and MikkT tangents on a new mesh if not found. If either normals or tangents are not found, return a new mesh with both generated. If both exist, return NULL.
|
virtual |
Compute vertex normals. This will use the shared attribute named P to compute the normals for each vertex.
GT_PrimPolygonMesh* GT_PrimPolygonMesh::createVertexNormalsIfMissing | ( | const UT_StringRef & | P = GA_Names::P , |
fpreal | cuspangledegrees = GT_DEFAULT_ADJUSTED_CUSP_ANGLE , |
||
bool | normalize = true , |
||
bool * | error = nullptr |
||
) | const |
|
overridevirtual |
The virtual implementation of attribute merging.
Reimplemented from GT_Primitive.
Reimplemented in GT_PrimSubdivisionMesh.
|
overridevirtual |
Harden all attributes so there are no dangling dependencies.
Reimplemented from GT_Primitive.
Reimplemented in GT_PrimSubdivisionMesh.
|
inlineoverridevirtual |
Create a copy of the primitive, referencing all the source data This can return a NULL pointer, but it would be better to implement it properly.
Implements GT_Primitive.
Reimplemented in GT_PrimSubdivisionMesh.
Definition at line 213 of file GT_PrimPolygonMesh.h.
|
overridevirtual |
Methods defined on GT_Primitive
Implements GT_Primitive.
bool GT_PrimPolygonMesh::faceNormals | ( | UT_Vector3 * | N, |
int | segment = 0 , |
||
const UT_StringRef & | P = GA_Names::P |
||
) | const |
Compute face normals. This will use the shared attribute named P to compute the normals for each face. fpreal16 must have the proper vector length
bool GT_PrimPolygonMesh::faceNormals | ( | UT_Vector3D * | N64, |
int | segment = 0 , |
||
const UT_StringRef & | P = GA_Names::P |
||
) | const |
Compute face normals. This will use the shared attribute named P to compute the normals for each face. fpreal16 must have the proper vector length
bool GT_PrimPolygonMesh::faceNormals | ( | fpreal16 * | N16, |
int | segment = 0 , |
||
const UT_StringRef & | P = GA_Names::P |
||
) | const |
Compute face normals. This will use the shared attribute named P to compute the normals for each face. fpreal16 must have the proper vector length
GT_DataArrayHandle GT_PrimPolygonMesh::faceNormals | ( | int | segment = 0 , |
const UT_StringRef & | P = GA_Names::P , |
||
GT_Storage | store = GT_STORE_REAL32 |
||
) | const |
Compute face normals. This will use the shared attribute named P to compute the normals for each face. fpreal16 must have the proper vector length
|
inline |
Access to the face sets
Definition at line 204 of file GT_PrimPolygonMesh.h.
void GT_PrimPolygonMesh::getConvexArrays | ( | GT_DataArrayHandle & | verts, |
GT_DataArrayHandle & | uniform_indexing, | ||
GT_DataArrayHandle & | vertex_indexing, | ||
GT_DataArrayHandle & | vert_info, | ||
GT_DataArrayHandle & | prim_info | ||
) | const |
Fetches the convexed arrays from the mesh, to be used by adoptConvexing on a different mesh with the same topology.
|
inline |
Accessor
Definition at line 189 of file GT_PrimPolygonMesh.h.
|
inlineoverridevirtual |
Access attributes
Reimplemented from GT_Primitive.
Definition at line 233 of file GT_PrimPolygonMesh.h.
void GT_PrimPolygonMesh::getEdgePoints | ( | GT_Offset | face, |
GT_Offset | vertex, | ||
GT_Offset & | p0, | ||
GT_Offset & | p1 | ||
) | const |
For a given face, find the shared point numbers for the given vertex and the next vertex (i.e. the edge starting from the given vertex).
GT_PrimitiveHandle GT_PrimPolygonMesh::getFace | ( | GT_Offset | i | ) | const |
Return a pointer to the individual face.
GT_Size GT_PrimPolygonMesh::getFaceCount | ( | ) | const |
Return the number of faces in the mesh.
|
inline |
Accessor
Definition at line 177 of file GT_PrimPolygonMesh.h.
GT_DataArrayHandle GT_PrimPolygonMesh::getFaceCounts | ( | GT_IndexingMode | indexing = GT_INDEXING_QUICK | ) | const |
Return an array containing the face counts per-face.
|
inline |
Query the minimum/maximum number of vertices per face
Definition at line 170 of file GT_PrimPolygonMesh.h.
|
overridevirtual |
|
inline |
Query the minimum/maximum number of vertices per face
Definition at line 169 of file GT_PrimPolygonMesh.h.
|
overridevirtual |
Methods defined on GT_Primitive
Implements GT_Primitive.
Return the point index for a given face and vertex.
|
inlineoverridevirtual |
Access attributes
Reimplemented from GT_Primitive.
Definition at line 229 of file GT_PrimPolygonMesh.h.
|
inline |
Return the number of points.
Definition at line 162 of file GT_PrimPolygonMesh.h.
|
overridevirtual |
Methods defined on GT_Primitive
Reimplemented from GT_Primitive.
Reimplemented in GT_PrimSubdivisionMesh.
|
inline |
Accessor
Definition at line 183 of file GT_PrimPolygonMesh.h.
|
inline |
Accessor
Definition at line 187 of file GT_PrimPolygonMesh.h.
|
inlineoverridevirtual |
Access attributes
Reimplemented from GT_Primitive.
Definition at line 231 of file GT_PrimPolygonMesh.h.
const GT_DataArrayHandle GT_PrimPolygonMesh::getUsedPointList | ( | GT_IndexingMode | idx = GT_INDEXING_QUICK | ) | const |
The polygon mesh may have shared points which aren't used. That is, there may be elements in the shared element list which aren't referenced by any vertex. This method will build a list of indices for all the used points.
The list returned will be monotonically ascending.
|
inline |
Accessor
Definition at line 185 of file GT_PrimPolygonMesh.h.
|
inlineoverridevirtual |
Access attributes
Reimplemented from GT_Primitive.
Definition at line 227 of file GT_PrimPolygonMesh.h.
|
inline |
Return the number of vertices.
Definition at line 157 of file GT_PrimPolygonMesh.h.
Return the length of the vertex list for the given face.
Definition at line 244 of file GT_PrimPolygonMesh.h.
|
inlineoverridevirtual |
Return the offset into the vertex list for the given face.
Definition at line 241 of file GT_PrimPolygonMesh.h.
|
protected |
void GT_PrimPolygonMesh::init | ( | const GT_DataArrayHandle & | vtx_counts, |
const GT_DataArrayHandle & | vtx_indices, | ||
const GT_AttributeListHandle & | shared, | ||
const GT_AttributeListHandle & | vertex, | ||
const GT_AttributeListHandle & | uniform, | ||
const GT_AttributeListHandle & | detail, | ||
GT_IndexingMode | indexing = GT_INDEXING_QUICK , |
||
GT_Size | min_vertex_count = 0 , |
||
GT_Size | max_vertex_count = 0 |
||
) |
Initialize the mesh
vtx_counts
vtx_indices
shared
vertex
uniform
vtx_counts
array.detail
vtx_counts
array.indexing
void GT_PrimPolygonMesh::init | ( | const GT_CountArray & | vtx_counts, |
const GT_DataArrayHandle & | vtx_indices, | ||
const GT_AttributeListHandle & | shared, | ||
const GT_AttributeListHandle & | vertex, | ||
const GT_AttributeListHandle & | uniform, | ||
const GT_AttributeListHandle & | detail | ||
) |
Initialize the mesh
vtx_counts
vtx_indices
shared
vertex
uniform
vtx_counts
array.detail
vtx_counts
array.indexing
|
inline |
Returns true if this mesh has been convexed.
Definition at line 252 of file GT_PrimPolygonMesh.h.
bool GT_PrimPolygonMesh::partitionByMaterial | ( | const GT_DataArrayHandle & | mat_id, |
UT_Array< GT_PrimitiveHandle > & | sub_meshes, | ||
GT_Size | polygon_limit = SYS_INT32_MAX |
||
) | const |
Partition a mesh into submeshes by the shop_materialpath attribute, each with exact one material in a detail shop_materialpath attribute. Returns false if shop_materialpath doesn't exist, isn't a uniform attrib, or has only 1 material.
bool GT_PrimPolygonMesh::pointNormals | ( | UT_Vector3T< fpreal16 > * | N, |
GT_Size | npts, | ||
int | segment = 0 , |
||
const UT_StringRef & | P = GA_Names::P , |
||
bool | normalize = true , |
||
const fpreal32 * | pntdata = nullptr |
||
) | const |
Compute shared normals. This will use the shared attribute named P to compute the normals for each shared point.
bool GT_PrimPolygonMesh::pointNormals | ( | UT_Vector3 * | N, |
GT_Size | npts, | ||
int | segment = 0 , |
||
const UT_StringRef & | P = GA_Names::P , |
||
bool | normalize = true , |
||
const fpreal32 * | pntdata = nullptr |
||
) | const |
Compute shared normals. This will use the shared attribute named P to compute the normals for each shared point.
bool GT_PrimPolygonMesh::pointNormals | ( | UT_Vector3D * | N, |
GT_Size | npts, | ||
int | segment = 0 , |
||
const UT_StringRef & | P = GA_Names::P , |
||
bool | normalize = true , |
||
const fpreal32 * | pntdata = nullptr |
||
) | const |
Compute shared normals. This will use the shared attribute named P to compute the normals for each shared point.
|
inline |
Access to the point sets
Definition at line 195 of file GT_PrimPolygonMesh.h.
|
overridevirtual |
Methods defined on GT_Primitive
Reimplemented from GT_Primitive.
Reimplemented in GT_PrimSubdivisionMesh.
UT_IntrusivePtr<GT_PrimPolygonMesh> GT_PrimPolygonMesh::removeUnusedPoints | ( | const int32 * | idx = nullptr | ) | const |
Remove unused points. This will collapse the varying point arrays, leaving only the points referenced by the vertices.
|
overridevirtual |
Save the primitive to a JSON stream. The default method does nothing and returns false.
Reimplemented from GT_Primitive.
Reimplemented in GT_PrimSubdivisionMesh.
|
inline |
Set the convex flag on the mesh.
Definition at line 255 of file GT_PrimPolygonMesh.h.
|
inline |
Access to the face sets
Definition at line 205 of file GT_PrimPolygonMesh.h.
|
inline |
Access to the point sets
Definition at line 196 of file GT_PrimPolygonMesh.h.
bool GT_PrimPolygonMesh::splitMesh | ( | GT_Size | polygon_limit, |
UT_Array< GT_PrimitiveHandle > & | split_meshes, | ||
bool | remove_unused_points = true |
||
) | const |
Divide a mesh into smaller meshes if it exceeds the poly_limit. If this mesh has more than polygon_limit polygons, this will split the mesh into multiple sub-meshes, attempting to keep them all roughly the same number of polygons. If this mesh has fewer than polygon_limit polygons, it will return false and not add any meshes to split_meshes. If remove_unused_points is true, each submesh will have unused points removed.
|
overridevirtual |
update any cached data for geometry and its attributes
Reimplemented from GT_Primitive.
bool GT_PrimPolygonMesh::vertexNormals | ( | UT_Vector3T< fpreal16 > * | N, |
GT_Size | npts, | ||
int | segment = 0 , |
||
const UT_StringRef & | P = GA_Names::P , |
||
fpreal | maxangledegrees = GT_DEFAULT_ADJUSTED_CUSP_ANGLE , |
||
bool | normalize = true |
||
) | const |
Compute vertex normals. This will use the shared attribute named P to compute the normals for each vertex.
bool GT_PrimPolygonMesh::vertexNormals | ( | UT_Vector3 * | N, |
GT_Size | npts, | ||
int | segment = 0 , |
||
const UT_StringRef & | P = GA_Names::P , |
||
fpreal | maxangledegrees = GT_DEFAULT_ADJUSTED_CUSP_ANGLE , |
||
bool | normalize = true |
||
) | const |
Compute vertex normals. This will use the shared attribute named P to compute the normals for each vertex.
bool GT_PrimPolygonMesh::vertexNormals | ( | UT_Vector3D * | N, |
GT_Size | npts, | ||
int | segment = 0 , |
||
const UT_StringRef & | P = GA_Names::P , |
||
fpreal | maxangledegrees = GT_DEFAULT_ADJUSTED_CUSP_ANGLE , |
||
bool | normalize = true |
||
) | const |
Compute vertex normals. This will use the shared attribute named P to compute the normals for each vertex.
|
protected |
Definition at line 481 of file GT_PrimPolygonMesh.h.
|
protected |
Definition at line 478 of file GT_PrimPolygonMesh.h.
|
protected |
Definition at line 480 of file GT_PrimPolygonMesh.h.
|
protected |
Definition at line 479 of file GT_PrimPolygonMesh.h.