mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-14 06:05:53 +08:00
Parallelization of regions merging for MMU segmentation.
This commit is contained in:
parent
2e9f0d6eaf
commit
5bfdaa7ac8
@ -1360,7 +1360,8 @@ std::vector<std::vector<std::pair<ExPolygon, size_t>>> multi_material_segmentati
|
||||
std::vector<Polygons> input_polygons(layers.size());
|
||||
|
||||
// Merge all regions and remove small holes
|
||||
for(size_t layer_idx = 0; layer_idx < layers.size(); layer_idx += 1) {
|
||||
tbb::parallel_for(tbb::blocked_range<size_t>(0, layers.size()), [&](const tbb::blocked_range<size_t> &range) {
|
||||
for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++layer_idx) {
|
||||
ExPolygons ex_polygons;
|
||||
for (LayerRegion *region : layers[layer_idx]->regions())
|
||||
for (const Surface &surface : region->slices.surfaces)
|
||||
@ -1379,6 +1380,7 @@ std::vector<std::vector<std::pair<ExPolygon, size_t>>> multi_material_segmentati
|
||||
// Calling expolygons_simplify fixed these issues.
|
||||
input_polygons[layer_idx] = simplify_polygons(to_polygons(expolygons_simplify(offset_ex(ex_polygons, -SCALED_EPSILON), SCALED_EPSILON)));
|
||||
}
|
||||
}); // end of parallel_for
|
||||
|
||||
for (size_t layer_idx = 0; layer_idx < layers.size(); ++layer_idx) {
|
||||
BoundingBox bbox(get_extents(input_polygons[layer_idx]));
|
||||
|
Loading…
x
Reference in New Issue
Block a user