HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GT_PrimNuPatch Class Reference

A simple representation of a NURBS surface. More...

#include <GT_PrimNuPatch.h>

+ Inheritance diagram for GT_PrimNuPatch:

Public Member Functions

 GT_PrimNuPatch ()
 
 GT_PrimNuPatch (const GT_PrimNuPatch &src)
 
 GT_PrimNuPatch (const GT_PrimNuPatch &src, const GT_AttributeListHandle &vertex, const GT_AttributeListHandle &detail)
 
 GT_PrimNuPatch (int uorder, const GT_DataArrayHandle &uknots, int vorder, const GT_DataArrayHandle &vknots, const GT_AttributeListHandle &vertex, const GT_AttributeListHandle &detail)
 
 ~GT_PrimNuPatch () override
 
bool isTrimmed () const
 Check if trimmed. More...
 
const GT_TrimNuCurvesgetTrimCurves () const
 Get trim curves. More...
 
void copyTrimCurves (const GT_TrimNuCurves *curves)
 Set trim curves. Ownership of the curves is not assumed by the patch. More...
 
void setTrimCurves (UT_UniquePtr< GT_TrimNuCurves > curves)
 Set trim curves, adopting ownership of the trim curves passed in. More...
 
GT_PrimitiveHandle transposeVertex () const
 
UT_IntrusivePtr< GT_PrimNuPatchreverseU () const
 Reverses U for the surface. More...
 
GT_PrimitiveHandle buildHull (bool copy_xform=true) const
 Build the hull of the primitive. More...
 
GT_PrimitiveHandle buildSurface (const GT_RefineParms *parms, bool copy_xform=true) const
 Refine to a polygonal surface. More...
 
GT_PrimitiveHandle doHarden () const override
 Harden all attributes and arrays. 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...
 
const char * className () const override
 
bool save (UT_JSONWriter &w) const override
 
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
 
int getNu () const
 
int getNv () const
 
int getUOrder () const
 
int getVOrder () const
 
const GT_DataArrayHandlegetUKnots () const
 
const GT_DataArrayHandlegetVKnots () const
 
const GT_AttributeListHandlegetVertex () const
 
const GT_AttributeListHandlegetDetail () const
 
const GT_AttributeListHandlegetVertexAttributes () const override
 
const GT_AttributeListHandlegetDetailAttributes () 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_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 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
 
virtual const
GT_AttributeListHandle
getPointAttributes () const
 
virtual const
GT_AttributeListHandle
getUniformAttributes () 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

void hardenAttributes ()
 
- 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...
 

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

A simple representation of a NURBS surface.

The NURBS patch attributes are specified by a hull/mesh of control vertices and a constant attribute for the entire patch.

Given a patch with:

  • uorder = The order in the U direction
  • uknots = The U knot vector (with length given by ulen)
  • vorder = The order in the V direction
  • vknots = The V knot vector (with length given by vlen) The number of control vertices is given by:
    nu = len(uknots) - uorder
    nv = len(vknots) - vorder
    nvertices = nu * nv

When specifying rational NURBS patches, the "P" attribute should always be specified as the non-homogeneous 3-tuple coordinates. An optional "Pw" float array can be specified, and if it exists, the homogeneous positions will be defined as

:
P = (x,y,z)
Pw = (w)
P' = (w*x, w*y, w*z, w)

Definition at line 45 of file GT_PrimNuPatch.h.

Constructor & Destructor Documentation

GT_PrimNuPatch::GT_PrimNuPatch ( )
GT_PrimNuPatch::GT_PrimNuPatch ( const GT_PrimNuPatch src)
GT_PrimNuPatch::GT_PrimNuPatch ( const GT_PrimNuPatch src,
const GT_AttributeListHandle vertex,
const GT_AttributeListHandle detail 
)
GT_PrimNuPatch::GT_PrimNuPatch ( int  uorder,
const GT_DataArrayHandle uknots,
int  vorder,
const GT_DataArrayHandle vknots,
const GT_AttributeListHandle vertex,
const GT_AttributeListHandle detail 
)
GT_PrimNuPatch::~GT_PrimNuPatch ( )
override

Member Function Documentation

GT_PrimitiveHandle GT_PrimNuPatch::buildHull ( bool  copy_xform = true) const

Build the hull of the primitive.

GT_PrimitiveHandle GT_PrimNuPatch::buildSurface ( const GT_RefineParms parms,
bool  copy_xform = true 
) const

Refine to a polygonal surface.

const char* GT_PrimNuPatch::className ( ) const
inlineoverridevirtual

Methods defined on GT_Primitive

Implements GT_Primitive.

