如何填充给定平面内的OpenVDB体素?

时间:2016-06-22 16:18:38

标签: c++ voxels openvdb

我有一个由4(x,y,z)点定义的四边形(就像一个有边的平面)。我有一个OpenVDB网格。我想要填充四边形(包括边缘)内的值为1的所有体素。手动设置四边形(有限平面)的每个体素是否可以这样做?

1 个答案:

答案 0 :(得分:0)

如果四个点构建一个矩形,则可以使用

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

Grid - 类中存在的函数。无法转换CoordBBox进行旋转,而是必须通过更改网格的转换来实现。使用伪代码,它可能看起来像

CoordBBox plane; // created from your points
Transform old = grid.transform();
grid.setTransform(...); // Some transformation that places the grid correctly with respect to the plane
grid.fill(plane, 1);
grid.setTransform(old);

如果不是这种情况,则必须自己设置值。