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 GEO_Primitive
using NormalComp = NormalCompT< float >
 
using NormalCompArray = NormalCompArrayT< float >
 
using NormalCompAttr = NormalCompAttrT< float >
 
using NormalCompBuffered = NormalCompBufferedT< float >
 
using NormalCompD = NormalCompT< double >
 
using NormalCompArrayD = NormalCompArrayT< double >
 
using NormalCompAttrD = NormalCompAttrT< double >
 
using NormalCompBufferedD = NormalCompBufferedT< double >
 
- Public Types inherited from GA_Primitive
enum  GA_DereferenceStatus { GA_DEREFERENCE_FAIL, GA_DEREFERENCE_OK, GA_DEREFERENCE_DEGENERATE, GA_DEREFERENCE_DESTROY }
 

Public Member Functions

int detachPoints (GA_PointGroup &grp) override
 
GA_DereferenceStatus dereferencePoint (GA_Offset point, bool dry_run=false) override
 
GA_DereferenceStatus dereferencePoints (const GA_RangeMemberQuery &pt_q, bool dry_run=false) override
 
const GA_PrimitiveJSONgetJSON () const override
 
void assignVertex (GA_Offset new_vtx, bool update_topology)
 
bool evaluatePointRefMap (GA_Offset result_vtx, GA_AttributeRefMap &hlist, fpreal u, fpreal v, uint du, uint dv) const override
 Evalaute a point given a u,v coordinate (with derivatives) More...
 
int evaluatePointV4 (UT_Vector4 &pos, float u, float v=0, unsigned du=0, unsigned dv=0) const override
 Evalaute position given a u,v coordinate (with derivatives) More...
 
fpreal getTaper () const
 
void getRes (int &rx, int &ry, int &rz) const
 
void getRes (int64 &rx, int64 &ry, int64 &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...
 
fpreal calcMinimum () const
 Compute useful aggregate properties of the volume. More...
 
fpreal calcMaximum () const
 
fpreal calcAverage () const
 
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)
 
bool enlargeBoundingSphere (UT_BoundingSphere &b, const GA_Attribute *P) const override
 
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...
 
SYS_FORCE_INLINE bool hasGrid () const
 
SYS_FORCE_INLINE 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...
 
bool isGridUnique () const
 Returns true if the tree is not shared. If it is not shared, one can make destructive edits without makeGridUnique. More...
 
SYS_FORCE_INLINE const
openvdb::GridBase & 
getConstGrid () const
 Return a reference to this primitive's grid. More...
 
SYS_FORCE_INLINE const
openvdb::GridBase & 
getGrid () const
 Return a reference to this primitive's grid. More...
 
SYS_FORCE_INLINE
openvdb::GridBase & 
getGrid ()
 Return a reference to this primitive's grid. More...
 
SYS_FORCE_INLINE
openvdb::GridBase::ConstPtr 
getConstGridPtr () const
 Return a shared pointer to this primitive's grid. More...
 
SYS_FORCE_INLINE
openvdb::GridBase::ConstPtr 
getGridPtr () const
 Return a shared pointer to this primitive's grid. More...
 
SYS_FORCE_INLINE
openvdb::GridBase::Ptr 
getGridPtr ()
 Return a shared pointer to this primitive's grid. More...
 
SYS_FORCE_INLINE void setGrid (const openvdb::GridBase &grid, bool copyPosition=true)
 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...
 
SYS_FORCE_INLINE 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...
 
template<typename GridTypeListT , typename OpT >
bool apply (OpT &op) const
 If this primitive's grid resolves to one of the listed grid types, invoke the functor op on the resolved grid. More...
 
template<typename GridTypeListT , typename OpT >
bool apply (OpT &op, bool makeUnique=true)
 If this primitive's grid resolves to one of the listed grid types, invoke the functor op on the resolved grid. More...
 
bool isDegenerate () const override
 
bool getBBox (UT_BoundingBox *bbox) const override
 
void reverse () override
 
UT_Vector3 computeNormal () const override
 
UT_Vector3D computeNormalD () const override
 
void copyPrimitive (const GEO_Primitive *src) override
 
void copySubclassData (const GA_Primitive *source) override
 
void setCEGrid (CE_VDBGrid *cegrid)
 Replace myCEGrid with cegrid and take ownership of it. More...
 
CE_VDBGridgetCEGrid (bool read, bool write) const
 
void flushCEWriteCaches () override
 
void flushCECaches () override
 
void stealCEBuffers (const GA_Primitive *src) override
 Steal the underlying CE buffer from the source. More...
 
