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

#include <GEO_PrimVDB.h>

+ Inheritance diagram for GEO_PrimVDB:

Classes

class  GridAccessor
 GridAccessor manages access to a GEO_PrimVDB's grid. More...
 

Public Types

enum  ActivateOperation { ACTIVATE_UNION, ACTIVATE_INTERSECT, ACTIVATE_SUBTRACT, ACTIVATE_COPY }
 
typedef uint64 UniqueId
 
- Public Types inherited from GA_Primitive
enum  GA_DereferenceStatus { GA_DEREFERENCE_FAIL, GA_DEREFERENCE_OK, GA_DEREFERENCE_DEGENERATE, GA_DEREFERENCE_DESTROY }
 

Public Member Functions

virtual int detachPoints (GA_PointGroup &grp)
 
virtual GA_DereferenceStatus dereferencePoint (GA_Offset point, bool dry_run=false)
 
virtual GA_DereferenceStatus dereferencePoints (const GA_RangeMemberQuery &pt_q, bool dry_run=false)
 
virtual const GA_PrimitiveJSONgetJSON () const
 
void assignVertex (GA_Offset new_vtx, bool update_topology)
 
virtual void swapVertexOffsets (const GA_Defragment &defrag)
 Defragmentation. More...
 
virtual bool evaluatePointRefMap (GA_Offset result_vtx, GA_AttributeRefMap &hlist, fpreal u, fpreal v, uint du, uint dv) const
 Evalaute a point given a u,v coordinate (with derivatives) More...
 
virtual int evaluatePointV4 (UT_Vector4 &pos, float u, float v=0, unsigned du=0, unsigned dv=0) const
 Evalaute position given a u,v coordinate (with derivatives) More...
 
fpreal getTaper () const
 
void getRes (int &rx, int &ry, int &rz) const
 
fpreal getVoxelDiameter () const
 
UT_Vector3 getVoxelSize () const
 Returns the length of the voxel when you take an x, y, and z step. More...
 
bool getFrustumBounds (UT_BoundingBox &idxbox) const
 
void activateIndexBBox (const openvdb::CoordBBox &bbox, ActivateOperation operation, bool setvalue, fpreal value)
 
void activateByVDB (const GEO_PrimVDB *vdb, ActivateOperation operation, bool setvalue, fpreal value, bool ignore_transform=false)
 
virtual bool enlargeBoundingSphere (UT_BoundingSphere &b, const GA_Attribute *P) const
 
bool loadOrder (const UT_JSONValue &p)
 Load the order from a JSON value. More...
 
bool saveVisualization (UT_JSONWriter &w, const GA_SaveMap &map) const
 
bool loadVisualization (UT_JSONParser &p, const GA_LoadMap &map)
 
GA_Offset fastVertexOffset (GA_Size UT_IF_ASSERT_P(index)) const
 Method to perform quick lookup of vertex without the virtual call. More...
 
void setVertexPoint (int i, GA_Offset pt)
 
fpreal calcPositiveDensity () const
 Computes the total density of the volume, scaled by the volume's size. Negative values will be ignored. More...
 
bool hasGrid () const
 
void makeGridUnique ()
 If this primitive's grid's voxel data (i.e., its tree) is shared, replace the tree with a deep copy of itself that is not shared with anyone else. More...
 
const openvdb::GridBase & getConstGrid () const
 Return a reference to this primitive's grid. More...
 
const openvdb::GridBase & getGrid () const
 Return a reference to this primitive's grid. More...
 
openvdb::GridBase & getGrid ()
 Return a reference to this primitive's grid. More...
 
openvdb::GridBase::ConstPtr getConstGridPtr () const
 Return a shared pointer to this primitive's grid. More...
 
openvdb::GridBase::ConstPtr getGridPtr () const
 Return a shared pointer to this primitive's grid. More...
 
openvdb::GridBase::Ptr getGridPtr ()
 Return a shared pointer to this primitive's grid. More...
 
void setGrid (const openvdb::GridBase &grid)
 Set this primitive's grid to a shallow copy of the given grid. More...
 
const openvdb::MetaMap & getConstMetadata () const
 Return a reference to this primitive's grid metadata. More...
 
const openvdb::MetaMap & getMetadata () const
 Return a reference to this primitive's grid metadata. More...
 
openvdb::MetaMap & getMetadata ()
 Return a reference to this primitive's grid metadata. More...
 
const char * getGridName () const
 Return the value of this primitive's "name" attribute in the given detail. More...
 
UniqueId getUniqueId () const
 Return this primitive's serial number. More...
 
UniqueId getTreeUniqueId () const
 Return the serial number of this primitive's voxel data. More...
 
UniqueId getMetadataUniqueId () const
 Return the serial number of this primitive's grid metadata. More...
 
UniqueId getTransformUniqueId () const
 Return the serial number of this primitive's transform. More...
 
virtual bool isDegenerate () const
 
virtual int getBBox (UT_BoundingBox *bbox) const
 
virtual void reverse ()
 
virtual UT_Vector3 computeNormal () const
 
virtual void copyPrimitive (const GEO_Primitive *src, GEO_Point **ptredirect)
 
virtual void copyUnwiredForMerge (const GA_Primitive *src, const GA_MergeMap &map)
 
virtual GA_Size getVertexCount () const
 
virtual GA_Offset getVertexOffset (GA_Size) const
 
void indexToPos (int x, int y, int z, UT_Vector3 &pos) const
 
void findexToPos (UT_Vector3 index, UT_Vector3 &pos) const
 
void posToIndex (UT_Vector3 pos, int &x, int &y, int &z) const
 Convert a 3d position into the closest index value. More...
 
void posToIndex (UT_Vector3 pos, UT_Vector3 &index) const
 
fpreal getValueF (const UT_Vector3 &pos) const
 
fpreal getValueAtIndexF (int ix, int iy, int iz) const
 
UT_Vector3D getValueV3 (const UT_Vector3 &pos) const
 
UT_Vector3D getValueAtIndexV3 (int ix, int iy, int iz) const
 
void getValues (float *f, int stride, const UT_Vector3 *pos, int num) const
 
void getValues (int *f, int stride, const UT_Vector3 *pos, int num) const
 
