9# include <openvdb/tools/Activate.h>
10# include <openvdb/tools/Dense.h>
15openvdb::GridBase::ConstPtr openvdb_convert_to_known_type(
const openvdb::GridBase::ConstPtr &grid)
17 if (grid->isType<openvdb::FloatGrid>()) {
20 if (grid->isType<openvdb::Vec3fGrid>()) {
23 if (grid->isType<openvdb::Vec4fGrid>()) {
26 if (grid->isType<openvdb::BoolGrid>()) {
27 const openvdb::FloatGrid floatgrid(*openvdb::gridConstPtrCast<openvdb::BoolGrid>(grid));
28 return std::make_shared<openvdb::FloatGrid>(std::move(floatgrid));
30 if (grid->isType<openvdb::DoubleGrid>()) {
31 const openvdb::FloatGrid floatgrid(*openvdb::gridConstPtrCast<openvdb::DoubleGrid>(grid));
32 return std::make_shared<openvdb::FloatGrid>(std::move(floatgrid));
34 if (grid->isType<openvdb::Int32Grid>()) {
35 const openvdb::FloatGrid floatgrid(*openvdb::gridConstPtrCast<openvdb::Int32Grid>(grid));
36 return std::make_shared<openvdb::FloatGrid>(std::move(floatgrid));
38 if (grid->isType<openvdb::Int64Grid>()) {
39 const openvdb::FloatGrid floatgrid(*openvdb::gridConstPtrCast<openvdb::Int64Grid>(grid));
40 return std::make_shared<openvdb::FloatGrid>(std::move(floatgrid));
42 if (grid->isType<openvdb::Vec3IGrid>()) {
43 const openvdb::Vec3fGrid floatgrid(*openvdb::gridConstPtrCast<openvdb::Vec3IGrid>(grid));
44 return std::make_shared<openvdb::Vec3fGrid>(std::move(floatgrid));
46 if (grid->isType<openvdb::Vec3dGrid>()) {
47 const openvdb::Vec3fGrid floatgrid(*openvdb::gridConstPtrCast<openvdb::Vec3dGrid>(grid));
48 return std::make_shared<openvdb::Vec3fGrid>(std::move(floatgrid));
57 template<
typename Gr
idType,
typename FloatDataType, const
int channels>
58 bool operator()(
const typename GridType::ConstPtr & )
60 num_channels = channels;
65int openvdb_num_channels(
const openvdb::GridBase::ConstPtr &grid)
68 if (!openvdb_grid_type_operation(grid, op)) {
71 return op.num_channels;
#define CCL_NAMESPACE_END