SYS_FORCE_INLINE GA_Offset getVertexOffset () const
 
SYS_FORCE_INLINE GA_Offset getPointOffset () const
 
SYS_FORCE_INLINE void setPointOffset (GA_Offset pt)
 
SYS_FORCE_INLINE UT_Vector3 getPos3 () const
 
SYS_FORCE_INLINE void setPos3 (const UT_Vector3 &pos)
 
void indexToPos (int x, int y, int z, UT_Vector3 &pos) const
 
void findexToPos (UT_Vector3 index, UT_Vector3 &pos) const
 
void indexToPos (exint x, exint y, exint z, UT_Vector3D &pos) const
 
void findexToPos (UT_Vector3D index, UT_Vector3D &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
 
void posToIndex (UT_Vector3D pos, exint &x, exint &y, exint &z) const
 
void posToIndex (UT_Vector3D pos, UT_Vector3D &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
 
void getValues (double *f, int stride, const UT_Vector3D *pos, int num) const
 
void getValues (exint *f, int stride, const UT_Vector3D *pos, int num) const
 
void getValuesAtIndices (double *f, int stride, const exint *ix, const exint *iy, const exint *iz, int num) const
 
void getValuesAtIndices (exint *f, int stride, const exint *ix, const exint *iy, const exint *iz, int num) const
 
void getValues (UT_Vector3D *f, int stride, const UT_Vector3D *pos, int num) const
 Vector grid variants. More...
 
void getValuesAtIndices (UT_Vector3D *f, int stride, const exint *ix, const exint *iy, const exint *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
 
SYS_FORCE_INLINE UT_VDBType getStorageType () const
 Get the storage type of the grid. More...
 
SYS_FORCE_INLINE 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
 
void transform (const UT_Matrix4 &mat) override
 
bool isEmpty () const
 True if the underlying grid has no voxels. More...
 
fpreal backgroundF () const
 Background value of the grid as a scalar or vector. More...
 
UT_Vector3D backgroundV3 () const
 
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)
 
GEO_Primitivecopy (int preserve_shared_pts=0) const override
 
void stashed (bool beingstashed, GA_Offset offset=GA_INVALID_OFFSET) override
 
UT_Vector3 baryCenter () const override
 
fpreal calcVolume (const UT_Vector3 &refpt) const override
 
fpreal calcArea () const override
 
bool enlargeBoundingBox (UT_BoundingRect &b, const GA_Attribute *P) const override
 
bool enlargeBoundingBox (UT_BoundingBox &b, const GA_Attribute *P) const override
 
void enlargePointBounds (UT_BoundingBox &e) const override
 
void getLocalTransform (UT_Matrix3D &result) const override
 
void setLocalTransform (const UT_Matrix3D &new_mat3) override
 
const GEO_VolumeOptionsgetVisOptions () const
 
void setVisOptions (const GEO_VolumeOptions &vis)
 
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
GA_PrimCompat::TypeMask getPrimitiveId () const override
 
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 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 bool getVisibleBBox (UT_BoundingBox *bbox) const
 
bool enlargeVisibleBoundingBox (UT_BoundingBox &b, const GA_Attribute *P) const override
 
virtual UT_Vector3D baryCenterD () const
 
template<typename T >
UT_Vector3T< TbaryCenterT () const
 
virtual void addToBSphere (UT_BoundingSphere *bsphere) const
 
virtual void isolate ()
 Method to isolate a pasted surface. More...
 
bool hasEdge (const GA_Edge &edge) const override
 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 ()
 
virtual const GEO_MetaPrimcastToMetaPrim () 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 void normal (NormalCompD &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
 
fpreal calcPerimeter () const override
 
- 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 UT_Vector3D getPos3D (GA_Size i) const
 
template<typename T >
UT_Vector3T< TgetPos3T (GA_Size i) const
 
SYS_FORCE_INLINE void setPos3 (GA_Size i, const UT_Vector3 &pos) const
 
SYS_FORCE_INLINE void setPos3 (GA_Size i, const UT_Vector3D &pos) const
 
SYS_FORCE_INLINE UT_Vector4 getPos4 (GA_Size i) const
 
SYS_FORCE_INLINE UT_Vector4D getPos4D (GA_Size i) const
 
SYS_FORCE_INLINE void setPos4 (GA_Size i, const UT_Vector4 &pos) const
 
SYS_FORCE_INLINE void setPos4 (GA_Size i, const UT_Vector4D &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
 
void copyUnwiredForMerge (const GA_Primitive *src, const GA_MergeMap &map)
 
virtual bool saveSharedLoadData (UT_JSONWriter &w, GA_SaveMap &save, GA_GeometryIndex *geo_index) 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 clearForDeletion ()
 
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 swapVertexOffsets (const GA_Defragment &defrag)
 
GA_LocalIntrinsic findIntrinsic (const UT_StringRef &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
 
bool getIntrinsicCollapseSingletons (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, UT_OptionsHolder &val) const
 
GA_Size getIntrinsic (GA_LocalIntrinsic h, UT_Array< UT_OptionsHolder > &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
 
bool getIntrinsic (GA_LocalIntrinsic h, double &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, int64 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector2D &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector3D &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector4D &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix2D &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix3D &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix4D &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 UT_OptionsHolder &value)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const UT_Array< UT_OptionsHolder > &value)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const UT_OptionsHolder *value, 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 () override
 
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 &, bool copyPosition=true)
 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)
 
 ~GEO_Primitive () override
 
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 bool isIntrinsicMetadata (const char *name)
 Register intrinsic attributes. 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)
 

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...
 
- Protected Attributes inherited from GA_Primitive
GA_OffsetList myVertexList
 

Detailed Description

Definition at line 36 of file GEO_PrimVDB.h.

Member Typedef Documentation

Definition at line 612 of file GEO_PrimVDB.h.

Definition at line 39 of file GEO_PrimVDB.h.

Member Enumeration Documentation

Enumerator
ACTIVATE_UNION 
ACTIVATE_INTERSECT 
ACTIVATE_SUBTRACT 
ACTIVATE_COPY 

Definition at line 296 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 ( )
overrideprotected

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 309 of file GEO_PrimVDB.h.

template<typename GridTypeListT , typename OpT >
bool GEO_PrimVDB::apply ( OpT &  op) const
inline

If this primitive's grid resolves to one of the listed grid types, invoke the functor op on the resolved grid.

Returns
true if the functor was invoked, false otherwise
Example:
auto printOp = [](const openvdb::GridBase& grid) { grid.print(); };
const GEO_PrimVDB* prim = ...;
using RealGridTypes = openvdb::TypeList<openvdb::FloatGrid, openvdb::DoubleGrid>;
// Print info about the primitive's grid if it is a floating-point grid.
prim->apply<RealGridTypes>(printOp);

Definition at line 566 of file GEO_PrimVDB.h.

template<typename GridTypeListT , typename OpT >
bool GEO_PrimVDB::apply ( OpT &  op,
bool  makeUnique = true 
)
inline

If this primitive's grid resolves to one of the listed grid types, invoke the functor op on the resolved grid.

Returns
true if the functor was invoked, false otherwise

If makeUnique is true, deep copy the grid's tree before invoking the functor if the tree is shared with other grids.

Example:
auto fillOp = [](const auto& grid) { // C++14
// Convert voxels in the given bounding box into background voxels.
grid.fill(openvdb::CoordBBox(openvdb::Coord(0), openvdb::Coord(99)),
grid.background(), /*active=*/false);
};
GEO_PrimVDB* prim = ...;
// Set background voxels in the primitive's grid if it is a floating-point grid.
using RealGridTypes = openvdb::TypeList<openvdb::FloatGrid, openvdb::DoubleGrid>;
prim->apply<RealGridTypes>(fillOp);

Definition at line 588 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.

fpreal GEO_PrimVDB::backgroundF ( ) const

Background value of the grid as a scalar or vector.

UT_Vector3D GEO_PrimVDB::backgroundV3 ( ) const

Required interface methods

UT_Vector3 GEO_PrimVDB::baryCenter ( ) const
overridevirtual

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 48 of file GEO_PrimVDB.h.

fpreal GEO_PrimVDB::calcArea ( ) const
overridevirtual

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::calcAverage ( ) const
fpreal GEO_PrimVDB::calcMaximum ( ) const
fpreal GEO_PrimVDB::calcMinimum ( ) const

Compute useful aggregate properties of the volume.

fpreal GEO_PrimVDB::calcPositiveDensity ( ) const

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

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

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

Reimplemented from GEO_Primitive.

UT_Vector3 GEO_PrimVDB::computeNormal ( ) const
overridevirtual

Required interface methods

Implements GEO_Primitive.

UT_Vector3D GEO_PrimVDB::computeNormalD ( ) const
overridevirtual

Required interface methods

Implements GEO_Primitive.

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

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 ,
bool  copyPosition = true 
)
protected

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

void GEO_PrimVDB::copyPrimitive ( const GEO_Primitive src)
overridevirtual

Required interface methods

Implements GEO_Primitive.

void GEO_PrimVDB::copySubclassData ( const GA_Primitive source)
overridevirtual

Required interface methods

Reimplemented from GA_Primitive.

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

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.

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

Implements GA_Primitive.

int GEO_PrimVDB::detachPoints ( GA_PointGroup grp)
overridevirtual

Implements GEO_Primitive.

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

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.

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

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.

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

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.

void GEO_PrimVDB::enlargePointBounds ( UT_BoundingBox e) const
overridevirtual

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.

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

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

Implements GEO_Primitive.

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

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

Reimplemented from GEO_Primitive.

Definition at line 223 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 424 of file GEO_PrimVDB.h.

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

Required interface methods

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

Required interface methods

void GEO_PrimVDB::flushCECaches ( )
overridevirtual

Remove all CE caches from the GPU, possibly writing back if necessary.

Reimplemented from GA_Primitive.

void GEO_PrimVDB::flushCEWriteCaches ( )
overridevirtual

Any modified CE cache on the GPU will be copied back to the CPU. Will leave result on GPU.

Reimplemented from GA_Primitive.

int64 GEO_PrimVDB::getBaseMemoryUsage ( ) const
protected

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

bool GEO_PrimVDB::getBBox ( UT_BoundingBox bbox) const
overridevirtual

Required interface methods

Implements GEO_Primitive.

CE_VDBGrid* GEO_PrimVDB::getCEGrid ( bool  read,
bool  write 
) const

Acquire a CE grid and cache it on the GPU. If marked for writing, the CPU version will be overwritten. Note that the getVoxelHandle does NOT auto-flush these! NOTE: If someone else fetches a non-read grid, and you fetch it as a read grid, you will not get any copied data.

SYS_FORCE_INLINE 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 458 of file GEO_PrimVDB.h.

SYS_FORCE_INLINE 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 479 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 509 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

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

Return a reference to this primitive's grid.

Note
Calling setGrid() invalidates all references previously returned.
Examples:
SIM/GAS_NetVDBSliceExchange.C.

Definition at line 463 of file GEO_PrimVDB.h.

SYS_FORCE_INLINE 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 469 of file GEO_PrimVDB.h.

const char* GEO_PrimVDB::getGridName ( ) const

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

SYS_FORCE_INLINE 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 485 of file GEO_PrimVDB.h.

SYS_FORCE_INLINE 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 492 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()). Note: The transformation is not the same as posToIndex getIndexSpaceTransform().toVoxelSpace(pos) == posToIndex(pos) + {0.5, 0.5, 0.5}