void getValuesAtIndices (float *f, int stride, const int *ix, const int *iy, const int *iz, int num) const
 
void getValuesAtIndices (int *f, int stride, const int *ix, const int *iy, const int *iz, int num) const
 
void getValues (UT_Vector3 *f, int stride, const UT_Vector3 *pos, int num) const
 Vector grid variants. More...
 
void getValuesAtIndices (UT_Vector3 *f, int stride, const int *ix, const int *iy, const int *iz, int num) const
 
UT_Vector3 getGradient (const UT_Vector3 &pos) const
 
bool evalGradients (UT_Vector3 *gradients, int gradients_stride, const UT_Vector3 *positions, int num_positions, bool normalize=false) const
 
UT_VDBType getStorageType () const
 Get the storage type of the grid. More...
 
int getTupleSize () const
 Get the tuple size, usually 1 or 3. More...
 
bool isSDF () const
 
bool isAligned (const GEO_PrimVDB *vdb) const
 True if the two volumes map the same indices to the same positions. More...
 
bool isActiveRegionMatched (const GEO_PrimVDB *vdb) const
 True if the two volumes have the same active regions. More...
 
bool isWorldAxisAligned () const
 
virtual void transform (const UT_Matrix4 &mat)
 
void setTransform4 (const UT_DMatrix4 &xform4)
 
void setTransform4 (const UT_Matrix4 &xform4)
 
UT_Matrix4D getTransform4 () const
 
GEO_PrimVolumeXform getIndexSpaceTransform () const
 
GEO_PrimVolumeXform getSpaceTransform () const
 
GEO_PrimVolumeXform getSpaceTransform (const UT_BoundingBoxD &bbox) const
 
void setSpaceTransform (const GEO_PrimVolumeXform &space, const UT_Vector3R &resolution, bool force_taper=false)
 
virtual GEO_Primitivecopy (int preserve_shared_pts=0) const
 
virtual void stashed (int onoff, GA_Offset offset=GA_INVALID_OFFSET)
 
virtual void clearForDeletion ()
 
virtual void copyOffsetPrimitive (const GEO_Primitive *src, int base)
 
virtual UT_Vector3 baryCenter () const
 
virtual fpreal calcVolume (const UT_Vector3 &refpt) const
 
virtual fpreal calcArea () const
 
virtual bool enlargeBoundingBox (UT_BoundingRect &b, const GA_Attribute *P) const
 
virtual bool enlargeBoundingBox (UT_BoundingBox &b, const GA_Attribute *P) const
 
virtual void enlargePointBounds (UT_BoundingBox &e) const
 
virtual void getLocalTransform (UT_Matrix3D &result) const
 
virtual void setLocalTransform (const UT_Matrix3D &new_mat3)
 
const GEO_VolumeOptionsgetVisOptions () const
 
void setVisualization (GEO_VolumeVis vismode, fpreal iso, fpreal density, GEO_VolumeVisLod lod=GEO_VOLUMEVISLOD_FULL)
 
GEO_VolumeVis getVisualization () const
 
fpreal getVisIso () const
 
fpreal getVisDensity () const
 
GEO_VolumeVisLod getVisLod () const
 
bool saveVDB (UT_JSONWriter &w, const GA_SaveMap &sm, bool as_shmem=false) const
 
bool loadVDB (UT_JSONParser &p, bool as_shmem=false)
 
- Public Member Functions inherited from GEO_Primitive
virtual GA_PrimCompat::TypeMask getPrimitiveId () const
 
void copyAttributesAndGroups (const GEO_Primitive &src, bool copy_groups=true)
 
void copyAttributesAndGroups (const GEO_Primitive &src, GA_AttributeRefMap &gah, bool copy_groups=true)
 
void copyAttributesAndGroups (const GEO_Primitive &src, GA_PrimitiveWrangler &wrangler, bool copy_groups=true)
 NOTE: The copying of groups only works if src is in the same detail. More...
 
void copyAttributeData (const GEO_Primitive &src)
 
void copyAttributeData (const GEO_Primitive &src, GA_AttributeRefMap &gah)
 
void copyAttributeData (const GEO_Primitive &src, GA_PrimitiveWrangler &wrangler)
 
void copyAttributeValues (const GEO_Primitive &src, GA_PrimitiveWrangler &wrangler)
 
void copyGroupMembership (const GEO_Primitive &src)
 
virtual void copyPrimitive (const GEO_Primitive *src)=0
 
virtual void realToUnitPair (float ureal, float vreal, float &uunit, float &vunit) const
 
virtual void unitToRealPair (float uunit, float vunit, float &ureal, float &vreal) const
 
virtual void unitLengthToUnitPair (float ulength, float vlength, float &uparm, float &vparm) const
 
virtual void unitLengthToUnitPair (float ulength, float vlength, float &uparm, float &vparm, float tolerance) const
 
virtual void unitToUnitLengthPair (float uparm, float vparm, float &ulength, float &vlength) const
 
bool evaluateBaryCenter (GA_Offset result_vtx, GA_AttributeRefMap &map) const
 
bool evaluatePoint (GA_Offset result_vtx, GA_AttributeRefMap &map, fpreal u, fpreal v=0, uint du=0, uint dv=0) const
 
int evaluatePoint (UT_Vector4 &pos, float u, float v=0, unsigned du=0, unsigned dv=0) const
 
virtual int evaluateNormalVector (UT_Vector3 &nml, float u, float v=0, float w=0) const
 
bool evaluateInteriorPoint (GA_Offset result_vtx, GA_AttributeRefMap &map, fpreal u, fpreal v, fpreal w=0) const
 
int evaluateInteriorPoint (UT_Vector4 &pos, fpreal u, fpreal v, fpreal w=0) const
 
virtual void computeInteriorPointWeights (UT_Array< GA_Offset > &vtxlist, UT_Array< float > &weightlist, fpreal u, fpreal v, fpreal w) const
 
SYS_FORCE_INLINE GEO_DetailgetParent () const
 
virtual void addToBSphere (UT_BoundingSphere *bsphere) const
 
virtual void isolate ()
 Method to isolate a pasted surface. More...
 
