2014-09-19 34 views
0

我有一個openvdb網格,我想重置所有不是背景的體素的活動狀態。所有openvdb的set/unset active狀態:: Grid節點

目前我正在使用一個運算符和函數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)此外,可以快速設置打開(或關閉)與給定軸對齊的邊界框並且不是背景的所有體素?

E.g ..像

openvdb::tree::setActiveState(const CoordBBox &bbox, bool on) 

回答

0

openvdb ::電網有下列方法可在這種情況下

void clear() 

空該網是有用的,讓所有的體素變得不活躍的背景體素。

void fill ( const CoordBBox & bbox, 
       const ValueType & value, 
       bool    active = true 
      ) 

將給定軸對齊框內的所有體素設置爲常量值。

+1

這些方法改變相應體素的值。我想要做同樣的事情,只是改變活動狀態而不改變值。 – Pierluigi 2014-09-20 16:25:24

相關問題