OpenVDB: SphereSettings< AttributeTs, RadiusAttributeT, FilterT > Struct Template Reference

OpenVDB 13.0.0

Loading...
Searching...
No Matches
SphereSettings< AttributeTs, RadiusAttributeT, FilterT > Struct Template Reference

Generic settings for narrow band spherical stamping with a uniform or varying radius and optionally with closest point attribute transfer of arbitrary attributes. See the struct member documentation for detailed behavior. More...

`#include <openvdb/points/PointRasterizeSDF.h>`

## Public Types
using | AttributeTypes = AttributeTs
using | RadiusAttributeType = RadiusAttributeT
using | FilterType = FilterT
using | RadiusScaleT = typename PromoteType<RadiusAttributeT>::Highest

## Public Attributes
std::string | radius = ""
RadiusScaleT | radiusScale = RadiusScaleT(1.0)
Real | halfband = LEVEL_SET_HALF_WIDTH
math::Transform::Ptr | transform = nullptr
std::vector< std::string > | attributes
const FilterT * | filter = nullptr
util::NullInterrupter * | interrupter = nullptr

## Detailed Description

template<typename AttributeTs = TypeList<>, typename RadiusAttributeT = float, typename FilterT = NullFilter>
struct openvdb::v13_0::points::SphereSettings< AttributeTs, RadiusAttributeT, FilterT >

Generic settings for narrow band spherical stamping with a uniform or varying radius and optionally with closest point attribute transfer of arbitrary attributes. See the struct member documentation for detailed behavior.

Note
  There exists other more complex kernels that derive from this struct, but on its own it represents the settings needed to perform basic narrow band sphere stamping. Parameters are interpreted in the same way across derived classes.

## Member Typedef Documentation

## ◆ AttributeTypes

template<typename AttributeTs = TypeList<>, typename RadiusAttributeT = float, typename FilterT = NullFilter>

using AttributeTypes = AttributeTs

## ◆ FilterType

template<typename AttributeTs = TypeList<>, typename RadiusAttributeT = float, typename FilterT = NullFilter>

using FilterType = FilterT

## ◆ RadiusAttributeType

template<typename AttributeTs = TypeList<>, typename RadiusAttributeT = float, typename FilterT = NullFilter>

using RadiusAttributeType = RadiusAttributeT

## ◆ RadiusScaleT

template<typename AttributeTs = TypeList<>, typename RadiusAttributeT = float, typename FilterT = NullFilter>

using RadiusScaleT = typename PromoteType<RadiusAttributeT>::Highest

Parameters

  radiusScale | the scale applied to every world space radius value

Note
  If no radius attribute is provided, this is used as the uniform world space radius for every point. Most surfacing operations will perform faster if they are able to assume a uniform radius (so use this value instead of setting the radius parameter if radii are uniform).
  Type of the scale is always double precision (the Promote exists as this could be a vector scale - see EllipsoidSettings).

## Member Data Documentation

## ◆ attributes

template<typename AttributeTs = TypeList<>, typename RadiusAttributeT = float, typename FilterT = NullFilter>

std::vector<std::string> attributes

Parameters

  attributes | list of attributes to transfer

if the attributes vector is empty, only the surface is built. Otherwise, every voxel's closest point is used to transfer each attribute in the attributes parameter to a new grid of matching topology. The built surface is always the first grid returned from the surfacing operation, followed by attribute grids in the order that they appear in this vector.

The AttributeTs template parameter should be a TypeList of the required or possible attributes types. Example:

// compile support for int, double and Vec3f attribute transferring
using SupportedTypes = TypeList<int, double, Vec3f>;
SphereSettings<SupportedTypes> s;
// Produce 4 additional grids from the "v", "Cd", "id" and "density"
// attributes. Their attribute value types must be available in the
// provided TypeList
s.attributes = {"v", "Cd", "id", "density"};
openvdb::v13_0::TypeList
A list of types (not necessarily unique).
Definition TypeList.h:578
openvdb::v13_0::points::SphereSettings
Generic settings for narrow band spherical stamping with a uniform or varying radius and optionally w...
Definition PointRasterizeSDF.h:158
openvdb::v13_0::points::SphereSettings::attributes
std::vector< std::string > attributes
Definition PointRasterizeSDF.h:217

A runtime error will be thrown if no equivalent type for a given attribute is found in the AttributeTs TypeList.

Note
  The destination types of these grids is equal to the ValueConverter result of the attribute type applied to the PointDataGridT.

## ◆ filter

template<typename AttributeTs = TypeList<>, typename RadiusAttributeT = float, typename FilterT = NullFilter>

const FilterT* filter = nullptr

Parameters

  filter | a filter to apply to points. Only points that evaluate to true using this filter are rasterized, regardless of any other filtering derived schemes may use.

## ◆ halfband

template<typename AttributeTs = TypeList<>, typename RadiusAttributeT = float, typename FilterT = NullFilter>

Real halfband = LEVEL_SET_HALF_WIDTH

Parameters

  halfband | the half band width of the generated surface.

## ◆ interrupter

template<typename AttributeTs = TypeList<>, typename RadiusAttributeT = float, typename FilterT = NullFilter>

util::NullInterrupter* interrupter = nullptr

Parameters

  interrupter | optional interrupter

## ◆ radius

template<typename AttributeTs = TypeList<>, typename RadiusAttributeT = float, typename FilterT = NullFilter>

std::string radius = ""

Parameters

  radius | the attribute containing the world space radius

if the radius parameter is an empty string then the radiusScale parameter is used as a uniform world space radius to generate a fixed surface mask. Otherwise, a point attribute representing the world space radius of each point of type RadiusAttributeT is expected to exist and radii are scaled by the radiusScale parameter.

## ◆ radiusScale

template<typename AttributeTs = TypeList<>, typename RadiusAttributeT = float, typename FilterT = NullFilter>

RadiusScaleT radiusScale = RadiusScaleT(1.0)

## ◆ transform

template<typename AttributeTs = TypeList<>, typename RadiusAttributeT = float, typename FilterT = NullFilter>

math::Transform::Ptr transform = nullptr

Parameters

  transform | the target transform for the surface. Most surfacing operations impose linear restrictions on the target transform.