virtual bool hasEdge (const GA_Edge &edge) const
 Method to determine if a primitive has an edge (undirected). More...
 
virtual bool vertexApply (bool(*apply)(GA_Offset vtx, void *), void *data=0) const
 
GEO_Vertex getVertexElement (GA_Size i) const
 
virtual GEO_MetaPrimcastToMetaPrim (void)
 
virtual const GEO_MetaPrimcastToMetaPrim (void) const
 
virtual int parametricBBox (float u, float v, float *u0, float *u1, float *v0, float *v1)
 
virtual float uvDist (float u1, float v1, float u2, float v2) const
 
int bboxIntersectRay (const UT_Vector3 &rayorig, const UT_Vector3 &raydir, int maxtries=10, float tmax=1E17F, float *distance=0, UT_Vector3 *nml=0) const
 
virtual bool isQuadric () const
 
virtual void normal (NormalComp &output) const =0
 
virtual GEO_Primitiveconvert (GEO_ConvertParms &parms, GA_PointGroup *usedpts=0)=0
 
virtual GEO_PrimitiveconvertNew (GEO_ConvertParms &parms)=0
 
virtual void clip (UT_Vector3 normal, float distance=0, GA_PrimitiveGroup *clipgrp=NULL)
 
virtual int intersectRay (const UT_Vector3 &o, const UT_Vector3 &d, float tmax=1E17F, float tol=1E-12F, float *distance=0, UT_Vector3 *pos=0, UT_Vector3 *nml=0, int accurate=0, float *u=0, float *v=0, int ignoretrim=1) const
 
virtual bool hasGuideEdge (int edgeid, UT_Vector3 &a, UT_Vector3 &b) const
 
virtual bool hasXsectPoint (int pointid, UT_Vector3 &p) const
 
virtual fpreal calcPerimeter () const
 
- Public Member Functions inherited from GA_Primitive
virtual ~GA_Primitive ()
 
virtual const
GA_PrimitiveDefinition
getTypeDef () const =0
 
const char * getTypeName () const
 
SYS_FORCE_INLINE GA_DetailgetDetail () const
 
SYS_FORCE_INLINE GA_Offset getMapOffset () const
 Gets the offset of this primitive in the detail containing it. More...
 
SYS_FORCE_INLINE GA_Index getMapIndex () const
 Gets the index of this primitive in the detail containing it. More...
 
SYS_FORCE_INLINE const
GA_IndexMap
getIndexMap () const
 Gets the index map for primitives in the detail containing this primitive. More...
 
GA_Index getNum () const
 
void swapOffsetValue (const GA_Defragment &defrag)
 For defragmentation, we need to update the offset. More...
 
bool isPrimary () const
 
SYS_FORCE_INLINE const
GA_PrimitiveTypeId
getTypeId () const
 
GA_PrimitiveFamilyMask getFamilyMask () const
 
bool isFamily (unsigned family_mask) const
 
bool hasLocalTransform () const
 Whether the primitive has a transform associated with it. More...
 
virtual void getLocalTransform4 (UT_Matrix4D &matrix) const
 
virtual int64 getMemoryUsage () const
 
virtual void countMemory (UT_MemoryCounter &counter) const
 
SYS_FORCE_INLINE GA_Size getVertexCount () const
 Return the number of vertices used by this primitive. More...
 
SYS_FORCE_INLINE GA_Offset getVertexOffset (GA_Size primvertexnum) const
 
SYS_FORCE_INLINE GA_Index getVertexIndex (GA_Size primvertexnum) const
 
SYS_FORCE_INLINE GA_Offset getPointOffset (GA_Size i) const
 
SYS_FORCE_INLINE void setPointOffset (GA_Size i, GA_Offset ptoff)
 
SYS_FORCE_INLINE GA_Index getPointIndex (GA_Size i) const
 
SYS_FORCE_INLINE UT_Vector3 getPos3 (GA_Size i) const
 
SYS_FORCE_INLINE void setPos3 (GA_Size i, const UT_Vector3 &pos) const
 
SYS_FORCE_INLINE UT_Vector4 getPos4 (GA_Size i) const
 
SYS_FORCE_INLINE void setPos4 (GA_Size i, const UT_Vector4 &pos) const
 
GA_Range getVertexRange (bool harden=false) const
 Get a range of all the vertices accessed by the primitive. More...
 
GA_Range getPointRange (bool harden=false) const
 
bool isPointUsed (GA_Offset ptoff) const
 
void addPointRefToGroup (GA_PointGroup &grp) const
 
void edgeApply (GA_EdgeApplyFunc apply, void *data=nullptr) const
 
void edgeApplyIndex (GA_EdgeApplyIndexFunc apply, void *data=nullptr) const
 
virtual void iterateEdges (GA_IterateEdgesFunc apply_func) const
 
virtual void iterateEdgesByVertex (GA_IterateEdgesByVertexFunc apply_func) const
 
bool findEdgePoints (GA_Offset ptoff0, GA_Offset ptoff1, GA_Size &vtx0, GA_Size &vtx1) const
 
virtual bool saveSharedLoadData (UT_JSONWriter &w, GA_SaveMap &save, GA_GeometryIndex *geometryIndex) const
 
virtual bool registerSharedLoadData (int load_data_type, GA_SharedDataHandlePtr item)
 
virtual bool loadH9 (UT_IStream &is, const UT_Array< GA_AttribLoadDataH9 > &prim_attribs, const UT_Array< GA_AttribLoadDataH9 > &vtx_attribs)
 
virtual bool saveH9 (std::ostream &os, bool binary, const UT_Array< GA_AttribSaveDataH9 > &prim_attribs, const UT_Array< GA_AttribSaveDataH9 > &vtx_attribs) const
 
const GA_IntrinsicManagergetIntrinsicManager () const
 
virtual void getAdjacentBoundaryVertices (GA_Offset vtx, GA_Offset &prev_vtx, GA_Offset &next_vtx) const
 
virtual bool supportsHedge () const
 
virtual GA_Offset releaseVertex (GA_Offset vtx)
 
virtual int isVisible () const
 
virtual unsigned getNumSecondaryDetails () const
 A primitive may support any number of secondary details. More...
 
virtual const GA_DetailgetSecondaryDetail (GA_Index i) const
 
