OpenVDB 10.0.1
|
This class provides the public API for intersecting a ray with a generic (e.g. density) volume. More...
#include <openvdb/tools/RayIntersector.h>
Public Types | |
using | GridType = GridT |
using | RayType = RayT |
using | RealType = typename RayT::RealType |
using | RootType = typename GridT::TreeType::RootNodeType |
using | TreeT = tree::Tree< typename RootType::template ValueConverter< bool >::Type > |
Public Member Functions | |
VolumeRayIntersector (const GridT &grid, int dilationCount=0) | |
Grid constructor. More... | |
VolumeRayIntersector (const GridT &grid, const math::CoordBBox &bbox) | |
Grid and BBox constructor. More... | |
VolumeRayIntersector (const VolumeRayIntersector &other) | |
Shallow copy constructor. More... | |
~VolumeRayIntersector () | |
Destructor. More... | |
bool | setIndexRay (const RayT &iRay) |
Return false if the index ray misses the bbox of the grid. More... | |
bool | setWorldRay (const RayT &wRay) |
Return false if the world ray misses the bbox of the grid. More... | |
RayT::TimeSpan | march () |
bool | march (RealType &t0, RealType &t1) |
Return true if the ray intersects active values, i.e. either active voxels or tiles. Only when a hit is detected are t0 and t1 updated with the corresponding entry and exit times along the INDEX ray! More... | |
template<typename ListType > | |
void | hits (ListType &list) |
Generates a list of hits along the ray. More... | |
Vec3R | getIndexPos (RealType time) const |
Return the floating-point index position along the current index ray at the specified time. More... | |
Vec3R | getWorldPos (RealType time) const |
Return the floating-point world position along the current index ray at the specified time. More... | |
RealType | getWorldTime (RealType time) const |
const GridT & | grid () const |
Return a const reference to the input grid. More... | |
const TreeT & | tree () const |
Return a const reference to the (potentially dilated) bool tree used to accelerate the ray marching. More... | |
const math::CoordBBox & | bbox () const |
Return a const reference to the BBOX of the grid. More... | |
void | print (std::ostream &os=std::cout, int verboseLevel=1) |
Print bbox, statistics, memory usage and other information. More... | |
This class provides the public API for intersecting a ray with a generic (e.g. density) volume.
Internally it performs the actual hierarchical tree node traversal.
using GridType = GridT |
using RayType = RayT |
using RealType = typename RayT::RealType |
using RootType = typename GridT::TreeType::RootNodeType |
using TreeT = tree::Tree<typename RootType::template ValueConverter<bool>::Type> |
|
inline |
Grid constructor.
grid | Generic grid to intersect rays against. |
dilationCount | The number of voxel dilations performed on (a boolean copy of) the input grid. This allows the intersector to account for the size of interpolation kernels in client code. |
RuntimeError | if the voxels of the grid are not uniform or the grid is empty. |
|
inline |
Grid and BBox constructor.
grid | Generic grid to intersect rays against. |
bbox | The axis-aligned bounding-box in the index space of the grid. |
RuntimeError | if the voxels of the grid are not uniform or the grid is empty. |
|
inline |
Shallow copy constructor.
|
inline |
Destructor.
|
inline |
Return a const reference to the BBOX of the grid.
Return the floating-point index position along the current index ray at the specified time.
Return the floating-point world position along the current index ray at the specified time.
|
inline |
Return a const reference to the input grid.
|
inline |
Generates a list of hits along the ray.
list | List of hits represented as time spans. |
|
inline |
Return true
if the ray intersects active values, i.e. either active voxels or tiles. Only when a hit is detected are t0 and t1 updated with the corresponding entry and exit times along the INDEX ray!
t0 | If the return value > 0 this is the time of the first hit of an active tile or leaf. |
t1 | If the return value > t0 this is the time of the first hit (> t0) of an inactive tile or exit point of the BBOX for the leaf nodes. |
|
inline |
Print bbox, statistics, memory usage and other information.
os | a stream to which to write textual information |
verboseLevel | 1: print bbox only; 2: include boolean tree statistics; 3: include memory usage |
|
inline |
Return false
if the index ray misses the bbox of the grid.
iRay | Ray represented in index space. |
|
inline |
Return false
if the world ray misses the bbox of the grid.
wRay | Ray represented in world space. |
Since hit times are computed with respect to the ray represented in index space of the current grid, it is recommended that either the client code uses getIndexPos to compute index position from hit times or alternatively keeps an instance of the index ray and instead uses setIndexRay to initialize the ray.
|
inline |
Return a const reference to the (potentially dilated) bool tree used to accelerate the ray marching.