OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
SeamPlacer.cpp File Reference
#include "SeamPlacer.hpp"
#include "SeamContour.hpp"
#include "libslic3r/Point.hpp"
#include "libslic3r/AABBTreeIndirect.hpp"
#include "libslic3r/Model.hpp"
#include "libslic3r/Flow.hpp"
#include "libslic3r/Line.hpp"
#include "libslic3r/ExPolygon.hpp"
#include "Polygon.hpp"
#include "libslic3r/PrintBase.hpp"
#include "PrintConfig.hpp"
#include "libslic3r/libslic3r.h"
#include "libslic3r/TriangleMesh.hpp"
#include "libslic3r/TriangleSelector.hpp"
#include "tbb/parallel_for.h"
#include "tbb/blocked_range.h"
#include "tbb/parallel_reduce.h"
#include <atomic>
#include <Eigen/Geometry>
#include <boost/log/trivial.hpp>
#include <boost/format.hpp>
#include <cmath>
#include <cstdint>
#include <cstdlib>
#include <cstddef>
#include <igl/Hit.h>
#include <optional>
#include <cassert>
#include <functional>
#include <numeric>
#include <memory>
#include <random>
#include <algorithm>
#include <limits>
#include <queue>
#include <string>
#include <unordered_map>
#include <vector>
#include <utility>
#include "libslic3r/AABBTreeLines.hpp"
#include "libslic3r/KDTreeIndirect.hpp"
#include "libslic3r/ExtrusionEntity.hpp"
#include "libslic3r/Print.hpp"
#include "libslic3r/BoundingBox.hpp"
#include "libslic3r/ClipperUtils.hpp"
#include "libslic3r/Layer.hpp"
#include "libslic3r/Geometry/Curves.hpp"
#include "libslic3r/I18N.hpp"
#include "libslic3r/ShortEdgeCollapse.hpp"
#include "libslic3r/TriangleSetSampling.hpp"
#include "libslic3r/Utils.hpp"
#include "PreciseSeam.hpp"

Go to the source code of this file.

Classes

class  Slic3r::SeamPlacerImpl::Frame
 Coordinate frame. More...
struct  Slic3r::SeamPlacerImpl::CoordinateFunctor
struct  Slic3r::SeamPlacerImpl::PaintedContour
struct  Slic3r::SeamPlacerImpl::GlobalModelInfo
struct  Slic3r::SeamPlacerImpl::PaintedInterval
struct  Slic3r::SeamPlacerImpl::SeamComparator

Namespaces

namespace  Slic3r
 |/ Copyright (c) Prusa Research 2020 - 2023 Enrico Turri @enricoturri1966 |/ |/ PrusaSlicer is released under the terms of the AGPLv3 or higher |/
namespace  Slic3r::SeamPlacerImpl

Functions

template<typename T>
int Slic3r::SeamPlacerImpl::sgn (T val)
float Slic3r::SeamPlacerImpl::gauss (float value, float mean_x_coord, float mean_value, float falloff_speed)
float Slic3r::SeamPlacerImpl::compute_angle_penalty (float ccw_angle)
Vec3f Slic3r::SeamPlacerImpl::sample_sphere_uniform (const Vec2f &samples)
Vec3f Slic3r::SeamPlacerImpl::sample_hemisphere_uniform (const Vec2f &samples)
Vec3f Slic3r::SeamPlacerImpl::sample_power_cosine_hemisphere (const Vec2f &samples, float power)
std::vector< float > Slic3r::SeamPlacerImpl::raycast_visibility (const AABBTreeIndirect::Tree< 3, float > &raycasting_tree, const indexed_triangle_set &triangles, const TriangleSetSamples &samples, size_t negative_volumes_start_index, SeamPosition seam_position=spAligned)
std::vector< float > Slic3r::SeamPlacerImpl::calculate_polygon_angles_at_vertices (const Polygon &polygon, const std::vector< float > &lengths, float min_arm_length)
Polygons Slic3r::SeamPlacerImpl::extract_perimeter_polygons (const Layer *layer, std::vector< const LayerRegion * > &corresponding_regions_out, std::vector< std::optional< bool > > &boundary_types_out, bool has_precise_seam_modifiers)
bool Slic3r::SeamPlacerImpl::fully_enforced_loop (const std::vector< Vec2d > &loop, double z, double reach, const GlobalModelInfo &info)
std::vector< PaintedInterval > Slic3r::SeamPlacerImpl::exact_painted_intervals (const std::vector< Vec2d > &loop, const std::vector< double > &arc, double z, double reach, const PaintedContour &contour)
void Slic3r::SeamPlacerImpl::process_perimeter_polygon (const Polygon &orig_polygon, float z_coord, const LayerRegion *region, const GlobalModelInfo &global_model_info, PrintObjectSeamData::LayerSeams &result, PreciseSeam::PreciseSeamWarnings *warnings=nullptr, std::optional< bool > boundary_hole=std::nullopt)
void Slic3r::SeamPlacerImpl::compute_global_occlusion (GlobalModelInfo &result, const PrintObject *po, std::function< void(void)> throw_if_canceled, SeamPosition seam_position=spAligned)
void Slic3r::SeamPlacerImpl::append_painted_contour (PaintedContour &result, const indexed_triangle_set &painted)
void Slic3r::SeamPlacerImpl::gather_enforcers_blockers (GlobalModelInfo &result, const PrintObject *po)
void Slic3r::SeamPlacerImpl::pick_seam_point (std::vector< SeamCandidate > &perimeter_points, size_t start_index, const SeamComparator &comparator)
size_t Slic3r::SeamPlacerImpl::pick_nearest_seam_point_index (const std::vector< SeamCandidate > &perimeter_points, size_t start_index, const Vec2f &preffered_location)
void Slic3r::SeamPlacerImpl::pick_random_seam_point (const std::vector< SeamCandidate > &perimeter_points, size_t start_index)
float Slic3r::SeamPlacerImpl::smoothstep01 (float x)
float Slic3r::SeamPlacerImpl::enforced_corner_influence (const std::vector< SeamCandidate > &points, size_t index, float protect, float fade_end)
Vec2d Slic3r::SeamPlacerImpl::edge_normal (const Vec2d &a, const Vec2d &b)
Vec3f Slic3r::SeamPlacerImpl::place_on_loop (const std::vector< SeamCandidate > &points, size_t index, const Vec3f &target)

Variables

constexpr double Slic3r::SeamPlacerImpl::enforced_end_tolerance = 1e-3
constexpr float Slic3r::SeamPlacerImpl::enforced_corner_angle_min = 15.0f * float(PI) / 180.0f
constexpr float Slic3r::SeamPlacerImpl::enforced_corner_angle_max = 30.0f * float(PI) / 180.0f
constexpr float Slic3r::SeamPlacerImpl::enforced_corner_fade_factor = 2.0f

Class Documentation

◆ Slic3r::SeamPlacerImpl::PaintedInterval

struct Slic3r::SeamPlacerImpl::PaintedInterval
Class Members
double begin
double end