14 #ifndef __SIM_RawIndexField__
15 #define __SIM_RawIndexField__
30 const int xMin,
const int yMin,
const int zMin,
31 const int xEnd,
const int yEnd,
const int zEnd
34 bool contains(
const int x,
const int y,
const int z)
const;
64 int xres,
int yres,
int zres);
67 int xres,
int yres,
int zres,
82 void makeConstant(
exint cval);
92 bool posToIndex(
UT_Vector3 pos,
int &
x,
int &
y,
int &
z)
const;
120 exint getMemoryUsage()
const;
126 void getVoxelRes(
int &xres,
int &yres,
int &zres)
const;
131 int getXRes()
const {
return myField->getXRes(); }
132 int getYRes()
const {
return myField->getYRes(); }
133 int getZRes()
const {
return myField->getZRes(); }
139 void getWorldOrigin(
int &origx,
int &origy,
int &origz)
const;
143 { myVoxelSize = voxelsize;
144 myVoxelDiameter = voxelsize.
length(); }
150 { myField->setBorder(border, bval); }
155 return field()->isValidIndex(x, y, z);
166 int *ix,
int *iy,
int *iz,
187 buildCollisionLookup,
214 bool shouldMultiThread()
const
216 return field()->numTiles() > 1;
221 return (*field())(
x,
y,
z);
225 return (*field())(vit.
x(), vit.
y(), vit.
z());
256 exint collapseClassIndices();
260 bool shouldConnectIndices(
exint idx1,
exint idx2)
const;
263 initConnectedComponents,
303 exint countVoxelsInBox
315 int x,
int y,
int z);
318 int &
x,
int &
y,
int &
z);
322 const int *dx,
const int *dy,
const int *dz,
348 uncompressActiveTiles,
376 extrapolateActiveElements,
383 applyExtrapolatedParticleToField,
389 void applyExtrapolatedParticleToFieldPartial(
const UT_Vector3 & getBBoxOrig() const
int x() const
Retrieve the current location of the iterator.
const UT_VoxelArrayI * field() const
exint getBorderValue() const
const openvdb::tools::PointIndexGrid * ptgridvdb
UT_Array< int64 > Indices
exint operator()(int x, int y, int z) const
const SIM_RawIndexField * altclosept
#define THREADED_METHOD1(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1)
const UT_Vector3 & getBBoxSize() const
Voxel boxes are used to define voxel groups.
UT_ValArray< bool > * tileoccupied
GLdouble GLdouble GLdouble z
UT_ValArray< UT_ValArray< sim_extrapelem > > * lists
constexpr SYS_FORCE_INLINE T length() const noexcept
const UT_Vector3 & getVoxelSize() const
SIM_FieldSample getSample() const
bool isValidIndex(int x, int y, int z) const
Returns true if the given x, y, z values lie inside the valid index.
#define THREADED_METHOD3(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3)
__hostdev__ float getValue(uint32_t i) const
UT_VoxelBorderType getBorder() const
const UT_Vector3 & getSize() const
#define THREADED_METHOD4(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4)
void setVoxelSize(const UT_Vector3 &voxelsize)
GLint GLint GLsizei GLint border
Space-partitioning acceleration structure for points. Partitions the points into voxels to accelerate...
LeafData & operator=(const LeafData &)=delete
const UT_VoxelArrayI * origpt
const UT_Vector3 & getOrig() const
UT_VoxelArrayI * fieldNC() const
bool OIIO_UTIL_API contains(string_view a, string_view b)
Does 'a' contain the string 'b' within it?
fpreal getVoxelDiameter() const
void setBorder(UT_VoxelBorderType border, exint bval)
exint getIndex(const UT_VoxelArrayIteratorF &vit) const
PcpNodeRef_ChildrenIterator begin(const PcpNodeRef::child_const_range &r)
Support for range-based for loops for PcpNodeRef children ranges.