From 5558523b194e499e24bb979776fe49ae83a16b86 Mon Sep 17 00:00:00 2001 From: Filip Sykala - NTB T15p Date: Tue, 26 Jul 2022 09:15:10 +0200 Subject: [PATCH] Fix for emboss from exactly -Z direction --- src/libslic3r/Emboss.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/Emboss.cpp b/src/libslic3r/Emboss.cpp index a031ea65c0..c376bdbc57 100644 --- a/src/libslic3r/Emboss.cpp +++ b/src/libslic3r/Emboss.cpp @@ -882,9 +882,17 @@ Transform3d Emboss::create_transformation_onto_surface(const Vec3f &position, wanted_up_dir.normalize(); // perpendicular to emboss vector of text and normal - Vec3d axis_view = text_emboss_dir.cross(wanted_emboss_dir); - double angle_view = std::acos(text_emboss_dir.dot(wanted_emboss_dir)); // in rad - axis_view.normalize(); + Vec3d axis_view; + double angle_view; + if (wanted_emboss_dir == -Vec3d::UnitZ()) { + // text_emboss_dir has opposit direction to wanted_emboss_dir + axis_view = Vec3d::UnitY(); + angle_view = M_PI; + } else { + axis_view = text_emboss_dir.cross(wanted_emboss_dir); + angle_view = std::acos(text_emboss_dir.dot(wanted_emboss_dir)); // in rad + axis_view.normalize(); + } Eigen::AngleAxis view_rot(angle_view, axis_view); Vec3d wanterd_up_rotated = view_rot.matrix().inverse() * wanted_up_dir;