OpenVDB 11.0.0
Loading...
Searching...
No Matches
VolumeHDDA< TreeT, RayT, ChildNodeLevel > Class Template Reference

Helper class that implements Hierarchical Digital Differential Analyzers for ray intersections against a generic volume. More...

#include <openvdb/math/DDA.h>

Public Types

using ChainT = typename TreeT::RootNodeType::NodeChainType
 
using NodeT = typename ChainT::template Get<ChildNodeLevel>
 
using TimeSpanT = typename RayT::TimeSpan
 

Public Member Functions

 VolumeHDDA ()
 
template<typename AccessorT >
TimeSpanT march (RayT &ray, AccessorT &acc)
 
template<typename AccessorT , typename ListT >
void hits (RayT &ray, AccessorT &acc, ListT &times)
 

Friends

class VolumeHDDA< TreeT, RayT, ChildNodeLevel+1 >
 

Detailed Description

template<typename TreeT, typename RayT, int ChildNodeLevel>
class openvdb::v11_0::math::VolumeHDDA< TreeT, RayT, ChildNodeLevel >

Helper class that implements Hierarchical Digital Differential Analyzers for ray intersections against a generic volume.

The template argument ChildNodeLevel specifies the entry upper node level used for the hierarchical ray-marching. The final lowest level is always the leaf node level, i.e. not the voxel level!

Member Typedef Documentation

◆ ChainT

template<typename TreeT , typename RayT , int ChildNodeLevel>
using ChainT = typename TreeT::RootNodeType::NodeChainType

◆ NodeT

template<typename TreeT , typename RayT , int ChildNodeLevel>
using NodeT = typename ChainT::template Get<ChildNodeLevel>

◆ TimeSpanT

template<typename TreeT , typename RayT , int ChildNodeLevel>
using TimeSpanT = typename RayT::TimeSpan

Constructor & Destructor Documentation

◆ VolumeHDDA()

template<typename TreeT , typename RayT , int ChildNodeLevel>
VolumeHDDA ( )
inline

Member Function Documentation

◆ hits()

template<typename TreeT , typename RayT , int ChildNodeLevel>
template<typename AccessorT , typename ListT >
void hits ( RayT & ray,
AccessorT & acc,
ListT & times )
inline

ListType is a list of RayType::TimeSpan and is required to have the two methods: clear() and push_back(). Thus, it could be std::vector<typename RayType::TimeSpan> or std::deque<typename RayType::TimeSpan>.

◆ march()

template<typename TreeT , typename RayT , int ChildNodeLevel>
template<typename AccessorT >
TimeSpanT march ( RayT & ray,
AccessorT & acc )
inline

Friends And Related Symbol Documentation

◆ VolumeHDDA< TreeT, RayT, ChildNodeLevel+1 >

template<typename TreeT , typename RayT , int ChildNodeLevel>
friend class VolumeHDDA< TreeT, RayT, ChildNodeLevel+1 >
friend