virtual GA_DetailgetSecondaryDetail (GA_Index i)
 
GA_Index getNumSecondary (GA_Index detail) const
 
const GA_PrimitivegetSecondaryByIndex (GA_Index detail, GA_Index i) const
 
GA_PrimitivegetSecondaryByIndex (GA_Index detail, GA_Index i)
 
const GA_PrimitivegetSecondaryByOffset (GA_Index detail, GA_Offset o) const
 
GA_PrimitivegetSecondaryByOffset (GA_Index detail, GA_Offset o)
 
SYS_FORCE_INLINE bool isVertexListTrivial () const
 
bool isPointListTrivial () const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachVertex (FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPoint (FUNCTOR &&functor) const
 
bool vertexApply (bool(*apply)(GA_Offset vtx, void *), void *data=nullptr) const
 
virtual void stashed (bool beingstashed, GA_Offset offset=GA_INVALID_OFFSET)
 
virtual void flushCEWriteCaches ()
 Copy any modified caches from the GPU back to CPU cache. More...
 
virtual void flushCECaches ()
 
GA_LocalIntrinsic findIntrinsic (const char *nm) const
 
GA_LocalIntrinsic findIntrinsic (GA_GlobalIntrinsic h) const
 
GA_GlobalIntrinsic findGlobalIntrinsic (GA_LocalIntrinsic h) const
 
const char * getIntrinsicName (GA_LocalIntrinsic h) const
 
GA_Size getIntrinsicTupleSize (GA_LocalIntrinsic h) const
 
GA_StorageClass getIntrinsicStorage (GA_LocalIntrinsic h) const
 
bool getIntrinsicReadOnly (GA_LocalIntrinsic h) const
 
const UT_OptionsgetIntrinsicOptions (GA_LocalIntrinsic h) const
 
GA_Size getIntrinsic (GA_LocalIntrinsic h, UT_String &val) const
 
GA_Size getIntrinsic (GA_LocalIntrinsic h, UT_StringArray &val) const
 
GA_Size getIntrinsic (GA_LocalIntrinsic h, int64 *v, GA_Size size) const
 
GA_Size getIntrinsic (GA_LocalIntrinsic h, fpreal64 *v, GA_Size sz) const
 
bool getIntrinsic (GA_LocalIntrinsic h, float &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, int &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector2 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector3 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector4 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix2 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix3 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix4 &v) const
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const char *value)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const UT_StringArray &value)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const char **val, GA_Size s)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const int64 val)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const fpreal64 val)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const int64 *val, GA_Size sz)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const fpreal64 *v, GA_Size sz)
 

Static Public Member Functions

static GA_PrimitiveFamilyMask buildFamilyMask ()
 
static bool conditionMatrix (UT_Matrix4D &mat4)
 
- Static Public Member Functions inherited from GEO_Primitive
static GA_PrimCompat::TypeMask getPrimitiveMaskH9 (const char *maskstr)
 
- Static Public Member Functions inherited from GA_Primitive
static SYS_FORCE_INLINE
GA_PrimCompat::TypeMask 
primCompatMaskFromTypeId (int type_id)
 

Protected Types

typedef SYS_AtomicCounter AtomicUniqueId
 

Protected Member Functions

 GEO_PrimVDB (GEO_Detail *d, GA_Offset offset=GA_INVALID_OFFSET)
 
 GEO_PrimVDB (const GA_MergeMap &map, GA_Detail &detail, GA_Offset offset, const GEO_PrimVDB &src_prim)
 
virtual ~GEO_PrimVDB ()
 
GA_Offset vertexPoint (GA_Size) const
 
int64 getBaseMemoryUsage () const
 
void countBaseMemory (UT_MemoryCounter &counter) const
 
void incrTreeUniqueId ()
 
void incrMetadataUniqueId ()
 
void incrTransformUniqueId ()
 
void incrGridUniqueIds ()
 
void copyGridFrom (const GEO_PrimVDB &)
 Replace this primitive's grid with a shallow copy of another primitive's grid. More...
 
- Protected Member Functions inherited from GEO_Primitive
SYS_FORCE_INLINE GEO_Primitive (GA_Detail *d, GA_Offset offset=GA_INVALID_OFFSET)
 
virtual ~GEO_Primitive ()
 
virtual bool evaluateBaryCenterRefMap (GA_Offset result_vtx, GA_AttributeRefMap &map) const
 
virtual bool evaluateInteriorPointRefMap (GA_Offset result_vtx, GA_AttributeRefMap &map, fpreal u, fpreal v, fpreal w=0) const
 
virtual int evaluateInteriorPointV4 (UT_Vector4 &pos, fpreal u, fpreal v, fpreal w=0) const
 
- Protected Member Functions inherited from GA_Primitive
SYS_FORCE_INLINE GA_Primitive (GA_Detail &detail, GA_Offset offset=GA_INVALID_OFFSET)
 
void setNumVertices (GA_Size nvertices)
 
GA_Offset allocateVertex (GA_Offset point=GA_INVALID_OFFSET)
 allocateVertex() will call wireVertex() if the point given is not -1 More...
 
void destroyVertex (GA_Offset vertex)
 
void wireVertex (GA_Offset vertex, GA_Offset point)
 
void registerVertex (GA_Offset vertex)
 
SYS_FORCE_INLINE int64 getBaseMemoryUsage () const
 Report approximate memory usage for myVertexList for subclasses. More...
 
void countBaseMemory (UT_MemoryCounter &counter) const
 
void copyVertexListForMerge (const GA_OffsetListRef &src_vertices, const GA_MergeMap &map)
 

Static Protected Member Functions

static
GA_IntrinsicManager::Registrar 
registerIntrinsics (GA_PrimitiveDefinition &defn)
 Register intrinsic attributes. More...
 
static bool isIntrinsicMetadata (const char *name)
 Return true if the given metadata token is an intrinsic. More...
 
static UniqueId nextUniqueId ()
 Return an ID number that is guaranteed to be unique across all VDB primitives. More...
 
- Static Protected Member Functions inherited from GEO_Primitive
static
GA_IntrinsicManager::Registrar 
registerIntrinsics (GA_PrimitiveDefinition &defn)
 

