diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index c9b3a2fddc..5d4c25d718 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -1055,9 +1055,12 @@ int GLVolumeCollection::load_wipe_tower_preview( }; TriangleMesh tooth_mesh; - tooth_mesh.merge(TriangleMesh(std::move(generate_lateral(0.0f, 38.453f)))); - tooth_mesh.merge(TriangleMesh(std::move(generate_central()))); - tooth_mesh.merge(TriangleMesh(std::move(generate_lateral(61.547f, 100.0f)))); + indexed_triangle_set its = generate_lateral(0.0f, 38.453f); + tooth_mesh.merge(TriangleMesh(std::move(its))); + its = generate_central(); + tooth_mesh.merge(TriangleMesh(std::move(its))); + its = generate_lateral(61.547f, 100.0f); + tooth_mesh.merge(TriangleMesh(std::move(its))); #else float out_points_idx[][3] = { { 0, -depth, 0 }, { 0, 0, 0 }, { 38.453f, 0, 0 }, { 61.547f, 0, 0 }, { 100.0f, 0, 0 }, { 100.0f, -depth, 0 }, { 55.7735f, -10.0f, 0 }, { 44.2265f, 10.0f, 0 }, { 38.453f, 0, 1 }, { 0, 0, 1 }, { 0, -depth, 1 }, { 100.0f, -depth, 1 }, { 100.0f, 0, 1 }, { 61.547f, 0, 1 }, { 55.7735f, -10.0f, 1 }, { 44.2265f, 10.0f, 1 } }; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index bd9bc3cfe6..fc63b829c1 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -5499,6 +5499,7 @@ void GLCanvas3D::_picking_pass() object_type = "Volume"; break; } + default: { break; } } char buf[1024]; if (hit.type != SceneRaycaster::EType::None) { diff --git a/src/slic3r/GUI/SceneRaycaster.cpp b/src/slic3r/GUI/SceneRaycaster.cpp index d59af4ade6..2313fbf0c7 100644 --- a/src/slic3r/GUI/SceneRaycaster.cpp +++ b/src/slic3r/GUI/SceneRaycaster.cpp @@ -117,7 +117,6 @@ SceneRaycaster::HitResult SceneRaycaster::hit(const Vec2d& mouse_pos, const Came if (item->get_raycaster()->closest_hit(mouse_pos, trafo, camera, current_hit.position, current_hit.normal, clip_plane)) { current_hit.position = (trafo * current_hit.position.cast()).cast(); if (is_closest(camera, current_hit.position)) { - const Transform3d matrix = camera.get_view_matrix() * trafo; const Matrix3d normal_matrix = (Matrix3d)trafo.matrix().block(0, 0, 3, 3).inverse().transpose(); current_hit.normal = (normal_matrix * current_hit.normal.cast()).normalized().cast(); ret = current_hit; @@ -148,7 +147,7 @@ SceneRaycaster::HitResult SceneRaycaster::hit(const Vec2d& mouse_pos, const Came #if ENABLE_RAYCAST_PICKING_DEBUG void SceneRaycaster::render_hit(const Camera& camera) { - if (!m_last_hit.has_value() || !m_last_hit.value().is_valid()) + if (!m_last_hit.has_value() || !(*m_last_hit).is_valid()) return; GLShaderProgram* shader = wxGetApp().get_shader("flat"); @@ -156,14 +155,14 @@ void SceneRaycaster::render_hit(const Camera& camera) shader->set_uniform("projection_matrix", camera.get_projection_matrix()); - const Transform3d sphere_view_model_matrix = camera.get_view_matrix() * Geometry::translation_transform(m_last_hit.value().position.cast()) * + const Transform3d sphere_view_model_matrix = camera.get_view_matrix() * Geometry::translation_transform((*m_last_hit).position.cast()) * Geometry::scale_transform(4.0 * camera.get_inv_zoom()); shader->set_uniform("view_model_matrix", sphere_view_model_matrix); m_sphere.render(); Eigen::Quaterniond q; Transform3d m = Transform3d::Identity(); - m.matrix().block(0, 0, 3, 3) = q.setFromTwoVectors(Vec3d::UnitZ(), m_last_hit.value().normal.cast()).toRotationMatrix(); + m.matrix().block(0, 0, 3, 3) = q.setFromTwoVectors(Vec3d::UnitZ(), (*m_last_hit).normal.cast()).toRotationMatrix(); const Transform3d line_view_model_matrix = sphere_view_model_matrix * m * Geometry::scale_transform(10.0); shader->set_uniform("view_model_matrix", line_view_model_matrix); @@ -194,6 +193,7 @@ PickingId SceneRaycaster::base_id(EType type) case EType::Bed: { return PickingId(EPickingIdBase::Bed); } case EType::Volume: { return PickingId(EPickingIdBase::Volume); } case EType::Gizmo: { return PickingId(EPickingIdBase::Gizmo); } + default: { break; } }; assert(false);