OpenVDB  9.0.1
Public Types | Public Member Functions | List of all members
LevelSetRayIntersector< GridT, SearchImplT, NodeLevel, RayT > Class Template Reference

This class provides the public API for intersecting a ray with a narrow-band level set. More...

#include <openvdb/tools/RayIntersector.h>

Public Types

using GridType = GridT
 
using RayType = RayT
 
using RealType = typename RayT::RealType
 
using Vec3Type = typename RayT::Vec3T
 
using ValueT = typename GridT::ValueType
 
using TreeT = typename GridT::TreeType
 

Public Member Functions

 LevelSetRayIntersector (const GridT &grid, const ValueT &isoValue=zeroVal< ValueT >())
 Constructor. More...
 
const ValueTgetIsoValue () const
 Return the iso-value used for ray-intersections. More...
 
bool intersectsIS (const RayType &iRay) const
 Return true if the index-space ray intersects the level set. More...
 
bool intersectsIS (const RayType &iRay, RealType &iTime) const
 Return true if the index-space ray intersects the level set. More...
 
bool intersectsIS (const RayType &iRay, Vec3Type &xyz) const
 Return true if the index-space ray intersects the level set. More...
 
bool intersectsIS (const RayType &iRay, Vec3Type &xyz, RealType &iTime) const
 Return true if the index-space ray intersects the level set. More...
 
bool intersectsWS (const RayType &wRay) const
 Return true if the world-space ray intersects the level set. More...
 
bool intersectsWS (const RayType &wRay, RealType &wTime) const
 Return true if the world-space ray intersects the level set. More...
 
bool intersectsWS (const RayType &wRay, Vec3Type &world) const
 Return true if the world-space ray intersects the level set. More...
 
bool intersectsWS (const RayType &wRay, Vec3Type &world, RealType &wTime) const
 Return true if the world-space ray intersects the level set. More...
 
bool intersectsWS (const RayType &wRay, Vec3Type &world, Vec3Type &normal) const
 Return true if the world-space ray intersects the level set. More...
 
bool intersectsWS (const RayType &wRay, Vec3Type &world, Vec3Type &normal, RealType &wTime) const
 Return true if the world-space ray intersects the level set. More...
 

Detailed Description

template<typename GridT, typename SearchImplT = LinearSearchImpl<GridT>, int NodeLevel = GridT::TreeType::RootNodeType::ChildNodeType::LEVEL, typename RayT = math::Ray<Real>>
class openvdb::v9_0::tools::LevelSetRayIntersector< GridT, SearchImplT, NodeLevel, RayT >

This class provides the public API for intersecting a ray with a narrow-band level set.

It wraps a SearchImplT with a simple public API and performs the actual hierarchical tree node and voxel traversal.

Warning
Use the (default) copy-constructor to make sure each computational thread has their own instance of this class. This is important since the SearchImplT contains a ValueAccessor that is not thread-safe. However copying is very efficient.
See also
tools/RayTracer.h for examples of intended usage.

Member Typedef Documentation

using GridType = GridT
using RayType = RayT
using RealType = typename RayT::RealType
using TreeT = typename GridT::TreeType
using ValueT = typename GridT::ValueType
using Vec3Type = typename RayT::Vec3T

Constructor & Destructor Documentation

LevelSetRayIntersector ( const GridT &  grid,
const ValueT isoValue = zeroVal<ValueT>() 
)
inline

Constructor.

Parameters
gridlevel set grid to intersect rays against.
isoValueoptional iso-value for the ray-intersection.

Member Function Documentation

const ValueT& getIsoValue ( ) const
inline

Return the iso-value used for ray-intersections.

bool intersectsIS ( const RayType iRay) const
inline

Return true if the index-space ray intersects the level set.

Parameters
iRayray represented in index space.
bool intersectsIS ( const RayType iRay,
RealType iTime 
) const
inline

Return true if the index-space ray intersects the level set.

Parameters
iRayray represented in index space.
iTimeif an intersection was found it is assigned the time of the intersection along the index ray.
bool intersectsIS ( const RayType iRay,
Vec3Type xyz 
) const
inline

Return true if the index-space ray intersects the level set.

Parameters
iRayray represented in index space.
xyzif an intersection was found it is assigned the intersection point in index space, otherwise it is unchanged.
bool intersectsIS ( const RayType iRay,
Vec3Type xyz,
RealType iTime 
) const
inline

Return true if the index-space ray intersects the level set.

Parameters
iRayray represented in index space.
xyzif an intersection was found it is assigned the intersection point in index space, otherwise it is unchanged.
iTimeif an intersection was found it is assigned the time of the intersection along the index ray.
bool intersectsWS ( const RayType wRay) const
inline

Return true if the world-space ray intersects the level set.

Parameters
wRayray represented in world space.
bool intersectsWS ( const RayType wRay,
RealType wTime 
) const
inline

Return true if the world-space ray intersects the level set.

Parameters
wRayray represented in world space.
wTimeif an intersection was found it is assigned the time of the intersection along the world ray.
bool intersectsWS ( const RayType wRay,
Vec3Type world 
) const
inline

Return true if the world-space ray intersects the level set.

Parameters
wRayray represented in world space.
worldif an intersection was found it is assigned the intersection point in world space, otherwise it is unchanged
bool intersectsWS ( const RayType wRay,
Vec3Type world,
RealType wTime 
) const
inline

Return true if the world-space ray intersects the level set.

Parameters
wRayray represented in world space.
worldif an intersection was found it is assigned the intersection point in world space, otherwise it is unchanged.
wTimeif an intersection was found it is assigned the time of the intersection along the world ray.
bool intersectsWS ( const RayType wRay,
Vec3Type world,
Vec3Type normal 
) const
inline

Return true if the world-space ray intersects the level set.

Parameters
wRayray represented in world space.
worldif an intersection was found it is assigned the intersection point in world space, otherwise it is unchanged.
normalif an intersection was found it is assigned the normal of the level set surface in world space, otherwise it is unchanged.
bool intersectsWS ( const RayType wRay,
Vec3Type world,
Vec3Type normal,
RealType wTime 
) const
inline

Return true if the world-space ray intersects the level set.

Parameters
wRayray represented in world space.
worldif an intersection was found it is assigned the intersection point in world space, otherwise it is unchanged.
normalif an intersection was found it is assigned the normal of the level set surface in world space, otherwise it is unchanged.
wTimeif an intersection was found it is assigned the time of the intersection along the world ray.