Protected Attributes

GA_Offset myVertex
 
- Protected Attributes inherited from GA_Primitive
GA_OffsetList myVertexList
 

Additional Inherited Members

- Static Public Attributes inherited from GEO_Primitive
static const UT_Array
< GA_AttribSaveDataH9 > & 
theEmptySaveAttribs
 Convience objects to pass as arguments to saveH9()/loadH9(). More...
 

Detailed Description

Definition at line 75 of file GEO_PrimVDB.h.

Member Typedef Documentation

Definition at line 569 of file GEO_PrimVDB.h.

Definition at line 78 of file GEO_PrimVDB.h.

Member Enumeration Documentation

Enumerator
ACTIVATE_UNION 
ACTIVATE_INTERSECT 
ACTIVATE_SUBTRACT 
ACTIVATE_COPY 

Definition at line 311 of file GEO_PrimVDB.h.

Constructor & Destructor Documentation

GEO_PrimVDB::GEO_PrimVDB ( GEO_Detail d,
GA_Offset  offset = GA_INVALID_OFFSET 
)
protected

NOTE: The constructor should only be called from subclass constructors.

GEO_PrimVDB::GEO_PrimVDB ( const GA_MergeMap map,
GA_Detail detail,
GA_Offset  offset,
const GEO_PrimVDB src_prim 
)
protected

NOTE: The constructor should only be called from subclass constructors.

virtual GEO_PrimVDB::~GEO_PrimVDB ( )
protectedvirtual

NOTE: The destructor should only be called from subclass destructors.

Member Function Documentation

void GEO_PrimVDB::activateByVDB ( const GEO_PrimVDB vdb,
ActivateOperation  operation,
bool  setvalue,
fpreal  value,
bool  ignore_transform = false 
)

Activates all of the voxels in this VDB that are touched by active voxels in the source. If ignore_transform is true, voxels will be activated by grid index instead of world space position.

void GEO_PrimVDB::activateIndexBBox ( const openvdb::CoordBBox &  bbox,
ActivateOperation  operation,
bool  setvalue,
fpreal  value 
)
inline

Activates voxels given an index space bounding box. This is an inclusive box. If this is Frustum VDB, the activation will be clipped by that. Setting the value only takes effect if the voxels are activated, deactivated voxels are set to the background.

Definition at line 324 of file GEO_PrimVDB.h.

void GEO_PrimVDB::assignVertex ( GA_Offset  new_vtx,
bool  update_topology 
)

This method assigns a preallocated vertex to the quadric, optionally creating the topological link between the primitive and new vertex.

virtual UT_Vector3 GEO_PrimVDB::baryCenter ( ) const
virtual

Optional interface methods. Though not required, implementing these will give better behaviour for the new primitive.

Reimplemented from GEO_Primitive.

static GA_PrimitiveFamilyMask GEO_PrimVDB::buildFamilyMask ( )
inlinestatic

Definition at line 99 of file GEO_PrimVDB.h.

virtual fpreal GEO_PrimVDB::calcArea ( ) const
virtual

Calculate the surface area of the active voxels where a voxel face contributes if it borders an inactive voxel.

Reimplemented from GEO_Primitive.

fpreal GEO_PrimVDB::calcPositiveDensity ( ) const

Computes the total density of the volume, scaled by the volume's size. Negative values will be ignored.

virtual fpreal GEO_PrimVDB::calcVolume ( const UT_Vector3 refpt) const
virtual

Optional interface methods. Though not required, implementing these will give better behaviour for the new primitive.

Reimplemented from GEO_Primitive.

virtual void GEO_PrimVDB::clearForDeletion ( )
virtual

Though not strictly required (i.e. not pure virtual), these methods should be implemented for proper behaviour.

Reimplemented from GA_Primitive.

virtual UT_Vector3 GEO_PrimVDB::computeNormal ( ) const
virtual

Required interface methods

Implements GEO_Primitive.

static bool GEO_PrimVDB::conditionMatrix ( UT_Matrix4D mat4)
static
virtual GEO_Primitive* GEO_PrimVDB::copy ( int  preserve_shared_pts = 0) const
virtual

Though not strictly required (i.e. not pure virtual), these methods should be implemented for proper behaviour.

Reimplemented from GEO_Primitive.

void GEO_PrimVDB::copyGridFrom ( const GEO_PrimVDB )
protected

Replace this primitive's grid with a shallow copy of another primitive's grid.

virtual void GEO_PrimVDB::copyOffsetPrimitive ( const GEO_Primitive src,
int  base 
)
virtual

Though not strictly required (i.e. not pure virtual), these methods should be implemented for proper behaviour.

virtual void GEO_PrimVDB::copyPrimitive ( const GEO_Primitive src,
GEO_Point **  ptredirect 
)
virtual

Required interface methods

virtual void GEO_PrimVDB::copyUnwiredForMerge ( const GA_Primitive src,
const GA_MergeMap map 
)
virtual

Required interface methods

Reimplemented from GA_Primitive.

void GEO_PrimVDB::countBaseMemory ( UT_MemoryCounter counter) const
protected
virtual GA_DereferenceStatus GEO_PrimVDB::dereferencePoint ( GA_Offset  point,
bool  dry_run = false 
)
virtual

Before a point is deleted, all primitives using the point will be notified. The method should return "false" if it's impossible to delete the point. Otherwise, the vertices should be removed.

Implements GA_Primitive.

virtual GA_DereferenceStatus GEO_PrimVDB::dereferencePoints ( const GA_RangeMemberQuery pt_q,
bool  dry_run = false 
)
virtual

Implements GA_Primitive.

virtual int GEO_PrimVDB::detachPoints ( GA_PointGroup grp)
virtual

Implements GEO_Primitive.

virtual bool GEO_PrimVDB::enlargeBoundingBox ( UT_BoundingRect b,
const GA_Attribute P 
) const
virtual

Enlarge a bounding box by the bounding box of the primitive. A return value of false indicates an error in the operation, most likely an invalid P. For any attribute other than the position these methods simply enlarge the bounding box based on the vertex.

Reimplemented from GEO_Primitive.

