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

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/libslic3r/SLA/Hollowing.cpp')
-rw-r--r--src/libslic3r/SLA/Hollowing.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/libslic3r/SLA/Hollowing.cpp b/src/libslic3r/SLA/Hollowing.cpp
new file mode 100644
index 000000000..430900313
--- /dev/null
+++ b/src/libslic3r/SLA/Hollowing.cpp
@@ -0,0 +1,55 @@
+#include "Hollowing.hpp"
+#include <openvdb/tools/Filter.h>
+#include <openvdb/tools/LevelSetRebuild.h>
+#include <openvdb/tools/LevelSetFilter.h>
+#include <functional>
+
+namespace Slic3r {
+namespace sla {
+
+namespace {
+
+void filter_grid_sla(openvdb::FloatGrid &grid, double scale, double /*thickness*/, double flatness)
+{
+ static const double ROUNDNESS_COEFF = 1.;
+
+ // Filtering:
+ if (flatness > 0.) {
+ double rounding = ROUNDNESS_COEFF * flatness;
+ int width = int(rounding * scale);
+ int count = 1;
+ openvdb::tools::Filter<openvdb::FloatGrid>{grid}.gaussian(width, count);
+ }
+}
+// openvdb::tools::levelSetRebuild(grid, -float(thickness * 2));
+// filter_grid_sla(grid, scale, thickness, flatness);
+
+// openvdb::tools::levelSetRebuild(grid, float(thickness));
+
+
+void redist_grid_sla(openvdb::FloatGrid &grid, double scale, double thickness, double flatness)
+{
+// openvdb::tools::levelSetRebuild(grid, -float(scale * thickness));
+
+
+ openvdb::tools::LevelSetFilter<openvdb::FloatGrid> filt{grid};
+
+// filt.gaussian(int(flatness * scale));
+
+// openvdb::tools::levelSetRebuild(grid, float(scale * thickness));
+ //grid = openvdb::tools::topologyToLevelSet(grid);
+}
+
+}
+
+TriangleMesh generate_interior(const TriangleMesh &mesh,
+ double min_thickness,
+ double quality,
+ double flatness)
+{
+ namespace plc = std::placeholders;
+ auto filt = std::bind(filter_grid_sla, plc::_1, plc::_2, plc::_3, flatness);
+ return hollowed_interior(mesh, min_thickness, quality, filt);
+}
+
+}} // namespace Slic3r::sla