int main()
{
openvdb::initialize();
// Load VDB grid from file
openvdb::io::File file("input.vdb");
file.open();
openvdb::GridBase::Ptr baseGrid;
for (openvdb::io::File::NameIterator nameIter = file.beginName();
nameIter != file.endName(); ++nameIter)
{
// Read in only the grid we are interested in.
if (nameIter.gridName() == "LevelSetSphere") {
baseGrid = file.readGrid(nameIter.gridName());
}
else {
std::cout << "skipping grid " << nameIter.gridName() << std::endl;
}
}
file.close();
openvdb::FloatGrid::Ptr grid = openvdb::gridPtrCast<openvdb::FloatGrid>(baseGrid);
openvdb::tools::LevelSetFilter<openvdb::FloatGrid> lsf(*grid);
lsf.offset(-0.5);
// Save the modified grid as a new VDB file
openvdb::io::File output("output.vdb");
output.write({ grid });
output.close();
return 0;
}