virtual bool GEO_PrimVDB::enlargeBoundingBox ( UT_BoundingBox b,
const GA_Attribute P 
) const
virtual

Enlarge a bounding box by the bounding box of the primitive. A return value of false indicates an error in the operation, most likely an invalid P. For any attribute other than the position these methods simply enlarge the bounding box based on the vertex.

Reimplemented from GEO_Primitive.

virtual bool GEO_PrimVDB::enlargeBoundingSphere ( UT_BoundingSphere b,
const GA_Attribute P 
) const
virtual

Enlarge a bounding sphere to encompass the primitive. A return value of false indicates an error in the operation, most likely an invalid P. For any attribute other than the position this method simply enlarges the sphere based on the vertex.

Reimplemented from GA_Primitive.

virtual void GEO_PrimVDB::enlargePointBounds ( UT_BoundingBox e) const
virtual

Enlarge a bounding box by the bounding box of the primitive. A return value of false indicates an error in the operation, most likely an invalid P. For any attribute other than the position these methods simply enlarge the bounding box based on the vertex.

Reimplemented from GA_Primitive.

bool GEO_PrimVDB::evalGradients ( UT_Vector3 gradients,
int  gradients_stride,
const UT_Vector3 positions,
int  num_positions,
bool  normalize = false 
) const

Evaluate this grid's gradients at the given world space positions. Does nothing and returns false if grid is non-scalar. If normalize is true, then the gradients will be normalized to be unit length.

virtual bool GEO_PrimVDB::evaluatePointRefMap ( GA_Offset  result_vtx,
GA_AttributeRefMap hlist,
fpreal  u,
fpreal  v,
uint  du,
uint  dv 
) const
virtual

Evalaute a point given a u,v coordinate (with derivatives)

Implements GEO_Primitive.

virtual int GEO_PrimVDB::evaluatePointV4 ( UT_Vector4 pos,
float  u,
float  v = 0,
unsigned  du = 0,
unsigned  dv = 0 
) const
inlinevirtual

Evalaute position given a u,v coordinate (with derivatives)

Reimplemented from GEO_Primitive.

Definition at line 248 of file GEO_PrimVDB.h.

GA_Offset GEO_PrimVDB::fastVertexOffset ( GA_Size   UT_IF_ASSERT_Pindex) const
inline

Method to perform quick lookup of vertex without the virtual call.

Definition at line 447 of file GEO_PrimVDB.h.

void GEO_PrimVDB::findexToPos ( UT_Vector3  index,
UT_Vector3 pos 
) const

Required interface methods

int64 GEO_PrimVDB::getBaseMemoryUsage ( ) const
protected

Report approximate memory usage, excluding sizeof(*this), because the subclass doesn't have access to myGridAccessor.

virtual int GEO_PrimVDB::getBBox ( UT_BoundingBox bbox) const
virtual

Required interface methods

Implements GEO_Primitive.

const openvdb::GridBase& GEO_PrimVDB::getConstGrid ( ) const
inline

Return a reference to this primitive's grid.

Note
Calling setGrid() invalidates all references previously returned.

Definition at line 481 of file GEO_PrimVDB.h.

openvdb::GridBase::ConstPtr GEO_PrimVDB::getConstGridPtr ( ) const
inline

Return a shared pointer to this primitive's grid.

Note
Calling setGrid() causes the grid to which the shared pointer refers to be disassociated with this primitive.

Definition at line 499 of file GEO_PrimVDB.h.

const openvdb::MetaMap& GEO_PrimVDB::getConstMetadata ( ) const
inline

Return a reference to this primitive's grid metadata.

Note
Calling setGrid() invalidates all references previously returned.

Definition at line 526 of file GEO_PrimVDB.h.

bool GEO_PrimVDB::getFrustumBounds ( UT_BoundingBox idxbox) const

VDBs may either be unbounded, or created with a specific frustum range. The latter is important for tapered VDBs that otherwise have a singularity at the camera location. Tools can use the presence of an idxbox as a clipping box in index space. This does NOT relate to getRes - it may be much larger or even in some cases smaller.

UT_Vector3 GEO_PrimVDB::getGradient ( const UT_Vector3 pos) const

Required interface methods

const openvdb::GridBase& GEO_PrimVDB::getGrid ( ) const
inline

Return a reference to this primitive's grid.

Note
Calling setGrid() invalidates all references previously returned.

Definition at line 485 of file GEO_PrimVDB.h.

openvdb::GridBase& GEO_PrimVDB::getGrid ( )
inline

Return a reference to this primitive's grid.

Note
Calling setGrid() invalidates all references previously returned.
Warning
Call makeGridUnique() before modifying the grid's voxel data.

Definition at line 490 of file GEO_PrimVDB.h.

const char* GEO_PrimVDB::getGridName ( ) const

Return the value of this primitive's "name" attribute in the given detail.

openvdb::GridBase::ConstPtr GEO_PrimVDB::getGridPtr ( ) const
inline

Return a shared pointer to this primitive's grid.

Note
Calling setGrid() causes the grid to which the shared pointer refers to be disassociated with this primitive.

Definition at line 504 of file GEO_PrimVDB.h.

openvdb::GridBase::Ptr GEO_PrimVDB::getGridPtr ( )
inline

Return a shared pointer to this primitive's grid.

Note
Calling setGrid() causes the grid to which the shared pointer refers to be disassociated with this primitive.
Warning
Call makeGridUnique() before modifying the grid's voxel data.

Definition at line 510 of file GEO_PrimVDB.h.

GEO_PrimVolumeXform GEO_PrimVDB::getIndexSpaceTransform ( ) const

Convert transforms between native volumes and VDBsGet a GEO_PrimVolumeXform which represent's the grid's full transform. The returned space's fromVoxelSpace() method will convert index space voxel coordinates to world space positions (and the vice versa for toVoxelSpace()).

virtual const GA_PrimitiveJSON* GEO_PrimVDB::getJSON ( ) const
virtual

This method returns the JSON interface for saving/loading the primitive If the method returns a NULL pointer, then the primitive will not be saved to geometry files (and thus cannot be loaded).

Implements GA_Primitive.

virtual void GEO_PrimVDB::getLocalTransform ( UT_Matrix3D result) const
virtual

