首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为所有openvdb::Grid节点设置/取消设置活动状态

为所有openvdb::Grid节点设置/取消设置活动状态
EN

Stack Overflow用户
提问于 2014-09-19 21:47:15
回答 1查看 264关注 0票数 0

我有一个openvdb网格,我想重置所有不是背景的体素的活动状态。

目前,我正在使用一个运算符和函数openvdb::tools::foreach,它迭代所有值节点。特别是,我可能只想对给定边界框内的元素执行此操作。

代码语言:javascript
运行
复制
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)此外,可以快速设置为开(或关)所有体素,这些体素位于给定轴对齐边界框中且不是背景?

例如..就像这样

代码语言:javascript
运行
复制
openvdb::tree::setActiveState(const CoordBBox &bbox, bool on)
EN

回答 1

Stack Overflow用户

发布于 2014-09-19 21:59:41

在这种情况下,openvdb::Grid公开了以下可能有用的方法

代码语言:javascript
运行
复制
void clear()

清空此栅格,以便所有体素变为非活动的背景体素。

代码语言:javascript
运行
复制
void fill   (   const CoordBBox &   bbox,
                const ValueType &   value,
                bool                active = true 
             ) 

将给定轴对齐框中的所有体素设置为常量值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25935506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档