From 5796515322d13c9c393d20de4f7b034a44b081c3 Mon Sep 17 00:00:00 2001 From: PavelMikus Date: Mon, 16 May 2022 09:56:58 +0200 Subject: [PATCH] Increase visibility info importance, since the visibility info is now much more reliable --- src/libslic3r/GCode/SeamPlacer.cpp | 16 ++++++++-------- src/libslic3r/GCode/SeamPlacer.hpp | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index 52d77362b4..a606c9b7d6 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -705,11 +705,11 @@ struct SeamComparator { } // the penalites are kept close to range [0-1.x] however, it should not be relied upon - float penalty_a = (a.visibility + SeamPlacer::additional_angle_importance) - * compute_angle_penalty(a.local_ccw_angle) + float penalty_a = a.visibility + + SeamPlacer::angle_importance * compute_angle_penalty(a.local_ccw_angle) + distance_penalty_a; - float penalty_b = (b.visibility + SeamPlacer::additional_angle_importance) - * compute_angle_penalty(b.local_ccw_angle) + float penalty_b = b.visibility + + SeamPlacer::angle_importance * compute_angle_penalty(b.local_ccw_angle) + distance_penalty_b; return penalty_a < penalty_b; @@ -762,10 +762,10 @@ struct SeamComparator { } //ranges: [0 - 1] (0 - 1.3] ; - float penalty_a = (a.visibility + SeamPlacer::additional_angle_importance) - * compute_angle_penalty(a.local_ccw_angle); - float penalty_b = (b.visibility + SeamPlacer::additional_angle_importance) - * compute_angle_penalty(b.local_ccw_angle); + float penalty_a = a.visibility + + SeamPlacer::angle_importance * compute_angle_penalty(a.local_ccw_angle); + float penalty_b = b.visibility + + SeamPlacer::angle_importance * compute_angle_penalty(b.local_ccw_angle); return penalty_a <= penalty_b || penalty_a - penalty_b < SeamPlacer::seam_align_score_tolerance; } diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index 60e4df9f44..23f165a583 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -121,8 +121,8 @@ public: // arm length used during angles computation static constexpr float polygon_local_angles_arm_distance = 0.1f; - // increases angle importance at the cost of deacreasing visibility info importance. must be > 0 - static constexpr float additional_angle_importance = 0.1f; + // determines angle importance compared to visibility ( neutral value is 1.0f. ) + static constexpr float angle_importance = 0.7f; // If enforcer or blocker is closer to the seam candidate than this limit, the seam candidate is set to Blocker or Enforcer static constexpr float enforcer_blocker_distance_tolerance = 0.35f;