From 7f73a0e73d73229cacf210b41beec24b27096984 Mon Sep 17 00:00:00 2001 From: Filip Sykala Date: Mon, 21 Feb 2022 13:44:24 +0100 Subject: [PATCH] Fix transformation of new created volume by angle and distance --- src/slic3r/GUI/Jobs/EmbossJob.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/Jobs/EmbossJob.cpp b/src/slic3r/GUI/Jobs/EmbossJob.cpp index 994568c1d1..10de894858 100644 --- a/src/slic3r/GUI/Jobs/EmbossJob.cpp +++ b/src/slic3r/GUI/Jobs/EmbossJob.cpp @@ -138,13 +138,26 @@ void EmbossCreateJob::process(Ctl &ctl) { Transform3d::TranslationType tt(offset.x(), offset.y(), offset.z()); m_transformation = Transform3d(tt); } else { - // TODO: Disable apply common transformation after draggig - // Call after is used for apply transformation after common dragging to rewrite it - m_transformation = Emboss::create_transformation_onto_surface(hit->position, hit->normal); + //m_transformation = Emboss::create_transformation_onto_surface(hit->position, hit->normal); + assert(m_input->hit_vol_tr.has_value()); + if (m_input->hit_vol_tr.has_value()) { Transform3d object_trmat = m_input->raycast_manager->get_transformation(hit->tr_key); - m_transformation = m_input->hit_vol_tr->inverse() * object_trmat * m_transformation; + + const FontProp &font_prop = m_input->text_configuration.font_item.prop; + if (font_prop.angle.has_value()) { + double angle_z = *font_prop.angle; + object_trmat *= Eigen::AngleAxisd(angle_z, Vec3d::UnitZ()); + } + if (font_prop.distance.has_value()) { + Vec3d translate = Vec3d::UnitZ() * (*font_prop.distance); + object_trmat.translate(translate); + } + + Transform3d surface_trmat = Emboss::create_transformation_onto_surface(hit->position, hit->normal); + m_transformation = m_input->hit_vol_tr->inverse() * object_trmat * surface_trmat; } + } }