Accessor for the local 3x3 affine transform matrix for the primitive. For frustum maps, this will be transform as if the taper value is set to 1.

Reimplemented from GA_Primitive.

const openvdb::MetaMap& GEO_PrimVDB::getMetadata ( ) const
inline

Return a reference to this primitive's grid metadata.

Note
Calling setGrid() invalidates all references previously returned.

Definition at line 530 of file GEO_PrimVDB.h.

openvdb::MetaMap& GEO_PrimVDB::getMetadata ( )
inline

Return a reference to this primitive's grid metadata.

Note
Calling setGrid() invalidates all references previously returned.

Definition at line 534 of file GEO_PrimVDB.h.

UniqueId GEO_PrimVDB::getMetadataUniqueId ( ) const
inline

Return the serial number of this primitive's grid metadata.

The serial number is incremented whenever a non-const reference to the metadata or non-const access to the grid is requested (whether or not the metadata is ultimately modified).

Definition at line 559 of file GEO_PrimVDB.h.

void GEO_PrimVDB::getRes ( int rx,
int ry,
int rz 
) const

Returns the resolution of the active voxel array. Does not mean the indices go from 0..rx, however!

GEO_PrimVolumeXform GEO_PrimVDB::getSpaceTransform ( ) const

Equivalent to getSpaceTransform(getGrid().evalActiveVoxelBoundingBox()). The returned space's fromVoxelSpace() method will convert 0-1 coordinates over the active voxel bounding box to world space (and vice versa for toVoxelSpace()).

GEO_PrimVolumeXform GEO_PrimVDB::getSpaceTransform ( const UT_BoundingBoxD bbox) const

Gives the equivalent to GEO_PrimVolume's getSpaceTransform() by using the given bounding box to determine the bounds of the transform. The resulting world space sample points will be offset by half a voxel so that they match GEO_PrimVolume. The returned space's fromVoxelSpace() method will convert 0-1 coordinates over the bbox extents to world space (and vice versa for toVoxelSpace()).

UT_VDBType GEO_PrimVDB::getStorageType ( ) const
inline

Get the storage type of the grid.

Definition at line 188 of file GEO_PrimVDB.h.

fpreal GEO_PrimVDB::getTaper ( ) const
UT_Matrix4D GEO_PrimVDB::getTransform4 ( ) const

Required interface methods

UniqueId GEO_PrimVDB::getTransformUniqueId ( ) const
inline

Return the serial number of this primitive's transform.

The serial number is incremented whenever the transform is modified or non-const access to this primitive's grid is requested (whether or not the transform is ultimately modified).

Definition at line 565 of file GEO_PrimVDB.h.

UniqueId GEO_PrimVDB::getTreeUniqueId ( ) const
inline

Return the serial number of this primitive's voxel data.

The serial number is incremented whenever a non-const reference or pointer to this primitive's grid is requested (whether or not the voxel data is ultimately modified).

Definition at line 553 of file GEO_PrimVDB.h.

int GEO_PrimVDB::getTupleSize ( ) const
inline

Get the tuple size, usually 1 or 3.

Definition at line 191 of file GEO_PrimVDB.h.

UniqueId GEO_PrimVDB::getUniqueId ( ) const
inline

Return this primitive's serial number.

A primitive's serial number never changes.

Definition at line 546 of file GEO_PrimVDB.h.

fpreal GEO_PrimVDB::getValueAtIndexF ( int  ix,
int  iy,
int  iz 
) const

Required interface methods

UT_Vector3D GEO_PrimVDB::getValueAtIndexV3 ( int  ix,
int  iy,
int  iz 
) const

Required interface methods

fpreal GEO_PrimVDB::getValueF ( const UT_Vector3 pos) const

Evaluate the voxel value at the given world space position. Note that depending on the underlying VDB type, this may not be sensible, in which case a zero will silently be returned

void GEO_PrimVDB::getValues ( float *  f,
int  stride,
const UT_Vector3 pos,
int  num 
) const

Required interface methods

void GEO_PrimVDB::getValues ( int f,
int  stride,
const UT_Vector3 pos,
int  num 
) const

Required interface methods

void GEO_PrimVDB::getValues ( UT_Vector3 f,
int  stride,
const UT_Vector3 pos,
int  num 
) const

Vector grid variants.

void GEO_PrimVDB::getValuesAtIndices ( float *  f,
int  stride,
const int ix,
const int iy,
const int iz,
int  num 
) const

Required interface methods

void GEO_PrimVDB::getValuesAtIndices ( int f,
int  stride,
const int ix,
const int iy,
const int iz,
int  num 
) const

Required interface methods

void GEO_PrimVDB::getValuesAtIndices ( UT_Vector3 f,
int  stride,
const int ix,
const int iy,
const int iz,
int  num 
) const

Required interface methods

UT_Vector3D GEO_PrimVDB::getValueV3 ( const UT_Vector3 pos) const

Required interface methods

virtual GA_Size GEO_PrimVDB::getVertexCount ( ) const
virtual

Required interface methods

virtual GA_Offset GEO_PrimVDB::getVertexOffset ( GA_Size  ) const
inlinevirtual

Required interface methods

Definition at line 121 of file GEO_PrimVDB.h.

fpreal GEO_PrimVDB::getVisDensity ( ) const
inline

Visualization accessors

Definition at line 424 of file GEO_PrimVDB.h.

fpreal GEO_PrimVDB::getVisIso ( ) const
inline

Visualization accessors

Definition at line 423 of file GEO_PrimVDB.h.

GEO_VolumeVisLod GEO_PrimVDB::getVisLod ( ) const
inline

Visualization accessors

Definition at line 425 of file GEO_PrimVDB.h.

const GEO_VolumeOptions& GEO_PrimVDB::getVisOptions ( ) const
inline

Visualization accessors

Definition at line 409 of file GEO_PrimVDB.h.

GEO_VolumeVis GEO_PrimVDB::getVisualization ( ) const
inline

Visualization accessors

Definition at line 422 of file GEO_PrimVDB.h.

fpreal GEO_PrimVDB::getVoxelDiameter ( ) const

Computes the voxel diameter by taking a step in x, y, and z converting to world space and taking the length of that vector.