Examples:
SIM/GAS_NetVDBSliceExchange.C.
const GA_PrimitiveJSON* GEO_PrimVDB::getJSON ( ) const
overridevirtual

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.

void GEO_PrimVDB::getLocalTransform ( UT_Matrix3D result) const
overridevirtual

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 513 of file GEO_PrimVDB.h.

SYS_FORCE_INLINE 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 518 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 543 of file GEO_PrimVDB.h.

SYS_FORCE_INLINE GA_Offset GEO_PrimVDB::getPointOffset ( ) const
inline

Required interface methods

Definition at line 91 of file GEO_PrimVDB.h.

SYS_FORCE_INLINE UT_Vector3 GEO_PrimVDB::getPos3 ( ) const
inline

Required interface methods

Definition at line 97 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!

void GEO_PrimVDB::getRes ( int64 rx,
int64 ry,
int64 rz 
) const
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()).

SYS_FORCE_INLINE UT_VDBType GEO_PrimVDB::getStorageType ( ) const
inline

Get the storage type of the grid.

Examples:
SIM/GAS_NetVDBSliceExchange.C.

Definition at line 158 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 549 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 537 of file GEO_PrimVDB.h.

SYS_FORCE_INLINE int GEO_PrimVDB::getTupleSize ( ) const
inline

