From 750e374357ece077f4bd1415e94c8f2ad01b8dbf Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Fri, 10 Mar 2023 09:51:51 +0100 Subject: [PATCH] Follow-up of f708d9fcb9b84ca98474475152cba45cc793c218 - Fixed rendering of printbed reference axes when any gizmo is open --- src/slic3r/GUI/3DBed.cpp | 14 ++++---------- src/slic3r/GUI/3DBed.hpp | 9 +++------ src/slic3r/GUI/GLCanvas3D.cpp | 19 +++++++++++++------ src/slic3r/GUI/GLCanvas3D.hpp | 4 +++- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/slic3r/GUI/3DBed.cpp b/src/slic3r/GUI/3DBed.cpp index bef4c0d899..b4f0dd9d8c 100644 --- a/src/slic3r/GUI/3DBed.cpp +++ b/src/slic3r/GUI/3DBed.cpp @@ -157,26 +157,23 @@ Point Bed3D::point_projection(const Point& point) const return m_polygon.point_projection(point); } -void Bed3D::render(GLCanvas3D& canvas, const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, float scale_factor, bool show_axes, bool show_texture) +void Bed3D::render(GLCanvas3D& canvas, const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, float scale_factor, bool show_texture) { - render_internal(canvas, view_matrix, projection_matrix, bottom, scale_factor, show_axes, show_texture, false); + render_internal(canvas, view_matrix, projection_matrix, bottom, scale_factor, show_texture, false); } void Bed3D::render_for_picking(GLCanvas3D& canvas, const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, float scale_factor) { - render_internal(canvas, view_matrix, projection_matrix, bottom, scale_factor, false, false, true); + render_internal(canvas, view_matrix, projection_matrix, bottom, scale_factor, false, true); } void Bed3D::render_internal(GLCanvas3D& canvas, const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, float scale_factor, - bool show_axes, bool show_texture, bool picking) + bool show_texture, bool picking) { m_scale_factor = scale_factor; glsafe(::glEnable(GL_DEPTH_TEST)); - if (show_axes) - render_axes(); - m_model.model.set_color(picking ? PICKING_MODEL_COLOR : DEFAULT_MODEL_COLOR); switch (m_type) @@ -366,9 +363,6 @@ std::tuple Bed3D::detect_type(const Point void Bed3D::render_axes() { - if (!m_show_axes) - return; - if (m_build_volume.valid()) #if ENABLE_WORLD_COORDINATE m_axes.render(Transform3d::Identity(), 0.25f); diff --git a/src/slic3r/GUI/3DBed.hpp b/src/slic3r/GUI/3DBed.hpp index 36aefef796..031a8e8a3a 100644 --- a/src/slic3r/GUI/3DBed.hpp +++ b/src/slic3r/GUI/3DBed.hpp @@ -84,7 +84,6 @@ private: #endif // ENABLE_WORLD_COORDINATE float m_scale_factor{ 1.0f }; - bool m_show_axes{ true }; public: Bed3D() = default; @@ -112,9 +111,8 @@ public: bool contains(const Point& point) const; Point point_projection(const Point& point) const; - void toggle_show_axes() { m_show_axes = !m_show_axes; } - - void render(GLCanvas3D& canvas, const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, float scale_factor, bool show_axes, bool show_texture); + void render(GLCanvas3D& canvas, const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, float scale_factor, bool show_texture); + void render_axes(); void render_for_picking(GLCanvas3D& canvas, const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, float scale_factor); private: @@ -125,8 +123,7 @@ private: void init_contourlines(); static std::tuple detect_type(const Pointfs& shape); void render_internal(GLCanvas3D& canvas, const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, float scale_factor, - bool show_axes, bool show_texture, bool picking); - void render_axes(); + bool show_texture, bool picking); void render_system(GLCanvas3D& canvas, const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, bool show_texture); void render_texture(bool bottom, GLCanvas3D& canvas, const Transform3d& view_matrix, const Transform3d& projection_matrix); void render_model(const Transform3d& view_matrix, const Transform3d& projection_matrix); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 05cff51fae..1f2f668c32 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1573,8 +1573,10 @@ void GLCanvas3D::render() _render_objects(GLVolumeCollection::ERenderType::Opaque); _render_sla_slices(); _render_selection(); + if (m_show_bed_axes) + _render_bed_axes(); if (is_looking_downward) - _render_bed(camera.get_view_matrix(), camera.get_projection_matrix(), false, true); + _render_bed(camera.get_view_matrix(), camera.get_projection_matrix(), false); if (!m_main_toolbar.is_enabled()) _render_gcode(); _render_objects(GLVolumeCollection::ERenderType::Transparent); @@ -1597,7 +1599,7 @@ void GLCanvas3D::render() _render_selection_sidebar_hints(); _render_current_gizmo(); if (!is_looking_downward) - _render_bed(camera.get_view_matrix(), camera.get_projection_matrix(), true, true); + _render_bed(camera.get_view_matrix(), camera.get_projection_matrix(), true); #if ENABLE_RAYCAST_PICKING_DEBUG if (m_picking_enabled && !m_mouse.dragging && !m_gizmos.is_dragging() && !m_rectangle_selection.is_dragging()) @@ -2355,7 +2357,7 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) #else /* __APPLE__ */ case WXK_CONTROL_D: #endif /* __APPLE__ */ - m_bed.toggle_show_axes(); + m_show_bed_axes = !m_show_bed_axes; m_dirty = true; break; #ifdef __APPLE__ @@ -4423,7 +4425,7 @@ void GLCanvas3D::_render_thumbnail_internal(ThumbnailData& thumbnail_data, const glsafe(::glDisable(GL_DEPTH_TEST)); if (thumbnail_params.show_bed) - _render_bed(view_matrix, projection_matrix, !camera.is_looking_downward(), false); + _render_bed(view_matrix, projection_matrix, !camera.is_looking_downward()); // restore background color if (thumbnail_params.transparent_background) @@ -5477,7 +5479,7 @@ void GLCanvas3D::_render_background() glsafe(::glEnable(GL_DEPTH_TEST)); } -void GLCanvas3D::_render_bed(const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, bool show_axes) +void GLCanvas3D::_render_bed(const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom) { float scale_factor = 1.0; #if ENABLE_RETINA_GL @@ -5491,7 +5493,12 @@ void GLCanvas3D::_render_bed(const Transform3d& view_matrix, const Transform3d& && m_gizmos.get_current_type() != GLGizmosManager::Seam && m_gizmos.get_current_type() != GLGizmosManager::MmuSegmentation); - m_bed.render(*this, view_matrix, projection_matrix, bottom, scale_factor, show_axes, show_texture); + m_bed.render(*this, view_matrix, projection_matrix, bottom, scale_factor, show_texture); +} + +void GLCanvas3D::_render_bed_axes() +{ + m_bed.render_axes(); } void GLCanvas3D::_render_bed_for_picking(const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom) diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index e91a727c57..ad33a5d684 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -522,6 +522,7 @@ private: ECursorType m_cursor_type; GLSelectionRectangle m_rectangle_selection; std::vector m_hover_volume_idxs; + bool m_show_bed_axes{ true }; // Following variable is obsolete and it should be safe to remove it. // I just don't want to do it now before a release (Lukas Matena 24.3.2019) @@ -984,7 +985,8 @@ private: void _picking_pass(); void _rectangular_selection_picking_pass(); void _render_background(); - void _render_bed(const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, bool show_axes); + void _render_bed(const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom); + void _render_bed_axes(); void _render_bed_for_picking(const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom); void _render_objects(GLVolumeCollection::ERenderType type); void _render_gcode();