Class used to generate a grid of type GridType
containing a narrow-band level set representation of a tapered capsule.
More...
#include <openvdb/tools/impl/LevelSetTubesImpl.h>
Inherits ConvexVoxelizer< GridType, TaperedCapsuleVoxelizer< GridType, InterruptT >, InterruptT >.
|
void | iterate () |
| The function the derived class calls to create the level set, working in index space other than setting signed distance values. More...
|
|
ValueT | signedDistance (const Vec3T &) const |
| Computes the signed distance from a point to the convex region in index space. More...
|
|
ValueT | tilePointSignedDistance (const Vec3T &p) const |
| Computes the signed distance for tiles in index space, considering the center of the tile. This method is optional to override and defaults to signedDistance . More...
|
|
|
static ValueT | tileCeil (const ValueT &x, const ValueT &step) |
| Rounds an input scalar up to the nearest valid ordinate of tile of a specified size. More...
|
|
static ValueT | tileCeil (const ValueT &x, const T &step) |
| Rounds an input scalar up to the nearest valid ordinate of tile of a specified size. More...
|
|
static ValueT | tileFloor (const ValueT &x, const ValueT &step) |
| Rounds an input scalar down to the nearest valid ordinate of tile of a specified size. More...
|
|
static ValueT | tileFloor (const ValueT &x, const T &step) |
| Rounds an input scalar down to the nearest valid ordinate of tile of a specified size. More...
|
|
static ValueT | circleBottom (const ValueT &x0, const ValueT &y0, const ValueT &r, const ValueT &x) |
| Computes the bottom y-coordinate of a circle at a given x position. More...
|
|
static ValueT | circleTop (const ValueT &x0, const ValueT &y0, const ValueT &r, const ValueT &x) |
| Computes the top y-coordinate of a circle at a given x position. More...
|
|
static ValueT | sphereBottom (const ValueT &x0, const ValueT &y0, const ValueT &z0, const ValueT &r, const ValueT &x, const ValueT &y) |
| Computes the bottom z-coordinate of a sphere at a given (x, y) position. More...
|
|
static ValueT | sphereTop (const ValueT &x0, const ValueT &y0, const ValueT &z0, const ValueT &r, const ValueT &x, const ValueT &y) |
| Computes the top z-coordinate of a sphere at a given (x, y) position. More...
|
|
|
std::function< bool(ValueT &, ValueT &, const ValueT &, const ValueT &)> | bottomTop |
| Find where a vertical infinite line intersects a convex region dilated by the half width. More...
|
|
XYRangeData | mXYData |
|
template<typename GridType, typename InterruptT = util::NullInterrupter>
class openvdb::v12_1::tools::lvlset::TaperedCapsuleVoxelizer< GridType, InterruptT >
Class used to generate a grid of type GridType
containing a narrow-band level set representation of a tapered capsule.
- Note
GridType::ValueType
must be a floating-point scalar.
Constructor.
- Parameters
-
grid | scalar grid to populate the level set in |
threaded | center of the sphere in world units |
interrupter | pointer to optional interrupter. Use template argument util::NullInterrupter if no interruption is desired. |
- Note
- The voxel size and half width are determined from the input grid, meaning the voxel size and background value need to be set prior to voxelization
|
inlinestaticprotectedinherited |
Computes the bottom y-coordinate of a circle at a given x position.
- Parameters
-
x0 | X-coordinate of the circle's center. |
y0 | Y-coordinate of the circle's center. |
r | Radius of the circle. |
x | X-coordinate for which to compute the bottom y-coordinate. |
- Returns
- The y-coordinate at the bottom of the circle for the given x position.
|
inlinestaticprotectedinherited |
Computes the top y-coordinate of a circle at a given x position.
- Parameters
-
x0 | X-coordinate of the circle's center. |
y0 | Y-coordinate of the circle's center. |
r | Radius of the circle. |
x | X-coordinate for which to compute the top y-coordinate. |
- Returns
- The y-coordinate at the top of the circle for the given x position.
ValueT halfWidth |
( |
| ) |
const |
|
inlineinherited |
Return the half width of the narrow-band level set.
The function the derived class calls to create the level set, working in index space other than setting signed distance values.
- Note
- This function handles both parallel and serial iterations. If running in serial mode, it flood fills the tile topology immediately; otherwise, it avoids duplicating nontrivial tree topology over multiple threads. This method also checks for background tiles that are too thin to fit and delegates accordingly.
void operator() |
( |
const math::Vec3< ScalarType > & |
pt1, |
|
|
const math::Vec3< ScalarType > & |
pt2, |
|
|
const ScalarType & |
radius1, |
|
|
const ScalarType & |
radius2 |
|
) |
| |
|
inline |
Create a tapered capsule.
- Parameters
-
pt1 | first endpoint of the tapered capsule in world units |
pt2 | second endpoint of the tapered capsule in world units |
radius1 | radius of the tapered capsule at pt1 in world units |
radius2 | radius of the tapered capsule at pt2 in world units |
ValueT signedDistance |
( |
const Vec3T & |
| ) |
const |
|
inlineprotectedinherited |
Computes the signed distance from a point to the convex region in index space.
- Parameters
-
p | The point in 3D space for which to compute the signed distance. |
|
inlinestaticprotectedinherited |
Computes the bottom z-coordinate of a sphere at a given (x, y) position.
- Parameters
-
x0 | X-coordinate of the sphere's center. |
y0 | Y-coordinate of the sphere's center. |
z0 | Z-coordinate of the sphere's center. |
r | Radius of the sphere. |
x | X-coordinate for which to compute the bottom z-coordinate. |
y | Y-coordinate for which to compute the bottom z-coordinate. |
- Returns
- The z-coordinate at the bottom of the sphere for the given (x, y) position.
|
inlinestaticprotectedinherited |
Computes the top z-coordinate of a sphere at a given (x, y) position.
- Parameters
-
x0 | X-coordinate of the sphere's center. |
y0 | Y-coordinate of the sphere's center. |
z0 | Z-coordinate of the sphere's center. |
r | Radius of the sphere. |
x | X-coordinate for which to compute the top z-coordinate. |
y | Y-coordinate for which to compute the top z-coordinate. |
- Returns
- The z-coordinate at the top of the sphere for the given (x, y) position.
static ValueT tileCeil |
( |
const ValueT & |
x, |
|
|
const ValueT & |
step |
|
) |
| |
|
inlinestaticprotectedinherited |
Rounds an input scalar up to the nearest valid ordinate of tile of a specified size.
- Parameters
-
x | Input value. |
step | Tile step size. |
- Returns
- The ceiling of the value based on the tile size.
static ValueT tileCeil |
( |
const ValueT & |
x, |
|
|
const T & |
step |
|
) |
| |
|
inlinestaticprotectedinherited |
Rounds an input scalar up to the nearest valid ordinate of tile of a specified size.
- Template Parameters
-
T | Any integral type (int, unsigned int, size_t, etc.) |
- Parameters
-
x | Input value. |
step | Tile step size. |
- Returns
- The ceiling of the value based on the tile size.
static ValueT tileFloor |
( |
const ValueT & |
x, |
|
|
const ValueT & |
step |
|
) |
| |
|
inlinestaticprotectedinherited |
Rounds an input scalar down to the nearest valid ordinate of tile of a specified size.
- Parameters
-
x | Input value. |
step | Tile step size. |
- Returns
- The ceiling of the value based on the tile size.
static ValueT tileFloor |
( |
const ValueT & |
x, |
|
|
const T & |
step |
|
) |
| |
|
inlinestaticprotectedinherited |
Rounds an input scalar down to the nearest valid ordinate of tile of a specified size.
- Template Parameters
-
T | Any integral type (int, unsigned int, size_t, etc.) |
- Parameters
-
x | Input value. |
step | Tile step size. |
- Returns
- The ceiling of the value based on the tile size.
ValueT tilePointSignedDistance |
( |
const Vec3T & |
p | ) |
const |
|
inlineprotectedinherited |
Computes the signed distance for tiles in index space, considering the center of the tile. This method is optional to override and defaults to signedDistance
.
- Parameters
-
p | The point at the center of the tile in 3D space. |
- Note
- This can be useful for cases that build objects from multiple primitives, e.g. dilated mesh is built by constructing and unioning open prisms and open tube wedges. A tile might not fully fit in an open prism but might fit in the union of a prism and wedge, and so in this case it might make sense to use the sdf for an offset triangle on tiles during the open prism scan.
ValueT voxelSize |
( |
| ) |
const |
|
inlineinherited |
Return the voxel size of the grid.
std::function<bool(ValueT&, ValueT&, const ValueT&, const ValueT&)> bottomTop |
|
protectedinherited |
Find where a vertical infinite line intersects a convex region dilated by the half width.
- Parameters
-
[out] | zb | Reference to the z ordinate where the bottom intersection occurs. |
[out] | zt | Reference to the z ordinate where the top intersection occurs. |
[in] | x | The x ordinate of the infinte line. |
[in] | y | The y ordinate of the infinte line. |
- Returns
- true if an intersection occurs; otherwise false.
- Note
- The derived class can override this lambda to implement different behavior for degenerate cases.