HDK
|
Container for a GU packed primitive. More...
#include <GT_GEOPrimPacked.h>
Public Member Functions | |
GT_GEOPrimPacked (const GU_ConstDetailHandle &prim_gdh, const GU_PrimPacked *prim, bool transformed=true, bool include_packed_attribs=false) | |
GT_GEOPrimPacked (const GT_GEOPrimPacked &src) | |
~GT_GEOPrimPacked () override | |
bool | refine (GT_Refine &refiner, const GT_RefineParms *parms=NULL) const override |
void | geometryAndTransform (const GT_RefineParms *parms, GT_PrimitiveHandle &result, GT_TransformHandle &xform) const |
bool | getViewportTransform (UT_Matrix4D &xform) const |
virtual bool | canInstance () const |
virtual bool | getInstanceKey (UT_Options &options) const |
virtual GT_PrimitiveHandle | getInstanceGeometry (const GT_RefineParms *parms, bool ignore_visibility=false) const |
virtual GT_AttributeListHandle | getInstanceAttributes () const |
virtual GT_TransformHandle | getInstanceTransform () const |
GT_TransformHandle | getFullTransform () const |
const GU_PrimPacked * | getPrim () const |
Accessor to the primitive. More... | |
const GU_PackedImpl * | getImplementation () const |
Accessor to the packed implementation. More... | |
virtual GU_ConstDetailHandle | getPackedDetail () const |
const char * | className () const override |
int | getPrimitiveType () const override |
void | enlargeBounds (UT_BoundingBox boxes[], int nseg) const override |
void | enlargeRenderBounds (UT_BoundingBox boxes[], int nseg) const override |
void | getVelocityRange (UT_Vector3 &vmin, UT_Vector3 &vmax, const UT_StringRef &attribute_name) const override |
int | getMotionSegments () const override |
int64 | getMemoryUsage () const override |
bool | save (UT_JSONWriter &w) const override |
const GT_ViewportRefineOptions & | viewportRefineOptions () const override |
GT_PrimitiveHandle | doSoftCopy () const override |
const GT_AttributeListHandle & | getPointAttributes () const override |
bool | transformed () const |
void | setTransformed (bool f) |
virtual void | setViewportLOD (GEO_ViewportLOD, int) |
virtual GEO_ViewportLOD | getViewportLOD (int) const |
Public Member Functions inherited from GT_Primitive | |
GT_Primitive () | |
GT_Primitive (const GT_Primitive &src) | |
virtual | ~GT_Primitive () |
virtual bool | getUniqueID (int64 &id) 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 |
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 |
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 | 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 & | getVertexAttributes () const |
virtual const GT_AttributeListHandle & | getUniformAttributes () const |
virtual const GT_AttributeListHandle & | getDetailAttributes () const |
const GT_AttributeListHandle & | getAttributeList (GT_Owner owner) const |
virtual const GT_DataArrayHandle & | getVertexList () 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_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 |
Static Public Member Functions | |
static bool | useViewportLOD (const GT_RefineParms *parms) |
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) |
Protected Member Functions | |
virtual bool | copyPackedAttributesToGeometry () const |
GT_PrimitiveHandle | buildUntransformedFragment (const GU_ConstDetailHandle &fragment_gdh, const GA_Range &range) const |
void | createPointPrimIDs (bool include_packed_attribs) |
void | appendAttribute (const char *name, const GT_DataArrayHandle &attrib) |
GT_PrimitiveHandle | doHarden () const override |
Hardening a packed primitive will extract the full geometry. More... | |
void | setDetailPrim (const GU_ConstDetailHandle &dh, const GU_PrimPacked *prim) |
virtual GT_PrimitiveHandle | getPointCloud (const GT_RefineParms *parms, bool &requires_transform) const |
virtual GT_PrimitiveHandle | getFullGeometry (const GT_RefineParms *parms, bool &requires_transform) const |
virtual GT_PrimitiveHandle | getBoxGeometry (const GT_RefineParms *parms) const |
virtual GT_PrimitiveHandle | getCentroidGeometry (const GT_RefineParms *parms) 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... | |
Container for a GU packed primitive.
Definition at line 21 of file GT_GEOPrimPacked.h.
|
inline |
Create a GT representation of the packed primitive prim
. If transformed
is true, the transform on the packed primitive will be used when refining. The prim_gdh
is the detail handle for the detail containing the packed prim
.
Definition at line 29 of file GT_GEOPrimPacked.h.
|
inline |
Definition at line 40 of file GT_GEOPrimPacked.h.
|
override |
|
protected |
|
protected |
For fragments, the GU interface only provides a means of unpacking(), but not querying the fragment range. This convenience method will create geometry for a range of a gdp without unpacking. The fragment_gdh is a detail representing the geometry of the fragment.
|
virtual |
Test whether instancing of the underlying geometry can be done Returns false
by default. If you return true
, you must implement
Reimplemented in GABC_NAMESPACE::GABC_PackedAlembic.
|
overridevirtual |
GT_Primitive interface
Implements GT_Primitive.
|
protectedvirtual |
When extracting geometry for a single primitive, the base class may automatically copy some attributes from the packed primitive to the GT instance. If you've written a custom handler which is able to instance geometry (i.e. share the geometry through a GT_PrimInstance), this will do the wrong thing, since the shader attributes will be copied to the geometry (rather than being able to change on a per-instance basis). So, you must override this method to indicate that you're handling the packed attributes yourself.
The default is to copy the attributes, if you're handling them yourself, return false
.
|
protected |
|
overrideprotectedvirtual |
Hardening a packed primitive will extract the full geometry.
Reimplemented from GT_Primitive.
|
inlineoverridevirtual |
|
overridevirtual |
GT_Primitive interface
Implements GT_Primitive.
|
overridevirtual |
GT_Primitive interface
Reimplemented from GT_Primitive.
void GT_GEOPrimPacked::geometryAndTransform | ( | const GT_RefineParms * | parms, |
GT_PrimitiveHandle & | result, | ||
GT_TransformHandle & | xform | ||
) | const |
Get the full, un-transformed geometry.
|
protectedvirtual |
Sub-classes may want to override these methods which currently just call the bounding box method and create transformed geometry based on the bounds. The box & centroid should be untransformed.
Reimplemented in GABC_NAMESPACE::GABC_PackedAlembic.
|
protectedvirtual |
Sub-classes may want to override these methods which currently just call the bounding box method and create transformed geometry based on the bounds. The box & centroid should be untransformed.
Reimplemented in GABC_NAMESPACE::GABC_PackedAlembic.
|
protectedvirtual |
Sub-classes may want to override these methods which currently just call getPackedDetail() and unpack() to access the geometry. These methods should return the "untransformed" primitives.
If requires_transform
is false if the point cloud is in the primitive's transformed space (the same as unpacking). If it's true the packed transform will be applied to the resulting primitive (without modifying the returned geometry). require_transform
will be true by default, so it doesn't have to be written in most cases.
Reimplemented in GABC_NAMESPACE::GABC_PackedAlembic.
GT_TransformHandle GT_GEOPrimPacked::getFullTransform | ( | ) | const |
Returns either the primitive transform or the instance transform, depending on whether canInstance() returns true.
|
inline |
Accessor to the packed implementation.
Definition at line 164 of file GT_GEOPrimPacked.h.
|
virtual |
When instancing, this method extracts the attributes on the packed primitive and returns them as a GT_AttributeList. The default method scoops up all attributes on the primitive (point, vertex, primitive & detail).
|
virtual |
Return the geometry the geometry for instancing. This may be different than getFullGeometry() in that
Reimplemented in GABC_NAMESPACE::GABC_PackedAlembic.
|
virtual |
If "instancing" is supported by the packed primitive, this method should return true. The options that define the packed primitive should be stored in the UT_Options. Primitives which have matching UT_Options can be considered to be shared.
Reimplemented in GABC_NAMESPACE::GABC_PackedAlembic.
|
virtual |
Return the transform handle for this particular instance. This method should return the transform required to transform the instance geometry to the space of this instance. The default method returns an identity transform.
Reimplemented in GABC_NAMESPACE::GABC_PackedAlembic.
|
overridevirtual |
GT_Primitive interface
Implements GT_Primitive.
|
overridevirtual |
GT_Primitive interface
Implements GT_Primitive.
|
virtual |
The default implementation of getPackedDetail() is
It's called by getPointCloud()
and getFullGeometry()
to allow for sharing of geometry.
|
inlineoverridevirtual |
GT_Primitive interface
Reimplemented from GT_Primitive.
Definition at line 72 of file GT_GEOPrimPacked.h.
|
protectedvirtual |
Sub-classes may want to override these methods which currently just call getPackedDetail() and unpack() to access the geometry. These methods should return the "untransformed" primitives.
If requires_transform
is false if the point cloud is in the primitive's transformed space (the same as unpacking). If it's true the packed transform will be applied to the resulting primitive (without modifying the returned geometry). require_transform
will be true by default, so it doesn't have to be written in most cases.
Reimplemented in GABC_NAMESPACE::GABC_PackedAlembic.
|
inline |
Accessor to the primitive.
Definition at line 162 of file GT_GEOPrimPacked.h.
|
inlineoverridevirtual |
GT_Primitive interface
Reimplemented from GT_Primitive.
Reimplemented in GT_PackedAlembic.
Definition at line 53 of file GT_GEOPrimPacked.h.
|
overridevirtual |
GT_Primitive interface
Reimplemented from GT_Primitive.
|
inlinevirtual |
Set or query the viewport LOD - full, points, bbox, centroid, hidden.
Definition at line 96 of file GT_GEOPrimPacked.h.
bool GT_GEOPrimPacked::getViewportTransform | ( | UT_Matrix4D & | xform | ) | const |
For the viewport: grab the packed transform if not identity and return true. This transform does not include the GT primitive transform, only the packed transform.
|
overridevirtual |
The default refine method will process primitives, providing a bounding box, point cloud, etc. based on the viewport LOD stored on the primitive.
Reimplemented from GT_Primitive.
|
overridevirtual |
GT_Primitive interface
Reimplemented from GT_Primitive.
|
inlineprotected |
Definition at line 234 of file GT_GEOPrimPacked.h.
|
inline |
Normally, the primitive will pick up the transform from the GU primitive implementation and use this in the GT representation. However, when doing instancing of shared geometry, the transforms will be picked up by the instance object, and so should be ignored on the base primitive.
Definition at line 89 of file GT_GEOPrimPacked.h.
|
inlinevirtual |
Set or query the viewport LOD - full, points, bbox, centroid, hidden.
Definition at line 94 of file GT_GEOPrimPacked.h.
|
inline |
Normally, the primitive will pick up the transform from the GU primitive implementation and use this in the GT representation. However, when doing instancing of shared geometry, the transforms will be picked up by the instance object, and so should be ignored on the base primitive.
Definition at line 88 of file GT_GEOPrimPacked.h.
|
static |
Test whether a packed primitive should use the viewport LOD setting or not. There are at least two factors in this determination:
|
overridevirtual |
GT_Primitive interface
Reimplemented from GT_Primitive.