Classes | |
| class | Frame |
| Coordinate frame. More... | |
| struct | CoordinateFunctor |
| struct | PaintedContour |
| struct | GlobalModelInfo |
| struct | PaintedInterval |
| struct | SeamComparator |
| struct | Perimeter |
| struct | SeamCandidate |
| struct | SeamCandidateCoordinateFunctor |
Enumerations | |
| enum class | EnforcedBlockedSeamPoint { Blocked = 0 , Neutral = 1 , Enforced = 2 } |
Functions | |
| template<typename T> | |
| int | sgn (T val) |
| float | gauss (float value, float mean_x_coord, float mean_value, float falloff_speed) |
| float | compute_angle_penalty (float ccw_angle) |
| Vec3f | sample_sphere_uniform (const Vec2f &samples) |
| Vec3f | sample_hemisphere_uniform (const Vec2f &samples) |
| Vec3f | sample_power_cosine_hemisphere (const Vec2f &samples, float power) |
| std::vector< float > | 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 > | calculate_polygon_angles_at_vertices (const Polygon &polygon, const std::vector< float > &lengths, float min_arm_length) |
| Polygons | 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 | fully_enforced_loop (const std::vector< Vec2d > &loop, double z, double reach, const GlobalModelInfo &info) |
| std::vector< PaintedInterval > | exact_painted_intervals (const std::vector< Vec2d > &loop, const std::vector< double > &arc, double z, double reach, const PaintedContour &contour) |
| void | 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 | compute_global_occlusion (GlobalModelInfo &result, const PrintObject *po, std::function< void(void)> throw_if_canceled, SeamPosition seam_position=spAligned) |
| void | append_painted_contour (PaintedContour &result, const indexed_triangle_set &painted) |
| void | gather_enforcers_blockers (GlobalModelInfo &result, const PrintObject *po) |
| void | pick_seam_point (std::vector< SeamCandidate > &perimeter_points, size_t start_index, const SeamComparator &comparator) |
| size_t | pick_nearest_seam_point_index (const std::vector< SeamCandidate > &perimeter_points, size_t start_index, const Vec2f &preffered_location) |
| void | pick_random_seam_point (const std::vector< SeamCandidate > &perimeter_points, size_t start_index) |
| float | smoothstep01 (float x) |
| float | enforced_corner_influence (const std::vector< SeamCandidate > &points, size_t index, float protect, float fade_end) |
| Vec2d | edge_normal (const Vec2d &a, const Vec2d &b) |
| Vec3f | place_on_loop (const std::vector< SeamCandidate > &points, size_t index, const Vec3f &target) |
Variables | |
| constexpr double | enforced_end_tolerance = 1e-3 |
| constexpr float | enforced_corner_angle_min = 15.0f * float(PI) / 180.0f |
| constexpr float | enforced_corner_angle_max = 30.0f * float(PI) / 180.0f |
| constexpr float | enforced_corner_fade_factor = 2.0f |
| struct Slic3r::SeamPlacerImpl::Perimeter |
| Class Members | ||
|---|---|---|
| size_t | contour_index = 0 | |
| bool | contour_reliable = false | |
| size_t | end_index {} | |
| bool | exact_blocked_ends = false | |
| bool | exact_enforced_ends = false | |
| Vec3f | final_seam_position = Vec3f::Zero() | |
| bool | finalized = false | |
| float | flow_width {} | |
| bool | is_hole = false | |
| size_t | precise_seam_index {} | |
| optional< Vec3f > | precise_seam_point | |
| size_t | seam_index {} | |
| size_t | start_index {} | |
|
strong |
| void Slic3r::SeamPlacerImpl::append_painted_contour | ( | PaintedContour & | result, |
| const indexed_triangle_set & | painted ) |
References append_painted_contour(), Slic3r::cross(), Slic3r::SeamPlacerImpl::PaintedContour::edges, Slic3r::SeamPlacerImpl::PaintedContour::inward, and Slic3r::normal().
Referenced by append_painted_contour(), and gather_enforcers_blockers().
| std::vector< float > Slic3r::SeamPlacerImpl::calculate_polygon_angles_at_vertices | ( | const Polygon & | polygon, |
| const std::vector< float > & | lengths, | ||
| float | min_arm_length ) |
References Slic3r::angle(), calculate_polygon_angles_at_vertices(), Slic3r::next_idx_modulo(), Slic3r::MultiPoint::points, Slic3r::prev_idx_modulo(), and Slic3r::MultiPoint::size().
Referenced by calculate_polygon_angles_at_vertices(), and process_perimeter_polygon().
| float Slic3r::SeamPlacerImpl::compute_angle_penalty | ( | float | ccw_angle | ) |
References gauss().
Referenced by Slic3r::SeamPlacerImpl::SeamComparator::is_first_not_much_worse().
| void Slic3r::SeamPlacerImpl::compute_global_occlusion | ( | GlobalModelInfo & | result, |
| const PrintObject * | po, | ||
| std::function< void(void)> | throw_if_canceled, | ||
| SeamPosition | seam_position = spAligned ) |
References Slic3r::AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(), compute_global_occlusion(), Slic3r::SeamPlacer::fast_decimation_triangle_count_target, Slic3r::its_merge(), Slic3r::its_short_edge_collpase(), Slic3r::SeamPlacerImpl::GlobalModelInfo::mesh_samples, Slic3r::SeamPlacerImpl::GlobalModelInfo::mesh_samples_coordinate_functor, Slic3r::SeamPlacerImpl::GlobalModelInfo::mesh_samples_radius, Slic3r::SeamPlacerImpl::GlobalModelInfo::mesh_samples_tree, Slic3r::SeamPlacerImpl::GlobalModelInfo::mesh_samples_visibility, Slic3r::PrintObjectBase::model_object(), Slic3r::MODEL_PART, Slic3r::NEGATIVE_VOLUME, PI, Slic3r::TriangleSetSamples::positions, raycast_visibility(), Slic3r::SeamPlacer::raycasting_visibility_samples_count, Slic3r::sample_its_uniform_parallel(), Slic3r::spAligned, Slic3r::TriangleSetSamples::total_area, Slic3r::PrintObject::trafo_sliced(), and Slic3r::ModelObject::volumes.
Referenced by compute_global_occlusion().
References edge_normal(), and Slic3r::length().
Referenced by edge_normal(), and place_on_loop().
| float Slic3r::SeamPlacerImpl::enforced_corner_influence | ( | const std::vector< SeamCandidate > & | points, |
| size_t | index, | ||
| float | protect, | ||
| float | fade_end ) |
References count, Slic3r::SeamPlacerImpl::Perimeter::end_index, enforced_corner_angle_max, enforced_corner_angle_min, enforced_corner_influence(), Slic3r::next_idx_modulo(), Slic3r::prev_idx_modulo(), smoothstep01(), and Slic3r::SeamPlacerImpl::Perimeter::start_index.
Referenced by enforced_corner_influence().
| 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 ) |
References Slic3r::contour(), count, Slic3r::dot(), enforced_end_tolerance, and exact_painted_intervals().
Referenced by exact_painted_intervals(), and process_perimeter_polygon().
| 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 ) |
References Slic3r::ExtrusionEntity::collect_points(), Slic3r::elrHole, Slic3r::erExternalPerimeter, extract_perimeter_polygons(), Slic3r::ExtrusionEntity::is_collection(), and Slic3r::Layer::regions().
Referenced by extract_perimeter_polygons().
| bool Slic3r::SeamPlacerImpl::fully_enforced_loop | ( | const std::vector< Vec2d > & | loop, |
| double | z, | ||
| double | reach, | ||
| const GlobalModelInfo & | info ) |
References enforced_end_tolerance, Slic3r::SeamPlacerImpl::GlobalModelInfo::enforcers, fully_enforced_loop(), Slic3r::AABBTreeIndirect::intersecting(), Slic3r::SeamPlacerImpl::GlobalModelInfo::is_enforced(), Slic3r::SeamPlacerImpl::GlobalModelInfo::non_enforcers, Slic3r::SeamPlacerImpl::GlobalModelInfo::non_enforcers_tree, and Slic3r::AABBTreeIndirect::traverse().
Referenced by fully_enforced_loop(), and process_perimeter_polygon().
| void Slic3r::SeamPlacerImpl::gather_enforcers_blockers | ( | GlobalModelInfo & | result, |
| const PrintObject * | po ) |
References append_painted_contour(), Slic3r::BLOCKER, Slic3r::SeamPlacerImpl::GlobalModelInfo::blocker_contour, Slic3r::SeamPlacerImpl::GlobalModelInfo::blockers, Slic3r::SeamPlacerImpl::GlobalModelInfo::blockers_tree, Slic3r::AABBTreeLines::build_aabb_tree_over_indexed_lines(), Slic3r::AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(), Slic3r::TriangleSelector::deserialize(), Slic3r::SeamPlacerImpl::PaintedContour::edges, Slic3r::ENFORCER, Slic3r::SeamPlacerImpl::GlobalModelInfo::enforcer_contour, Slic3r::SeamPlacerImpl::GlobalModelInfo::enforcers, Slic3r::SeamPlacerImpl::GlobalModelInfo::enforcers_tree, gather_enforcers_blockers(), Slic3r::TriangleSelector::get_facets(), Slic3r::TriangleSelector::get_facets_strict(), Slic3r::its_merge(), Slic3r::PrintObjectBase::model_object(), Slic3r::SeamPlacerImpl::GlobalModelInfo::non_enforcers, Slic3r::SeamPlacerImpl::GlobalModelInfo::non_enforcers_tree, Slic3r::NONE, Slic3r::PrintObject::trafo_sliced(), Slic3r::SeamPlacerImpl::PaintedContour::tree, and Slic3r::ModelObject::volumes.
Referenced by gather_enforcers_blockers().
| float Slic3r::SeamPlacerImpl::gauss | ( | float | value, |
| float | mean_x_coord, | ||
| float | mean_value, | ||
| float | falloff_speed ) |
Referenced by compute_angle_penalty().
| size_t Slic3r::SeamPlacerImpl::pick_nearest_seam_point_index | ( | const std::vector< SeamCandidate > & | perimeter_points, |
| size_t | start_index, | ||
| const Vec2f & | preffered_location ) |
References Slic3r::SeamPlacerImpl::SeamComparator::is_first_better(), pick_nearest_seam_point_index(), and Slic3r::spNearest.
Referenced by pick_nearest_seam_point_index().
| void Slic3r::SeamPlacerImpl::pick_random_seam_point | ( | const std::vector< SeamCandidate > & | perimeter_points, |
| size_t | start_index ) |
References Slic3r::SeamPlacerImpl::SeamComparator::are_similar(), Blocked, Slic3r::edge_length(), Enforced, Slic3r::SeamPlacerImpl::Perimeter::final_seam_position, Slic3r::SeamPlacerImpl::Perimeter::finalized, Slic3r::SeamPlacerImpl::SeamComparator::is_first_not_much_worse(), pick_random_seam_point(), Slic3r::SeamPlacerImpl::Perimeter::seam_index, and Slic3r::spRandom.
Referenced by pick_random_seam_point().
| void Slic3r::SeamPlacerImpl::pick_seam_point | ( | std::vector< SeamCandidate > & | perimeter_points, |
| size_t | start_index, | ||
| const SeamComparator & | comparator ) |
References Slic3r::SeamPlacerImpl::SeamComparator::is_first_better(), and pick_seam_point().
Referenced by pick_seam_point().
| Vec3f Slic3r::SeamPlacerImpl::place_on_loop | ( | const std::vector< SeamCandidate > & | points, |
| size_t | index, | ||
| const Vec3f & | target ) |
References Blocked, Slic3r::cast(), count, Slic3r::cross(), edge_normal(), Slic3r::SeamPlacerImpl::Perimeter::end_index, Enforced, Slic3r::SeamPlacer::enforcer_oversampling_distance, Slic3r::SeamPlacerImpl::Perimeter::exact_enforced_ends, Slic3r::length(), Slic3r::next_idx_modulo(), place_on_loop(), Slic3r::prev_idx_modulo(), Slic3r::SeamPlacerImpl::Perimeter::start_index, and Slic3r::to_3d().
Referenced by place_on_loop().
| 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 ) |
References Slic3r::PreciseSeam::apply_weak_modifiers_to_perimeter(), Slic3r::SeamPlacerImpl::PaintedInterval::begin, Blocked, Slic3r::SeamPlacerImpl::GlobalModelInfo::blocker_contour, calculate_polygon_angles_at_vertices(), Slic3r::PreciseSeam::collect_weak_modifier_segments(), Slic3r::SeamPlacerImpl::Perimeter::contour_index, Slic3r::SeamPlacerImpl::Perimeter::contour_reliable, Slic3r::SeamPlacerImpl::PaintedInterval::end, Slic3r::SeamPlacerImpl::Perimeter::end_index, Enforced, enforced_end_tolerance, Slic3r::SeamPlacerImpl::GlobalModelInfo::enforcer_contour, Slic3r::SeamPlacer::enforcer_oversampling_distance, Slic3r::SeamPlacerImpl::Perimeter::exact_blocked_ends, Slic3r::SeamPlacerImpl::Perimeter::exact_enforced_ends, exact_painted_intervals(), Slic3r::LayerRegion::flow(), Slic3r::SeamPlacerImpl::Perimeter::flow_width, Slic3r::frExternalPerimeter, fully_enforced_loop(), Slic3r::PreciseSeam::insert_strong_seam_point(), Slic3r::SeamPlacerImpl::GlobalModelInfo::is_blocked(), Slic3r::SeamPlacerImpl::GlobalModelInfo::is_enforced(), Slic3r::SeamPlacerImpl::Perimeter::is_hole, Slic3r::LayerRegion::layer(), Slic3r::length(), Slic3r::Polygon::make_counter_clockwise(), Neutral, Slic3r::next_idx_modulo(), Slic3r::Flow::nozzle_diameter(), Slic3r::PrintObjectSeamData::LayerSeams::perimeters, Slic3r::MultiPoint::points, Slic3r::PrintObjectSeamData::LayerSeams::points, Slic3r::SeamPlacerImpl::Perimeter::precise_seam_index, Slic3r::SeamPlacerImpl::Perimeter::precise_seam_point, Slic3r::SeamPlacerImpl::GlobalModelInfo::precise_seam_slices, Slic3r::SeamPlacerImpl::GlobalModelInfo::precise_seam_strong_volumes, Slic3r::SeamPlacerImpl::GlobalModelInfo::precise_seam_weak_volumes, process_perimeter_polygon(), Slic3r::SeamPlacer::sharp_angle_snapping_threshold, Slic3r::MultiPoint::size(), Slic3r::SeamPlacerImpl::Perimeter::start_index, Slic3r::unscale(), and Slic3r::Flow::width().
Referenced by process_perimeter_polygon().
| 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 ) |
References Slic3r::TriangleSetSamples::positions, sample_hemisphere_uniform(), Slic3r::spAligned, and Slic3r::SeamPlacer::sqr_rays_per_sample_point.
Referenced by compute_global_occlusion().
References PI.
Referenced by raycast_visibility().
| int Slic3r::SeamPlacerImpl::sgn | ( | T | val | ) |
| float Slic3r::SeamPlacerImpl::smoothstep01 | ( | float | x | ) |
References smoothstep01().
Referenced by enforced_corner_influence(), and smoothstep01().
|
constexpr |
Referenced by enforced_corner_influence().
|
constexpr |
Referenced by enforced_corner_influence().
|
constexpr |
|
constexpr |
Referenced by exact_painted_intervals(), fully_enforced_loop(), and process_perimeter_polygon().