OpenVDB 11.0.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
VolumeRender< IntersectorT, SamplerT > Class Template Reference

A (very) simple multithreaded volume render specifically for scalar density. More...

#include <openvdb/tools/RayTracer.h>

Public Types

using GridType = typename IntersectorT::GridType
 
using RayType = typename IntersectorT::RayType
 
using ValueType = typename GridType::ValueType
 
using AccessorType = typename GridType::ConstAccessor
 
using SamplerType = tools::GridSampler<AccessorType, SamplerT>
 

Public Member Functions

 VolumeRender (const IntersectorT &inter, BaseCamera &camera)
 Constructor taking an intersector and a base camera.
 
 VolumeRender (const VolumeRender &other)
 Copy constructor which creates a thread-safe clone.
 
void render (bool threaded=true) const
 Perform the actual (potentially multithreaded) volume rendering.
 
void setCamera (BaseCamera &camera)
 Set the camera derived from the abstract BaseCamera class.
 
void setIntersector (const IntersectorT &inter)
 Set the intersector that performs the actual intersection of the rays against the volume.
 
void setLightDir (Real x, Real y, Real z)
 Set the vector components of a directional light source.
 
void setLightColor (Real r, Real g, Real b)
 Set the color of the directional light source.
 
void setPrimaryStep (Real primaryStep)
 Set the integration step-size in voxel units for the primay ray.
 
void setShadowStep (Real shadowStep)
 Set the integration step-size in voxel units for the primay ray.
 
void setScattering (Real x, Real y, Real z)
 Set Scattering coefficients.
 
void setAbsorption (Real x, Real y, Real z)
 Set absorption coefficients.
 
void setLightGain (Real gain)
 Set parameter that imitates multi-scattering. A value of zero implies no multi-scattering.
 
void setCutOff (Real cutOff)
 Set the cut-off value for density and transmittance.
 
void print (std::ostream &os=std::cout, int verboseLevel=1)
 Print parameters, statistics, memory usage and other information.
 
void operator() (const tbb::blocked_range< size_t > &range) const
 Public method required by tbb::parallel_for.
 

Detailed Description

template<typename IntersectorT, typename SamplerT = tools::BoxSampler>
class openvdb::v11_0::tools::VolumeRender< IntersectorT, SamplerT >

A (very) simple multithreaded volume render specifically for scalar density.

Included primarily as a reference implementation.

Note
It will only compile if the IntersectorT is templated on a Grid with a floating-point voxel type.

Member Typedef Documentation

◆ AccessorType

template<typename IntersectorT , typename SamplerT = tools::BoxSampler>
using AccessorType = typename GridType::ConstAccessor

◆ GridType

template<typename IntersectorT , typename SamplerT = tools::BoxSampler>
using GridType = typename IntersectorT::GridType

◆ RayType

template<typename IntersectorT , typename SamplerT = tools::BoxSampler>
using RayType = typename IntersectorT::RayType

◆ SamplerType

template<typename IntersectorT , typename SamplerT = tools::BoxSampler>
using SamplerType = tools::GridSampler<AccessorType, SamplerT>

◆ ValueType

template<typename IntersectorT , typename SamplerT = tools::BoxSampler>
using ValueType = typename GridType::ValueType

Constructor & Destructor Documentation

◆ VolumeRender() [1/2]

template<typename IntersectorT , typename SampleT >
VolumeRender ( const IntersectorT & inter,
BaseCamera & camera )
inline

Constructor taking an intersector and a base camera.

◆ VolumeRender() [2/2]

template<typename IntersectorT , typename SampleT >
VolumeRender ( const VolumeRender< IntersectorT, SamplerT > & other)
inline

Copy constructor which creates a thread-safe clone.

Member Function Documentation

◆ operator()()

template<typename IntersectorT , typename SampleT >
void operator() ( const tbb::blocked_range< size_t > & range) const
inline

Public method required by tbb::parallel_for.

Warning
Never call it directly.

◆ print()

template<typename IntersectorT , typename SampleT >
void print ( std::ostream & os = std::cout,
int verboseLevel = 1 )
inline

Print parameters, statistics, memory usage and other information.

Parameters
osa stream to which to write textual information
verboseLevel1: print parameters only; 2: include grid statistics; 3: include memory usage

◆ render()

template<typename IntersectorT , typename SampleT >
void render ( bool threaded = true) const
inline

Perform the actual (potentially multithreaded) volume rendering.

◆ setAbsorption()

template<typename IntersectorT , typename SamplerT = tools::BoxSampler>
void setAbsorption ( Real x,
Real y,
Real z )
inline

Set absorption coefficients.

◆ setCamera()

template<typename IntersectorT , typename SamplerT = tools::BoxSampler>
void setCamera ( BaseCamera & camera)
inline

Set the camera derived from the abstract BaseCamera class.

◆ setCutOff()

template<typename IntersectorT , typename SamplerT = tools::BoxSampler>
void setCutOff ( Real cutOff)
inline

Set the cut-off value for density and transmittance.

◆ setIntersector()

template<typename IntersectorT , typename SampleT >
void setIntersector ( const IntersectorT & inter)
inline

Set the intersector that performs the actual intersection of the rays against the volume.

◆ setLightColor()

template<typename IntersectorT , typename SamplerT = tools::BoxSampler>
void setLightColor ( Real r,
Real g,
Real b )
inline

Set the color of the directional light source.

◆ setLightDir()

template<typename IntersectorT , typename SamplerT = tools::BoxSampler>
void setLightDir ( Real x,
Real y,
Real z )
inline

Set the vector components of a directional light source.

Exceptions
ArithmeticErrorif input is a null vector.

◆ setLightGain()

template<typename IntersectorT , typename SamplerT = tools::BoxSampler>
void setLightGain ( Real gain)
inline

Set parameter that imitates multi-scattering. A value of zero implies no multi-scattering.

◆ setPrimaryStep()

template<typename IntersectorT , typename SamplerT = tools::BoxSampler>
void setPrimaryStep ( Real primaryStep)
inline

Set the integration step-size in voxel units for the primay ray.

◆ setScattering()

template<typename IntersectorT , typename SamplerT = tools::BoxSampler>
void setScattering ( Real x,
Real y,
Real z )
inline

Set Scattering coefficients.

◆ setShadowStep()

template<typename IntersectorT , typename SamplerT = tools::BoxSampler>
void setShadowStep ( Real shadowStep)
inline

Set the integration step-size in voxel units for the primay ray.