13# include <openvdb/openvdb.h>
14# include <openvdb/points/PointDataGrid.h>
30blender::bke::VolumeGridData *BKE_volume_grid_add_vdb(
Volume &volume,
32 openvdb::GridBase::Ptr vdb_grid);
34void BKE_volume_metadata_set(
Volume &volume, openvdb::MetaMap::Ptr metadata);
36std::optional<blender::Bounds<blender::float3>> BKE_volume_grid_bounds(
37 openvdb::GridBase::ConstPtr grid);
44openvdb::GridBase::ConstPtr BKE_volume_grid_shallow_transform(openvdb::GridBase::ConstPtr grid,
50template<
typename OpType>
51auto BKE_volume_grid_type_operation(
const VolumeGridType grid_type, OpType &&op)
55 return op.template operator()<openvdb::FloatGrid>();
57 return op.template operator()<openvdb::Vec3fGrid>();
59 return op.template operator()<openvdb::BoolGrid>();
61 return op.template operator()<openvdb::DoubleGrid>();
63 return op.template operator()<openvdb::Int32Grid>();
65 return op.template operator()<openvdb::Int64Grid>();
67 return op.template operator()<openvdb::Vec3IGrid>();
69 return op.template operator()<openvdb::Vec3dGrid>();
71 return op.template operator()<openvdb::MaskGrid>();
73 return op.template operator()<openvdb::points::PointDataGrid>();
80 return op.template operator()<openvdb::FloatGrid>();
84void BKE_volume_grid_type_to_static_type(
const VolumeGridType grid_type, Fn &&fn)
113openvdb::GridBase::Ptr BKE_volume_grid_create_with_changed_resolution(
114 const VolumeGridType grid_type,
const openvdb::GridBase &old_grid,
float resolution_factor);
@ VOLUME_GRID_VECTOR_FLOAT
@ VOLUME_GRID_VECTOR_DOUBLE
#define BLI_assert_unreachable()
#define BLI_assert_msg(a, msg)
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
MatBase< float, 4, 4 > float4x4