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

Hollowing.cpp « SLA « libslic3r « src - github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 4309003134f183eaa7a57bdf03f28735a6bed9c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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