From 7395b923bd17593880b0a6039c34641ec515c89c Mon Sep 17 00:00:00 2001 From: YuSanka Date: Mon, 3 Dec 2018 13:29:07 +0100 Subject: [PATCH 1/3] Update gizmos on/off state --- src/slic3r/GUI/GLCanvas3D.cpp | 6 ++++++ src/slic3r/GUI/GLCanvas3D.hpp | 2 ++ src/slic3r/GUI/GUI_ObjectList.cpp | 6 +++--- src/slic3r/GUI/Plater.cpp | 1 + 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 5f9f6a401d..24082c5cbf 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -5248,6 +5248,12 @@ void GLCanvas3D::set_camera_zoom(float zoom) _refresh_if_shown_on_screen(); } +void GLCanvas3D::update_gizmos_on_off_state() +{ + set_as_dirty(); + m_gizmos.update_on_off_state(get_selection()); +} + bool GLCanvas3D::_is_shown_on_screen() const { return (m_canvas != nullptr) ? m_canvas->IsShownOnScreen() : false; diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 6567ac9ba8..8391f6b498 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -919,6 +919,8 @@ public: void set_camera_zoom(float zoom); + void update_gizmos_on_off_state(); + private: bool _is_shown_on_screen() const; void _force_zoom_to_bed(); diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 3de6ca281a..497b65a931 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1405,7 +1405,7 @@ void ObjectList::update_selections_on_canvas() const int sel_cnt = GetSelectedItemsCount(); if (sel_cnt == 0) { selection.clear(); - wxGetApp().plater()->canvas3D()->set_as_dirty(); + wxGetApp().plater()->canvas3D()->update_gizmos_on_off_state(); return; } @@ -1435,7 +1435,7 @@ void ObjectList::update_selections_on_canvas() else add_to_selection(item, selection, true); - wxGetApp().plater()->canvas3D()->set_as_dirty(); + wxGetApp().plater()->canvas3D()->update_gizmos_on_off_state(); return; } @@ -1446,7 +1446,7 @@ void ObjectList::update_selections_on_canvas() for (auto item: sels) add_to_selection(item, selection, false); - wxGetApp().plater()->canvas3D()->set_as_dirty(); + wxGetApp().plater()->canvas3D()->update_gizmos_on_off_state(); } void ObjectList::select_item(const wxDataViewItem& item) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 12468c0d23..6dec67acf9 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1563,6 +1563,7 @@ void Plater::priv::object_list_changed() void Plater::priv::select_all() { this->canvas3D->select_all(); + this->sidebar->obj_list()->update_selections(); } void Plater::priv::remove(size_t obj_idx) From c08d0a4a78c8ca9f912feb9adbee64535bada677 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Mon, 3 Dec 2018 14:02:58 +0100 Subject: [PATCH 2/3] Bunch of fixes into sla support gizmo --- src/libslic3r/Technologies.hpp | 2 + src/slic3r/GUI/GLCanvas3D.cpp | 24 ++++++ src/slic3r/GUI/GLCanvas3D.hpp | 6 +- src/slic3r/GUI/GLGizmo.cpp | 140 +++++++++++++++++++++++++++++---- src/slic3r/GUI/GLGizmo.hpp | 21 ++++- 5 files changed, 174 insertions(+), 19 deletions(-) diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index 43c8343786..c15d0a4efa 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -33,6 +33,8 @@ #define ENABLE_GIZMOS_SHORTCUT (1 && ENABLE_1_42_0) // Scene's GUI made using imgui library #define ENABLE_IMGUI (1 && ENABLE_1_42_0) +// Modified Sla support gizmo +#define ENABLE_SLA_SUPPORT_GIZMO_MOD (1 && ENABLE_1_42_0) #endif // _technologies_h_ diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 24082c5cbf..f228723da6 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2872,14 +2872,22 @@ void GLCanvas3D::Gizmos::set_flattening_data(const ModelObject* model_object) reinterpret_cast(it->second)->set_flattening_data(model_object); } +#if ENABLE_SLA_SUPPORT_GIZMO_MOD +void GLCanvas3D::Gizmos::set_sla_support_data(ModelObject* model_object, const GLCanvas3D::Selection& selection) +#else void GLCanvas3D::Gizmos::set_model_object_ptr(ModelObject* model_object) +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD { if (!m_enabled) return; GizmosMap::const_iterator it = m_gizmos.find(SlaSupports); if (it != m_gizmos.end()) +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + reinterpret_cast(it->second)->set_sla_support_data(model_object, selection); +#else reinterpret_cast(it->second)->set_model_object_ptr(model_object); +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD } void GLCanvas3D::Gizmos::clicked_on_object(const Vec2d& mouse_position) @@ -6149,7 +6157,11 @@ void GLCanvas3D::_update_gizmos_data() #endif // ENABLE_WORLD_ROTATIONS ModelObject* model_object = m_model->objects[m_selection.get_object_idx()]; m_gizmos.set_flattening_data(model_object); +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + m_gizmos.set_sla_support_data(model_object, m_selection); +#else m_gizmos.set_model_object_ptr(model_object); +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD #else ModelObject* model_object = m_model->objects[m_selection.get_object_idx()]; ModelInstance* model_instance = model_object->instances[m_selection.get_instance_idx()]; @@ -6160,7 +6172,11 @@ void GLCanvas3D::_update_gizmos_data() m_gizmos.set_rotation(model_instance->get_rotation()); #endif // ENABLE_WORLD_ROTATIONS m_gizmos.set_flattening_data(model_object); +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + m_gizmos.set_sla_support_data(model_object, m_selection); +#else m_gizmos.set_model_object_ptr(model_object); +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD #endif // ENABLE_MODELVOLUME_TRANSFORM } #if ENABLE_MODELVOLUME_TRANSFORM @@ -6174,7 +6190,11 @@ void GLCanvas3D::_update_gizmos_data() m_gizmos.set_rotation(volume->get_volume_rotation()); #endif // ENABLE_WORLD_ROTATIONS m_gizmos.set_flattening_data(nullptr); +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + m_gizmos.set_sla_support_data(nullptr, m_selection); +#else m_gizmos.set_model_object_ptr(nullptr); +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD } #endif // ENABLE_MODELVOLUME_TRANSFORM else @@ -6182,7 +6202,11 @@ void GLCanvas3D::_update_gizmos_data() m_gizmos.set_scale(Vec3d::Ones()); m_gizmos.set_rotation(Vec3d::Zero()); m_gizmos.set_flattening_data(m_selection.is_from_single_object() ? m_model->objects[m_selection.get_object_idx()] : nullptr); +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + m_gizmos.set_sla_support_data(nullptr, m_selection); +#else m_gizmos.set_model_object_ptr(nullptr); +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD } } diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 8391f6b498..c7e6e61c59 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -651,8 +651,12 @@ private: Vec3d get_flattening_normal() const; void set_flattening_data(const ModelObject* model_object); - + +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + void set_sla_support_data(ModelObject* model_object, const GLCanvas3D::Selection& selection); +#else void set_model_object_ptr(ModelObject* model_object); +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD void clicked_on_object(const Vec2d& mouse_position); void delete_current_grabber(bool delete_all = false); diff --git a/src/slic3r/GUI/GLGizmo.cpp b/src/slic3r/GUI/GLGizmo.cpp index 9609c21664..d228e26411 100644 --- a/src/slic3r/GUI/GLGizmo.cpp +++ b/src/slic3r/GUI/GLGizmo.cpp @@ -1182,20 +1182,6 @@ GLGizmoMove3D::GLGizmoMove3D(GLCanvas3D& parent) ::gluQuadricDrawStyle(m_quadric, GLU_FILL); } -GLGizmoMove3D::GLGizmoMove3D(const GLGizmoMove3D& other) - : GLGizmoBase(other.m_parent) - , m_displacement(other.m_displacement) - , m_snap_step(other.m_snap_step) - , m_starting_drag_position(other.m_starting_drag_position) - , m_starting_box_center(other.m_starting_box_center) - , m_starting_box_bottom_center(other.m_starting_box_bottom_center) - , m_quadric(nullptr) -{ - m_quadric = ::gluNewQuadric(); - if (m_quadric != nullptr) - ::gluQuadricDrawStyle(m_quadric, GLU_FILL); -} - GLGizmoMove3D::~GLGizmoMove3D() { if (m_quadric != nullptr) @@ -1757,10 +1743,27 @@ Vec3d GLGizmoFlatten::get_flattening_normal() const } GLGizmoSlaSupports::GLGizmoSlaSupports(GLCanvas3D& parent) +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + : GLGizmoBase(parent), m_starting_center(Vec3d::Zero()), m_quadric(nullptr) +#else : GLGizmoBase(parent), m_starting_center(Vec3d::Zero()) +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD { +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + m_quadric = ::gluNewQuadric(); + if (m_quadric != nullptr) + ::gluQuadricDrawStyle(m_quadric, GLU_FILL); +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD } +#if ENABLE_SLA_SUPPORT_GIZMO_MOD +GLGizmoSlaSupports::~GLGizmoSlaSupports() +{ + if (m_quadric != nullptr) + ::gluDeleteQuadric(m_quadric); +} +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD + bool GLGizmoSlaSupports::on_init() { std::string path = resources_dir() + "/icons/overlay/"; @@ -1781,6 +1784,20 @@ bool GLGizmoSlaSupports::on_init() return true; } +#if ENABLE_SLA_SUPPORT_GIZMO_MOD +void GLGizmoSlaSupports::set_sla_support_data(ModelObject* model_object, const GLCanvas3D::Selection& selection) +{ + m_starting_center = Vec3d::Zero(); + m_old_model_object = m_model_object; + m_model_object = model_object; + + if ((model_object != nullptr) && selection.is_from_single_instance()) + { + if (is_mesh_update_necessary()) + update_mesh(); + } +} +#else void GLGizmoSlaSupports::set_model_object_ptr(ModelObject* model_object) { if (model_object != nullptr) @@ -1796,12 +1813,14 @@ void GLGizmoSlaSupports::set_model_object_ptr(ModelObject* model_object) update_mesh(); } } +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD void GLGizmoSlaSupports::on_render(const GLCanvas3D::Selection& selection) const { ::glEnable(GL_BLEND); ::glEnable(GL_DEPTH_TEST); +#if !ENABLE_SLA_SUPPORT_GIZMO_MOD // the dragged_offset is a vector measuring where was the object moved // with the gizmo being on. This is reset in set_model_object_ptr and // does not work correctly when there are multiple copies. @@ -1809,6 +1828,7 @@ void GLGizmoSlaSupports::on_render(const GLCanvas3D::Selection& selection) const if (m_starting_center == Vec3d::Zero()) m_starting_center = selection.get_bounding_box().center(); Vec3d dragged_offset = selection.get_bounding_box().center() - m_starting_center; +#endif // !ENABLE_SLA_SUPPORT_GIZMO_MOD for (auto& g : m_grabbers) { g.color[0] = 1.f; @@ -1816,8 +1836,12 @@ void GLGizmoSlaSupports::on_render(const GLCanvas3D::Selection& selection) const g.color[2] = 0.f; } +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + render_grabbers(selection, false); +#else //::glTranslatef((GLfloat)dragged_offset(0), (GLfloat)dragged_offset(1), (GLfloat)dragged_offset(2)); render_grabbers(false); +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD #if !ENABLE_IMGUI render_tooltip_texture(); @@ -1834,9 +1858,59 @@ void GLGizmoSlaSupports::on_render_for_picking(const GLCanvas3D::Selection& sele m_grabbers[i].color[1] = 1.0f; m_grabbers[i].color[2] = picking_color_component(i); } +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + render_grabbers(selection, true); +#else render_grabbers(true); +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD } +#if ENABLE_SLA_SUPPORT_GIZMO_MOD +void GLGizmoSlaSupports::render_grabbers(const GLCanvas3D::Selection& selection, bool picking) const +{ + if (m_quadric == nullptr) + return; + + if (!selection.is_from_single_instance()) + return; + + const GLVolume* v = selection.get_volume(*selection.get_volume_idxs().begin()); + double z_shift = v->get_sla_shift_z(); + + ::glPushMatrix(); + ::glTranslated(0.0, 0.0, z_shift); + + const Transform3d& m = selection.get_volume(*selection.get_volume_idxs().begin())->get_instance_transformation().get_matrix(); + ::glMultMatrixd(m.data()); + + if (!picking) + ::glEnable(GL_LIGHTING); + + float render_color[3]; + for (int i = 0; i < (int)m_grabbers.size(); ++i) + { + if (!picking && (m_hover_id == i)) + { + render_color[0] = 1.0f - m_grabbers[i].color[0]; + render_color[1] = 1.0f - m_grabbers[i].color[1]; + render_color[2] = 1.0f - m_grabbers[i].color[2]; + } + else + ::memcpy((void*)render_color, (const void*)m_grabbers[i].color, 3 * sizeof(float)); + + ::glColor3fv(render_color); + ::glPushMatrix(); + ::glTranslated(m_grabbers[i].center(0), m_grabbers[i].center(1), m_grabbers[i].center(2)); + ::gluSphere(m_quadric, 0.75, 36, 18); + ::glPopMatrix(); + } + + if (!picking) + ::glDisable(GL_LIGHTING); + + ::glPopMatrix(); +} +#else void GLGizmoSlaSupports::render_grabbers(bool picking) const { if (m_parent.get_selection().is_empty()) @@ -1886,10 +1960,15 @@ void GLGizmoSlaSupports::render_grabbers(bool picking) const ::glTranslatef((GLfloat)0, (GLfloat)0, (GLfloat)-z_shift); } +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD bool GLGizmoSlaSupports::is_mesh_update_necessary() const { - return m_state == On && m_model_object && ! m_model_object->instances.empty() && ! m_instance_matrix.isApprox(m_source_data.matrix); +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + return (m_state == On) && (m_model_object != nullptr) && (m_model_object != m_old_model_object) && !m_model_object->instances.empty(); +#else + return m_state == On && m_model_object && !m_model_object->instances.empty() && !m_instance_matrix.isApprox(m_source_data.matrix); +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD //if (m_state != On || !m_model_object || m_model_object->instances.empty() || ! m_instance_matrix.isApprox(m_source_data.matrix)) // return false; @@ -1924,7 +2003,9 @@ void GLGizmoSlaSupports::update_mesh() m_AABB = igl::AABB(); m_AABB.init(m_V, m_F); +#if !ENABLE_SLA_SUPPORT_GIZMO_MOD m_source_data.matrix = m_instance_matrix; +#endif // !ENABLE_SLA_SUPPORT_GIZMO_MOD // we'll now reload Grabbers (selection might have changed): m_grabbers.clear(); @@ -1937,7 +2018,11 @@ void GLGizmoSlaSupports::update_mesh() Vec3f GLGizmoSlaSupports::unproject_on_mesh(const Vec2d& mouse_pos) { // if the gizmo doesn't have the V, F structures for igl, calculate them first: +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + if (m_V.size() == 0) +#else if (m_V.size() == 0 || is_mesh_update_necessary()) +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD update_mesh(); Eigen::Matrix viewport; @@ -1954,10 +2039,20 @@ Vec3f GLGizmoSlaSupports::unproject_on_mesh(const Vec2d& mouse_pos) igl::Hit hit; - double z_offset = m_parent.get_selection().get_volume(0)->get_sla_shift_z(); - point1(2) -= z_offset; +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + const GLCanvas3D::Selection& selection = m_parent.get_selection(); + const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); + double z_offset = volume->get_sla_shift_z(); +#else + double z_offset = m_parent.get_selection().get_volume(0)->get_sla_shift_z(); +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD + point1(2) -= z_offset; point2(2) -= z_offset; +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + Transform3d inv = volume->get_instance_transformation().get_matrix().inverse(); +#else Transform3d inv = m_instance_matrix.inverse(); +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD point1 = inv * point1; point2 = inv * point2; @@ -1971,6 +2066,17 @@ Vec3f GLGizmoSlaSupports::unproject_on_mesh(const Vec2d& mouse_pos) void GLGizmoSlaSupports::clicked_on_object(const Vec2d& mouse_position) { +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + int instance_id = m_parent.get_selection().get_instance_idx(); + if (m_old_instance_id != instance_id) + { + m_old_instance_id = instance_id; + return; + } + if (instance_id == -1) + return; +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD + Vec3f new_pos; try { new_pos = unproject_on_mesh(mouse_position); // this can throw - we don't want to create a new grabber in that case diff --git a/src/slic3r/GUI/GLGizmo.hpp b/src/slic3r/GUI/GLGizmo.hpp index ae2cf660c5..d2d630081a 100644 --- a/src/slic3r/GUI/GLGizmo.hpp +++ b/src/slic3r/GUI/GLGizmo.hpp @@ -365,7 +365,6 @@ class GLGizmoMove3D : public GLGizmoBase public: explicit GLGizmoMove3D(GLCanvas3D& parent); - GLGizmoMove3D(const GLGizmoMove3D& other); virtual ~GLGizmoMove3D(); double get_snap_step(double step) const { return m_snap_step; } @@ -440,16 +439,27 @@ class GLGizmoSlaSupports : public GLGizmoBase { private: ModelObject* m_model_object = nullptr; +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + ModelObject* m_old_model_object = nullptr; + int m_old_instance_id = -1; +#else Transform3d m_instance_matrix; +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD Vec3f unproject_on_mesh(const Vec2d& mouse_pos); +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + GLUquadricObj* m_quadric; +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD + Eigen::MatrixXf m_V; // vertices Eigen::MatrixXi m_F; // facets indices igl::AABB m_AABB; struct SourceDataSummary { +#if !ENABLE_SLA_SUPPORT_GIZMO_MOD BoundingBoxf3 bounding_box; Transform3d matrix; +#endif // !ENABLE_SLA_SUPPORT_GIZMO_MOD Vec3d mesh_first_point; }; @@ -460,7 +470,12 @@ private: public: explicit GLGizmoSlaSupports(GLCanvas3D& parent); +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + virtual ~GLGizmoSlaSupports(); + void set_sla_support_data(ModelObject* model_object, const GLCanvas3D::Selection& selection); +#else void set_model_object_ptr(ModelObject* model_object); +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD void clicked_on_object(const Vec2d& mouse_position); void delete_current_grabber(bool delete_all); @@ -470,7 +485,11 @@ private: virtual void on_render(const GLCanvas3D::Selection& selection) const; virtual void on_render_for_picking(const GLCanvas3D::Selection& selection) const; +#if ENABLE_SLA_SUPPORT_GIZMO_MOD + void render_grabbers(const GLCanvas3D::Selection& selection, bool picking = false) const; +#else void render_grabbers(bool picking = false) const; +#endif // ENABLE_SLA_SUPPORT_GIZMO_MOD bool is_mesh_update_necessary() const; void update_mesh(); From 2f5e69ad9ecbd0662c614d23052eac6cbe60f638 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Mon, 3 Dec 2018 14:40:34 +0100 Subject: [PATCH 3/3] mirrored sl1 bed bottom image --- resources/icons/bed/sl1_bottom.png | Bin 20417 -> 29541 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/icons/bed/sl1_bottom.png b/resources/icons/bed/sl1_bottom.png index bbd172837f0df7c2c62375c0d95ee2f86124354d..04272ac22c5dfa547c32520188568040ce1e98ab 100644 GIT binary patch literal 29541 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