Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenkernel/intern/volume_render.cc')
-rw-r--r--source/blender/blenkernel/intern/volume_render.cc54
1 files changed, 1 insertions, 53 deletions
diff --git a/source/blender/blenkernel/intern/volume_render.cc b/source/blender/blenkernel/intern/volume_render.cc
index 8e8cfb5945a..37b397a9c6d 100644
--- a/source/blender/blenkernel/intern/volume_render.cc
+++ b/source/blender/blenkernel/intern/volume_render.cc
@@ -34,59 +34,12 @@
#ifdef WITH_OPENVDB
# include <openvdb/openvdb.h>
# include <openvdb/tools/Dense.h>
-# include <openvdb/tools/GridTransformer.h>
#endif
/* Dense Voxels */
#ifdef WITH_OPENVDB
-/**
- * Returns a grid of the same type as the input, but with more/less resolution. If
- * resolution_factor is 1/2, the resolution on each axis is halved. The transform of the returned
- * grid is adjusted to match the original grid. */
-template<typename GridType>
-static typename GridType::Ptr create_grid_with_changed_resolution(const GridType &old_grid,
- const float resolution_factor)
-{
- BLI_assert(resolution_factor > 0.0f);
-
- openvdb::Mat4R xform;
- xform.setToScale(openvdb::Vec3d(resolution_factor));
- openvdb::tools::GridTransformer transformer{xform};
-
- typename GridType::Ptr new_grid = GridType::create();
- transformer.transformGrid<openvdb::tools::BoxSampler>(old_grid, *new_grid);
- new_grid->transform() = old_grid.transform();
- new_grid->transform().preScale(1.0f / resolution_factor);
- return new_grid;
-}
-
-struct CreateGridWithChangedResolutionOp {
- const openvdb::GridBase &grid;
- const float resolution_factor;
-
- template<typename GridType> typename openvdb::GridBase::Ptr operator()()
- {
- if constexpr (std::is_same_v<GridType, openvdb::StringGrid>) {
- return {};
- }
- else {
- return create_grid_with_changed_resolution(static_cast<const GridType &>(grid),
- resolution_factor);
- }
- }
-};
-
-static openvdb::GridBase::Ptr create_grid_with_changed_resolution(
- const VolumeGridType grid_type,
- const openvdb::GridBase &old_grid,
- const float resolution_factor)
-{
- CreateGridWithChangedResolutionOp op{old_grid, resolution_factor};
- return BKE_volume_grid_type_operation(grid_type, op);
-}
-
template<typename GridType, typename VoxelType>
static void extract_dense_voxels(const openvdb::GridBase &grid,
const openvdb::CoordBBox bbox,
@@ -152,16 +105,11 @@ static void create_texture_to_object_matrix(const openvdb::Mat4d &grid_transform
bool BKE_volume_grid_dense_floats(const Volume *volume,
VolumeGrid *volume_grid,
- const float resolution_factor,
DenseFloatVolumeGrid *r_dense_grid)
{
#ifdef WITH_OPENVDB
const VolumeGridType grid_type = BKE_volume_grid_type(volume_grid);
-
openvdb::GridBase::ConstPtr grid = BKE_volume_grid_openvdb_for_read(volume, volume_grid);
- if (resolution_factor != 1.0f) {
- grid = create_grid_with_changed_resolution(grid_type, *grid, resolution_factor);
- }
const openvdb::CoordBBox bbox = grid->evalActiveVoxelBoundingBox();
if (bbox.empty()) {
@@ -189,7 +137,7 @@ bool BKE_volume_grid_dense_floats(const Volume *volume,
copy_v3_v3_int(r_dense_grid->resolution, resolution.asV());
return true;
#endif
- UNUSED_VARS(volume, volume_grid, resolution_factor, r_dense_grid);
+ UNUSED_VARS(volume, volume_grid, r_dense_grid);
return false;
}