HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GT_PrimMeshSplitParent Class Referenceabstract

Parent class to split a mesh. More...

#include <GT_PrimMeshSplit.h>

+ Inheritance diagram for GT_PrimMeshSplitParent:

Public Member Functions

 GT_PrimMeshSplitParent (GT_Primitive *mesh, GT_Size nelements)
 Create a split parent for the mesh given N elemental primitives. More...
 
 GT_PrimMeshSplitParent (const GT_PrimMeshSplitParent &src)
 
 ~GT_PrimMeshSplitParent () override
 d-tor More...
 
const char * className () const override
 
virtual bool rangeRefine (const GT_PrimMeshSplitRange &range, GT_Refine &refiner, const GT_RefineParms *parms) const =0
 
virtual void rangeEnlargeBounds (const GT_PrimMeshSplitRange &range, UT_BoundingBox &full, UT_BoundingBox boxes[], int nsegs) const =0
 
virtual void rangeElementBounds (const GT_PrimMeshSplitRange &range, UT_BoundingBox boxes[], int segment) const =0
 
virtual bool partitionRange (const GT_PrimMeshSplitRange &range, const UT_BoundingBox &full_box, GT_PrimMeshSplitRange &left, GT_PrimMeshSplitRange &right, int start_segment=0, int end_segment=0)
 
GT_Offset getIndex (GT_Offset index) const
 Lookup an index. More...
 
const GT_PrimitiveHandlegetBaseMesh () const
 Access parent primitive. More...
 
bool refine (GT_Refine &refiner, const GT_RefineParms *parms) const override
 
void enlargeBounds (UT_BoundingBox boxes[], int nsegs) const override
 
int getMotionSegments () const override
 
int64 getMemoryUsage () const override
 
- Public Member Functions inherited from GT_Primitive
 GT_Primitive ()
 
 GT_Primitive (const GT_Primitive &src)
 
virtual ~GT_Primitive ()
 
virtual int getPrimitiveType () const
 
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_TransformHandlegetPrimitiveTransform () 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
 