UT_Vector3 GEO_PrimVDB::getVoxelSize ( ) const

Returns the length of the voxel when you take an x, y, and z step.

bool GEO_PrimVDB::hasGrid ( ) const
inline

Definition at line 471 of file GEO_PrimVDB.h.

void GEO_PrimVDB::incrGridUniqueIds ( )
inlineprotected

Definition at line 608 of file GEO_PrimVDB.h.

void GEO_PrimVDB::incrMetadataUniqueId ( )
inlineprotected

Definition at line 604 of file GEO_PrimVDB.h.

void GEO_PrimVDB::incrTransformUniqueId ( )
inlineprotected

Definition at line 606 of file GEO_PrimVDB.h.

void GEO_PrimVDB::incrTreeUniqueId ( )
inlineprotected

Definition at line 602 of file GEO_PrimVDB.h.

void GEO_PrimVDB::indexToPos ( int  x,
int  y,
int  z,
UT_Vector3 pos 
) const

Convert an index in the voxel array into the corresponding worldspace location

bool GEO_PrimVDB::isActiveRegionMatched ( const GEO_PrimVDB vdb) const

True if the two volumes have the same active regions.

bool GEO_PrimVDB::isAligned ( const GEO_PrimVDB vdb) const

True if the two volumes map the same indices to the same positions.

virtual bool GEO_PrimVDB::isDegenerate ( ) const
virtual

Required interface methods

Implements GA_Primitive.

static bool GEO_PrimVDB::isIntrinsicMetadata ( const char *  name)
staticprotected

Return true if the given metadata token is an intrinsic.

bool GEO_PrimVDB::isSDF ( ) const

Required interface methods

bool GEO_PrimVDB::isWorldAxisAligned ( ) const

True if we are aligned with the world axes. Ie, all our off diagonals are zero and our diagonal is positive.

bool GEO_PrimVDB::loadOrder ( const UT_JSONValue p)

Load the order from a JSON value.

bool GEO_PrimVDB::loadVDB ( UT_JSONParser p,
bool  as_shmem = false 
)

Save/Load vdb to a JSON stream

bool GEO_PrimVDB::loadVisualization ( UT_JSONParser p,
const GA_LoadMap map 
)
void GEO_PrimVDB::makeGridUnique ( )
inline

If this primitive's grid's voxel data (i.e., its tree) is shared, replace the tree with a deep copy of itself that is not shared with anyone else.

Definition at line 476 of file GEO_PrimVDB.h.

static UniqueId GEO_PrimVDB::nextUniqueId ( )
staticprotected

Return an ID number that is guaranteed to be unique across all VDB primitives.

void GEO_PrimVDB::posToIndex ( UT_Vector3  pos,
int x,
int y,
int z 
) const

Convert a 3d position into the closest index value.

void GEO_PrimVDB::posToIndex ( UT_Vector3  pos,
UT_Vector3 index 
) const

Required interface methods

static GA_IntrinsicManager::Registrar GEO_PrimVDB::registerIntrinsics ( GA_PrimitiveDefinition defn)
staticprotected

Register intrinsic attributes.

virtual void GEO_PrimVDB::reverse ( )
virtual

Required interface methods

Implements GEO_Primitive.

bool GEO_PrimVDB::saveVDB ( UT_JSONWriter w,
const GA_SaveMap sm,
bool  as_shmem = false 
) const

Save/Load vdb to a JSON stream

bool GEO_PrimVDB::saveVisualization ( UT_JSONWriter w,
const GA_SaveMap map 
) const
void GEO_PrimVDB::setGrid ( const openvdb::GridBase &  grid)
inline

Set this primitive's grid to a shallow copy of the given grid.

Note
Invalidates all previous getGrid() and getConstGrid() references

Definition at line 518 of file GEO_PrimVDB.h.

virtual void GEO_PrimVDB::setLocalTransform ( const UT_Matrix3D new_mat3)
virtual

Accessor for the local 3x3 affine transform matrix for the primitive. For frustum maps, this will be transform as if the taper value is set to 1.

Reimplemented from GA_Primitive.

void GEO_PrimVDB::setSpaceTransform ( const GEO_PrimVolumeXform space,
const UT_Vector3R resolution,
bool  force_taper = false 
)

Sets the transform from a GEO_PrimVolume's getSpaceTransform() by using the index space [(0,0,0), resolution] bbox. If force_taper is true, then the resulting transform will always be a NonlinearFrustumMap even if there is no tapering.

void GEO_PrimVDB::setTransform4 ( const UT_DMatrix4 xform4)

Accessors for the 4x4 matrix representing the affine transform that converts from index space voxel coordinates to world space. For frustum maps, this will be transform as if the taper value is set to 1.

void GEO_PrimVDB::setTransform4 ( const UT_Matrix4 xform4)

Required interface methods

void GEO_PrimVDB::setVertexPoint ( int  i,
GA_Offset  pt 
)
inline

Definition at line 457 of file GEO_PrimVDB.h.

void GEO_PrimVDB::setVisualization ( GEO_VolumeVis  vismode,
fpreal  iso,
fpreal  density,
GEO_VolumeVisLod  lod = GEO_VOLUMEVISLOD_FULL 
)
inline

Visualization accessors

Definition at line 411 of file GEO_PrimVDB.h.

virtual void GEO_PrimVDB::stashed ( int  onoff,
GA_Offset  offset = GA_INVALID_OFFSET 
)
virtual

Though not strictly required (i.e. not pure virtual), these methods should be implemented for proper behaviour.

virtual void GEO_PrimVDB::swapVertexOffsets ( const GA_Defragment defrag)
virtual

Defragmentation.

Reimplemented from GA_Primitive.

virtual void GEO_PrimVDB::transform ( const UT_Matrix4 mat)
virtual

Required interface methods

Reimplemented from GEO_Primitive.

GA_Offset GEO_PrimVDB::vertexPoint ( GA_Size  ) const
inlineprotected
Warning
vertexPoint() doesn't check the bounds. Use with caution.

Definition at line 583 of file GEO_PrimVDB.h.

Member Data Documentation

GA_Offset GEO_PrimVDB::myVertex
protected

Definition at line 620 of file GEO_PrimVDB.h.


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