Get the tuple size, usually 1 or 3.

Definition at line 162 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 530 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::getValues ( double *  f,
int  stride,
const UT_Vector3D pos,
int  num 
) const

Required interface methods

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

Required interface methods

void GEO_PrimVDB::getValues ( UT_Vector3D f,
int  stride,
const UT_Vector3D 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

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

Required interface methods

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

Required interface methods

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

Required interface methods

UT_Vector3D GEO_PrimVDB::getValueV3 ( const UT_Vector3 pos) const

Required interface methods

SYS_FORCE_INLINE GA_Offset GEO_PrimVDB::getVertexOffset ( ) const
inline

Required interface methods

Definition at line 88 of file GEO_PrimVDB.h.

fpreal GEO_PrimVDB::getVisDensity ( ) const
inline

Visualization accessors

Definition at line 401 of file GEO_PrimVDB.h.

fpreal GEO_PrimVDB::getVisIso ( ) const
inline

Visualization accessors

Definition at line 400 of file GEO_PrimVDB.h.

GEO_VolumeVisLod GEO_PrimVDB::getVisLod ( ) const
inline

Visualization accessors

Definition at line 402 of file GEO_PrimVDB.h.

const GEO_VolumeOptions& GEO_PrimVDB::getVisOptions ( ) const
inline

Visualization accessors

Definition at line 384 of file GEO_PrimVDB.h.

GEO_VolumeVis GEO_PrimVDB::getVisualization ( ) const
inline

Visualization accessors

Definition at line 399 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.

Examples:
SIM/GAS_NetVDBSliceExchange.C.
UT_Vector3 GEO_PrimVDB::getVoxelSize ( ) const

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

SYS_FORCE_INLINE bool GEO_PrimVDB::hasGrid ( ) const
inline

Definition at line 441 of file GEO_PrimVDB.h.

void GEO_PrimVDB::incrGridUniqueIds ( )
inlineprotected

Definition at line 642 of file GEO_PrimVDB.h.

void GEO_PrimVDB::incrMetadataUniqueId ( )
inlineprotected

Definition at line 638 of file GEO_PrimVDB.h.

void GEO_PrimVDB::incrTransformUniqueId ( )
inlineprotected

Definition at line 640 of file GEO_PrimVDB.h.

void GEO_PrimVDB::incrTreeUniqueId ( )
inlineprotected

Definition at line 636 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

void GEO_PrimVDB::indexToPos ( exint  x,
exint  y,
exint  z,
UT_Vector3D pos 
) const

Required interface methods

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.

bool GEO_PrimVDB::isDegenerate ( ) const
overridevirtual

Required interface methods

Implements GA_Primitive.

bool GEO_PrimVDB::isEmpty ( ) const
inline

True if the underlying grid has no voxels.

Definition at line 182 of file GEO_PrimVDB.h.

bool GEO_PrimVDB::isGridUnique ( ) const
inline

Returns true if the tree is not shared. If it is not shared, one can make destructive edits without makeGridUnique.

Definition at line 452 of file GEO_PrimVDB.h.

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

Register intrinsic attributes.

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 
)
SYS_FORCE_INLINE 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.