virtual bool updateGeoPrim (const GU_ConstDetailHandle &dtl, const GT_RefineParms &parms)
 update any cached data for geometry and its attributes More...
 
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 bool save (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
 
virtual GT_PrimitiveHandle doHarden () const
 
virtual GT_PrimitiveHandle doSoftCopy () const =0
 
virtual GT_PrimitiveHandle doAttributeMerge (const GT_Primitive &src, const UT_StringMMPattern *vertex, const UT_StringMMPattern *point, const UT_StringMMPattern *uniform, const UT_StringMMPattern *detail) const
 The virtual implementation of attribute merging. More...
 
bool enlargeWidth (UT_BoundingBox boxes[], int nsegments, fpreal defwidth=-1) const
 
virtual const
GT_AttributeListHandle
getPointAttributes () const
 
virtual const
GT_AttributeListHandle
getVertexAttributes () const
 
virtual const
GT_AttributeListHandle
getUniformAttributes () const
 
virtual const
GT_AttributeListHandle
getDetailAttributes () const
 
const GT_AttributeListHandlegetAttributeList (GT_Owner owner) const
 
virtual const GT_DataArrayHandlegetVertexList () const
 
virtual GT_DataArrayHandle createPointNormals (int segment=0, const UT_StringRef &P=GA_Names::P, bool normalize=true, const fpreal32 *pntdata=NULL, GT_Storage store=GT_STORE_REAL32) const
 
virtual fpreal computePerimeter (int seg=0) const
 
virtual fpreal computeSurfaceArea (int seg=0) const
 
virtual fpreal computeVolume (const UT_Vector3 &ref_P, int seg=0) 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_IntrusiveRefCounteroperator= (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

virtual void partitionElements (const GT_PrimMeshSplitRange &range, const UT_BoundingBox &full, bool *left, int start_seg=0, int end_seg=0) 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_PrimitiveHandle myMesh
 
GT_DataArrayHandle myIndices
 

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 voidoperator new (size_t size)
 
static voidoperator new (size_t size, void *p)
 
static void operator delete (void *p, size_t size)
 

Detailed Description

Parent class to split a mesh.

Definition at line 23 of file GT_PrimMeshSplit.h.

Constructor & Destructor Documentation

GT_PrimMeshSplitParent::GT_PrimMeshSplitParent ( GT_Primitive mesh,
GT_Size  nelements 
)

Create a split parent for the mesh given N elemental primitives.

GT_PrimMeshSplitParent::GT_PrimMeshSplitParent ( const GT_PrimMeshSplitParent src)
GT_PrimMeshSplitParent::~GT_PrimMeshSplitParent ( )
override

d-tor

Member Function Documentation

const char* GT_PrimMeshSplitParent::className ( ) const
inlineoverridevirtual

Implements GT_Primitive.

Definition at line 32 of file GT_PrimMeshSplit.h.

void GT_PrimMeshSplitParent::enlargeBounds ( UT_BoundingBox  boxes[],
int  nsegs 
) const
overridevirtual

Methods from GT_Primitive

Implements GT_Primitive.

const GT_PrimitiveHandle& GT_PrimMeshSplitParent::getBaseMesh ( ) const
inline

Access parent primitive.

Definition at line 81 of file GT_PrimMeshSplit.h.

GT_Offset GT_PrimMeshSplitParent::getIndex ( GT_Offset  index) const
inline

Lookup an index.

Definition at line 74 of file GT_PrimMeshSplit.h.

int64 GT_PrimMeshSplitParent::getMemoryUsage ( ) const
overridevirtual

Methods from GT_Primitive

Implements GT_Primitive.

int GT_PrimMeshSplitParent::getMotionSegments ( ) const
overridevirtual

Methods from GT_Primitive

Implements GT_Primitive.

virtual void GT_PrimMeshSplitParent::partitionElements ( const GT_PrimMeshSplitRange range,
const UT_BoundingBox full,
bool *  left,
int  start_seg = 0,
int  end_seg = 0 
) const
protectedvirtual

Determine which elements should be on the left side and which should be on the right side. By default, this will compute bounding boxes for the elements and split based on the largest box dimension.

virtual bool GT_PrimMeshSplitParent::partitionRange ( const GT_PrimMeshSplitRange range,
const UT_BoundingBox full_box,
GT_PrimMeshSplitRange left,
GT_PrimMeshSplitRange right,
int  start_segment = 0,
int  end_segment = 0 
)
virtual

Given a bounding box for the range of primitives, partition the range of primitives by pivoting the indices. The default behaviour relies on the bounding boxes of primitives at segment 0.

virtual void GT_PrimMeshSplitParent::rangeElementBounds ( const GT_PrimMeshSplitRange range,
UT_BoundingBox  boxes[],
int  segment 
) const
pure virtual

Enlarge the bounding boxes for each element in the range. There is a bounding box for each element. Only the motion segment given should be considered.

virtual void GT_PrimMeshSplitParent::rangeEnlargeBounds ( const GT_PrimMeshSplitRange range,
UT_BoundingBox full,
UT_BoundingBox  boxes[],
int  nsegs 
) const
pure virtual

Enlarge bounding boxes for each segment over the range of elements There is be a bounding box for each segment.

virtual bool GT_PrimMeshSplitParent::rangeRefine ( const GT_PrimMeshSplitRange range,
GT_Refine refiner,
const GT_RefineParms parms 
) const
pure virtual

The range refine method should refine a range of elements into individual elements. If the method returns false, the mesh will be split into sub-meshes with smaller ranges.

bool GT_PrimMeshSplitParent::refine ( GT_Refine refiner,
const GT_RefineParms parms 
) const
overridevirtual

Methods from GT_Primitive

Reimplemented from GT_Primitive.

Member Data Documentation

GT_DataArrayHandle GT_PrimMeshSplitParent::myIndices
protected

Definition at line 93 of file GT_PrimMeshSplit.h.

GT_PrimitiveHandle GT_PrimMeshSplitParent::myMesh
protected

Definition at line 92 of file GT_PrimMeshSplit.h.


The documentation for this class was generated from the following file: