我有一个openvdb网格,我想重置所有不是背景的体素的活动状态。
目前我正在使用一个运算符和函数openvdb :: tools :: foreach,它遍历所有值节点。 特别是我可能只想对给定边界框内的元素进行操作
openvdb::CoordBBox myBoundingBox;
struct Activator {
static inline void op(const openvdb::FloatGrid::ValueAllIter& iter) {
if ( [not background] )
iter->setActiveState(myBoundingBox.isInside(iter->getCoord()));
}
};
// Apply the function to all values.
openvdb::tools::foreach(grid->beginValueAll(), Activator ::op);
1)是否有更好的方法可以开启/关闭所有这些体素?
2)此外,可以快速设置打开(或关闭)与给定轴对齐的边界框并且不是背景的所有体素?
例如
openvdb::tree::setActiveState(const CoordBBox &bbox, bool on)
答案 0 :(得分:0)
openvdb :: Grid公开了以下可能在这种情况下有用的方法
void clear()
清空此网格,以便所有体素变为非活动背景体素。
void fill ( const CoordBBox & bbox,
const ValueType & value,
bool active = true
)
将给定轴对齐框内的所有体素设置为常量值。