Examples:
SIM/GAS_NetVDBSliceExchange.C.

Definition at line 447 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

void GEO_PrimVDB::posToIndex ( UT_Vector3D  pos,
exint x,
exint y,
exint z 
) const

Required interface methods

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

Required interface methods

void GEO_PrimVDB::reverse ( )
overridevirtual

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::setCEGrid ( CE_VDBGrid cegrid)

Replace myCEGrid with cegrid and take ownership of it.

SYS_FORCE_INLINE void GEO_PrimVDB::setGrid ( const openvdb::GridBase &  grid,
bool  copyPosition = true 
)
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 501 of file GEO_PrimVDB.h.

void GEO_PrimVDB::setLocalTransform ( const UT_Matrix3D new_mat3)
overridevirtual

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.

SYS_FORCE_INLINE void GEO_PrimVDB::setPointOffset ( GA_Offset  pt)
inline

Required interface methods

Definition at line 94 of file GEO_PrimVDB.h.

SYS_FORCE_INLINE void GEO_PrimVDB::setPos3 ( const UT_Vector3 pos)
inline

Required interface methods

Definition at line 100 of file GEO_PrimVDB.h.

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 430 of file GEO_PrimVDB.h.

void GEO_PrimVDB::setVisOptions ( const GEO_VolumeOptions vis)
inline

Visualization accessors

Definition at line 385 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 388 of file GEO_PrimVDB.h.

void GEO_PrimVDB::stashed ( bool  beingstashed,
GA_Offset  offset = GA_INVALID_OFFSET 
)
overridevirtual

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

Reimplemented from GA_Primitive.

void GEO_PrimVDB::stealCEBuffers ( const GA_Primitive src)
overridevirtual

Steal the underlying CE buffer from the source.

Reimplemented from GA_Primitive.

void GEO_PrimVDB::transform ( const UT_Matrix4 mat)
overridevirtual

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 621 of file GEO_PrimVDB.h.


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