我有一个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)
发布于 2014-09-19 13:59:41
在这种情况下,openvdb::Grid公开了以下可能有用的方法
void clear()
清空此栅格,以便所有体素变为非活动的背景体素。
void fill ( const CoordBBox & bbox,
const ValueType & value,
bool active = true
)
将给定轴对齐框中的所有体素设置为常量值。
https://stackoverflow.com/questions/25935506
复制相似问题