|
| GU_SDF () |
|
virtual | ~GU_SDF () |
|
void | build (const GU_Detail *gdp, const GU_SDFParms &parms) |
| Build from the given gdp. More...
|
|
void | initEmpty (const UT_BoundingBox &bbox, int xres, int yres, int zres) |
|
UT_VoxelArrayF * | getFunction () const |
|
const GEO_PrimVolumeXform & | getHeightXform () const |
| Returns the transform of a heightfield SDF. More...
|
|
int | getHeightAxis () const |
| Returns the vertical axis of a heightfield SDF. More...
|
|
bool | isImplicit () const |
|
bool | isValid () const |
|
sdfImplicitType | getImplicitType () const |
| Returns the type of implicit surface, if any. More...
|
|
const UT_Vector3 & | getImplicitNormal () const |
|
void | getDivisions (int &xdiv, int &ydiv, int &zdiv) const |
|
fpreal | getDistance (const UT_Vector3 &pos) const |
| Calculates the SDF field at the point. More...
|
|
fpreal | getFastDistance (const UT_Vector3 &pos, fpreal &tol) const |
|
UT_Vector3 | getGradient (const UT_Vector3 &pos) const |
| Returns the gradient of the SDF at the point. More...
|
|
UT_Vector3 | findClosest (const UT_Vector3 &pos, fpreal iso=0.0, fpreal cfl_cond=0.9, fpreal tol=1e-3) const |
|
UT_Vector3 | advect (const UT_Vector3 &pos, fpreal dist, fpreal cfl_cond=0.9f, bool normalize_gradient=true) const |
|
bool | findSmallestOnEdge (fpreal &minvalue, UT_Vector3 &result, const UT_Vector3 &a, const UT_Vector3 &b, fpreal cutoff=SYS_FPREAL_MAX) const |
|
bool | findSmallestOnTri (fpreal &minValue, UT_Vector2 &resultBary, const UT_Vector3 &p0, const UT_Vector3 &p1, const UT_Vector3 &p2, fpreal cutoff=SYS_FPREAL_MAX) const |
|
template<typename FLOAT > |
bool | findRayIntersection (UT_Vector3T< FLOAT > &result, const UT_Vector3T< FLOAT > &a, const UT_Vector3T< FLOAT > &b, fpreal boundaryvalue=0.0) const |
|
const UT_Vector3 & | getVoxelSize () const |
|
fpreal | getVoxelDiameter () const |
|
const UT_Vector3 & | getSize () const |
|
const UT_Vector3 & | getOrig () const |
|
void | setOrig (const UT_Vector3 &o) |
|
void | setSize (const UT_Vector3 &s) |
|
void | computeCenterOfMass (UT_Vector3 ¢erofmass) const |
| Computes the center of mass of the SDF. More...
|
|
fpreal | computeVolume () const |
| Computes the volume of the SDF. More...
|
|
void | computeInertialTensor (UT_DMatrix3 &tensor, const UT_Vector3 ¢erofmass) const |
|
int64 | getMemoryUsage () const |
| Returns the amount of memory used by this object. More...
|
|
bool | isInverted () const |
|
void | setInverted (bool invert) |
|
fpreal | getOffset () const |
|
void | setOffset (fpreal offset) |
|
void | save (std::ostream &os) const |
|
bool | load (UT_IStream &is) |
|
|
void | sendRays (const GU_Detail *gdp, bool laserscan, bool usemetafield, fpreal tol) |
|
void | fixSigns (bool forcebounds) |
|
int | findConsensus (int x, int y, int z, int iteration, fpreal alpha, fpreal beta, UT_Array< gu_sdf_voxpos > &flippedlist) |
|
int | fastSweepCorrect (GU_RayIntersect *isect, int axis, int dir, fpreal alpha, fpreal tol) |
|
void | rasterize (const GEO_Primitive *prim) |
| Rasterizers... More...
|
|
void | rasterizePoly (const GEO_PrimPoly *poly) |
|
void | rasterizeRawTri (UT_Vector3 p1, UT_Vector3 p2, UT_Vector3 p3) |
| This takes coordinates in cell space. More...
|
|
void | setCellDist (int x, int y, int z, fpreal dist, fpreal maxdist=-1.0) |
|
void | setCellTentative (int x, int y, int z, fpreal tentative) |
| Sets a tentative value to a given cell. More...
|
|
gu_sdf_qelem * | getQElem (int x, int y, int z, bool create=true) |
|
void | updateQElem (gu_sdf_qelem *qelem) |
| If you change the weight of the qelem, this will update the queue. More...
|
|
fpreal | findMinDist (int x, int y, int z, fpreal olddist) const |
|
void | propagateQueue (fpreal maxdist) |
|
void | buildFromMinDist (GU_RayIntersect &isect, int x, int y, int z, int xw, int yw, int zw) |
|
void | buildFromPointCloud (const GU_Detail *gdp, const GU_SDFParms &parms) |
|
bool | findZeroCrossing (UT_VoxelROProbeCubeF &src_probe, fpreal &voxeldist, const fpreal isocontour) |
|
void | buildFromVolumeFIM (const UT_VoxelArrayF &src, const fpreal isocontour, const fpreal maxdist, const fpreal tolerance, const int iterations) |
|
| THREADED_METHOD7 (GU_SDF, activelist.entries() > 100, solveEikonalIterationFIM, UT_VoxelArrayF &, dst, UT_Array< UT_Array< UT_Vector3I >> &, newlist, UT_Array< bool > &, tileoccupied, const UT_VoxelArrayF &, olddst, const UT_Array< UT_Vector3I > &, activelist, const fpreal, maxdist, const fpreal, tolerance) |
|
void | solveEikonalIterationFIMPartial (UT_VoxelArrayF &dst, UT_Array< UT_Array< UT_Vector3I >> &newlist, UT_Array< bool > &tileoccupied, const UT_VoxelArrayF &olddst, const UT_Array< UT_Vector3I > &activelist, const fpreal maxdist, const fpreal tolerance, const UT_JobInfo &info) |
|
| THREADED_METHOD1 (GU_SDF, activelist.entries() > 100, assignSolvableLabelsFIM, const UT_Array< UT_Vector3I > &, activelist) |
|
void | assignSolvableLabelsFIMPartial (const UT_Array< UT_Vector3I > &activelist, const UT_JobInfo &info) |
|
| THREADED_METHOD1 (GU_SDF, activelist.entries() > 100, removeSolvableLabelsFIM, const UT_Array< UT_Vector3I > &, activelist) |
|
void | removeSolvableLabelsFIMPartial (const UT_Array< UT_Vector3I > &activelist, const UT_JobInfo &info) |
|
| THREADED_METHOD2 (GU_SDF, myQueueIndices->numTiles() > 20, loadFinishedCellNeighboursFIM, UT_Array< UT_Array< UT_Vector3I >> &, newlist, UT_Array< bool > &, tileoccupied) |
|
void | loadFinishedCellNeighboursFIMPartial (UT_Array< UT_Array< UT_Vector3I >> &list, UT_Array< bool > &tileoccupied, const UT_JobInfo &info) |
|
| THREADED_METHOD3 (GU_SDF, occupied.entries() > 100, uncompressActiveTilesFIM, UT_VoxelArrayF &, olddst, UT_VoxelArrayF &, dst, const UT_Array< bool > &, occupied) |
|
void | uncompressActiveTilesFIMPartial (UT_VoxelArrayF &olddst, UT_VoxelArrayF &dst, const UT_Array< bool > &occupied, const UT_JobInfo &info) |
|
| THREADED_METHOD5 (GU_SDF, src.numTiles() > 20, computeAndLabelZeroCrossingsFIM, UT_VoxelArrayF &, dst, UT_VoxelArrayF &, olddst, const UT_VoxelArrayF &, src, const fpreal, isocontour, const fpreal, maxdist) |
|
void | computeAndLabelZeroCrossingsFIMPartial (UT_VoxelArrayF &dst, UT_VoxelArrayF &olddst, const UT_VoxelArrayF &src, const fpreal isocontour, const fpreal maxdist, const UT_JobInfo &info) |
|
| THREADED_METHOD5 (GU_SDF, src.numTiles() > 20, buildVolumeZeroCrossings, UT_Array< UT_Array< UT_Vector3I >> &, crossingindices, UT_Array< UT_Array< fpreal >> &, crossingdists, const UT_VoxelArrayF &, src, const fpreal, isocontour, const fpreal, maxdist) |
|
void | buildVolumeZeroCrossingsPartial (UT_Array< UT_Array< UT_Vector3I >> &crossingindices, UT_Array< UT_Array< fpreal >> &crossingdists, const UT_VoxelArrayF &src, const fpreal isocontour, const fpreal maxdist, const UT_JobInfo &info) |
|
void | buildFromVolume (const UT_VoxelArrayF &src, const fpreal isocontour, const fpreal maxdist) |
|
UT_Plane | findPlaneFromNeighbour (const UT_Vector3 &sample, const GU_Detail *gdp, const GA_OffsetArray &neighbour, const GA_ROHandleV3 &normalattrib) const |
|
| THREADED_METHOD2 (GU_SDF, myVoxels->numTiles() > 16, copyVolumeSamples, const GU_Detail *, gdp, const UT_ValArray< const GEO_Primitive * > &, volumes) |
|
void | copyVolumeSamplesPartial (const GU_Detail *gdp, const UT_ValArray< const GEO_Primitive * > &volumes, const UT_JobInfo &info) |
|
GU_SDF This class builds a signed distance function from a given GU_Detail. Signed distance functions contain an approximate distance to the original surface in each voxel cell. If cell is inside the the geometry, it has a negative distance. Sidedness of geometry is determined by surface normals. The geometry should be relatively watertight.
Definition at line 302 of file GU_SDF.h.