11# include <openvdb/openvdb.h>
12# include <openvdb/tools/GridTransformer.h>
16openvdb::FloatGrid &resample_sdf_grid_if_necessary(bke::VolumeGrid<float> &volume_grid,
17 bke::VolumeTreeAccessToken &tree_token,
18 const openvdb::math::Transform &
transform,
19 std::shared_ptr<openvdb::FloatGrid> &storage)
21 const openvdb::FloatGrid &grid = volume_grid.grid(tree_token);
23 return volume_grid.grid_for_write(tree_token);
26 storage = openvdb::FloatGrid::create();
30 openvdb::tools::resampleToMatch<openvdb::tools::BoxSampler>(grid, *storage);
33 if (storage->background() < 0.0f) {
34 storage->tree().root().setBackground(0.0f,
true);
36 openvdb::tools::pruneLevelSet(storage->tree());
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const