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;
63 int xres,
int yres,
int zres);
66 int xres,
int yres,
int zres,
81 void makeConstant(
exint cval);
91 bool posToIndex(
UT_Vector3 pos,
int &
x,
int &
y,
int &
z)
const;
119 exint getMemoryUsage()
const;
125 void getVoxelRes(
int &xres,
int &yres,
int &zres)
const;
130 int getXRes()
const {
return myField->getXRes(); }
131 int getYRes()
const {
return myField->getYRes(); }
132 int getZRes()
const {
return myField->getZRes(); }
138 void getWorldOrigin(
int &origx,
int &origy,
int &origz)
const;
142 { myVoxelSize = voxelsize;
143 myVoxelDiameter = voxelsize.
length(); }
149 { myField->setBorder(border, bval); }
154 return field()->isValidIndex(x, y, z);
165 int *ix,
int *iy,
int *iz,
186 buildCollisionLookup,
213 bool shouldMultiThread()
const
215 return field()->numTiles() > 1;
220 return (*field())(
x,
y,
z);
224 return (*field())(vit.
x(), vit.
y(), vit.
z());
255 exint collapseClassIndices();
259 bool shouldConnectIndices(
exint idx1,
exint idx2)
const;
262 initConnectedComponents,
302 exint countVoxelsInBox
314 int x,
int y,
int z);
317 int &
x,
int &
y,
int &
z);
321 const int *dx,
const int *dy,
const int *dz,
347 uncompressActiveTiles,
375 extrapolateActiveElements,
382 applyExtrapolatedParticleToField,
388 void applyExtrapolatedParticleToFieldPartial(
const UT_Vector3 & getBBoxOrig() const
int x() const
Retrieve the current location of the iterator.
GLint GLint GLsizei GLint border
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
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)
UT_VoxelBorderType getBorder() const
const UT_Vector3 & getSize() const
GLdouble GLdouble GLdouble z
#define THREADED_METHOD4(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4)
void setVoxelSize(const UT_Vector3 &voxelsize)
GLsizei const GLint box[]
Space-partitioning acceleration structure for points. Partitions the points into voxels to accelerate...
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.