Definition at line 61 of file GT_PrimNuPatch.h.

void GT_PrimNuPatch::copyTrimCurves ( const GT_TrimNuCurves curves)

Set trim curves. Ownership of the curves is not assumed by the patch.

GT_PrimitiveHandle GT_PrimNuPatch::doAttributeMerge ( const GT_Primitive src,
const UT_StringMMPattern vertex,
const UT_StringMMPattern point,
const UT_StringMMPattern uniform,
const UT_StringMMPattern detail 
) const
overridevirtual

The virtual implementation of attribute merging.

Reimplemented from GT_Primitive.

GT_PrimitiveHandle GT_PrimNuPatch::doHarden ( ) const
overridevirtual

Harden all attributes and arrays.

Reimplemented from GT_Primitive.

GT_PrimitiveHandle GT_PrimNuPatch::doSoftCopy ( ) const
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.

Definition at line 127 of file GT_PrimNuPatch.h.

void GT_PrimNuPatch::enlargeBounds ( UT_BoundingBox  boxes[],
int  nsegments 
) const
overridevirtual

Methods defined on GT_Primitive

Implements GT_Primitive.

const GT_AttributeListHandle& GT_PrimNuPatch::getDetail ( ) const
inline

Accessor

Definition at line 84 of file GT_PrimNuPatch.h.

const GT_AttributeListHandle& GT_PrimNuPatch::getDetailAttributes ( ) const
inlineoverridevirtual

Virtual access to attributes

Reimplemented from GT_Primitive.

Definition at line 113 of file GT_PrimNuPatch.h.

int64 GT_PrimNuPatch::getMemoryUsage ( ) const
overridevirtual

Methods defined on GT_Primitive

Implements GT_Primitive.

int GT_PrimNuPatch::getMotionSegments ( ) const
overridevirtual

Methods defined on GT_Primitive

Implements GT_Primitive.

int GT_PrimNuPatch::getNu ( ) const
inline

Accessor

Definition at line 76 of file GT_PrimNuPatch.h.

int GT_PrimNuPatch::getNv ( ) const
inline

Accessor

Definition at line 77 of file GT_PrimNuPatch.h.

int GT_PrimNuPatch::getPrimitiveType ( ) const
overridevirtual

Methods defined on GT_Primitive

Reimplemented from GT_Primitive.

const GT_TrimNuCurves* GT_PrimNuPatch::getTrimCurves ( ) const
inline

Get trim curves.

Definition at line 92 of file GT_PrimNuPatch.h.

const GT_DataArrayHandle& GT_PrimNuPatch::getUKnots ( ) const
inline

Accessor

Definition at line 80 of file GT_PrimNuPatch.h.

int GT_PrimNuPatch::getUOrder ( ) const
inline

Accessor

Definition at line 78 of file GT_PrimNuPatch.h.

const GT_AttributeListHandle& GT_PrimNuPatch::getVertex ( ) const
inline

Accessor

Definition at line 82 of file GT_PrimNuPatch.h.

const GT_AttributeListHandle& GT_PrimNuPatch::getVertexAttributes ( ) const
inlineoverridevirtual

Virtual access to attributes

Reimplemented from GT_Primitive.

Definition at line 111 of file GT_PrimNuPatch.h.

const GT_DataArrayHandle& GT_PrimNuPatch::getVKnots ( ) const
inline

Accessor

Definition at line 81 of file GT_PrimNuPatch.h.

int GT_PrimNuPatch::getVOrder ( ) const
inline

Accessor

Definition at line 79 of file GT_PrimNuPatch.h.

void GT_PrimNuPatch::hardenAttributes ( )
protected
bool GT_PrimNuPatch::isTrimmed ( ) const
inline

Check if trimmed.

Definition at line 89 of file GT_PrimNuPatch.h.

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

Methods defined on GT_Primitive

Reimplemented from GT_Primitive.

UT_IntrusivePtr<GT_PrimNuPatch> GT_PrimNuPatch::reverseU ( ) const

Reverses U for the surface.

bool GT_PrimNuPatch::save ( UT_JSONWriter w) const
overridevirtual

Methods defined on GT_Primitive

Reimplemented from GT_Primitive.

void GT_PrimNuPatch::setTrimCurves ( UT_UniquePtr< GT_TrimNuCurves curves)

Set trim curves, adopting ownership of the trim curves passed in.

GT_PrimitiveHandle GT_PrimNuPatch::transposeVertex ( ) const

Houdini stores it's vertices in row-major order. This is not the case for all software. This method will transpose the vertex into column-major order. This operation is reversible by calling it multiple times.


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