diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 89a922c34..907088705 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -675,12 +675,13 @@ std::vector GLVolumeCollection::load_object( int obj_idx, const std::vector &instance_idxs, const std::string &color_by, - bool opengl_initialized) + bool opengl_initialized, + bool need_raycaster) { std::vector volumes_idx; for (int volume_idx = 0; volume_idx < int(model_object->volumes.size()); ++volume_idx) for (int instance_idx : instance_idxs) - volumes_idx.emplace_back(this->GLVolumeCollection::load_object_volume(model_object, obj_idx, volume_idx, instance_idx, color_by, opengl_initialized)); + volumes_idx.emplace_back(this->GLVolumeCollection::load_object_volume(model_object, obj_idx, volume_idx, instance_idx, color_by, opengl_initialized, false, false, need_raycaster)); return volumes_idx; } @@ -693,7 +694,8 @@ int GLVolumeCollection::load_object_volume( const std::string &color_by, bool opengl_initialized, bool in_assemble_view, - bool use_loaded_id) + bool use_loaded_id, + bool need_raycaster) { const ModelVolume *model_volume = model_object->volumes[volume_idx]; const int extruder_id = model_volume->extruder_id(); @@ -711,7 +713,7 @@ int GLVolumeCollection::load_object_volume( v.model.init_from(mesh, true); #else v.model.init_from(*mesh); - v.mesh_raycaster = std::make_unique(mesh); + if (need_raycaster) { v.mesh_raycaster = std::make_unique(mesh); } #endif // ENABLE_SMOOTH_NORMALS v.composite_id = GLVolume::CompositeID(obj_idx, volume_idx, instance_idx); diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index cd89efa36..8e39c0feb 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -439,7 +439,8 @@ public: int obj_idx, const std::vector &instance_idxs, const std::string &color_by, - bool opengl_initialized); + bool opengl_initialized, + bool need_raycaster = true); int load_object_volume( const ModelObject *model_object, @@ -449,7 +450,8 @@ public: const std::string &color_by, bool opengl_initialized, bool in_assemble_view = false, - bool use_loaded_id = false); + bool use_loaded_id = false, + bool need_raycaster = true); // Load SLA auxiliary GLVolumes (for support trees or pad). void load_object_auxiliary( const SLAPrintObject *print_object, diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 4fd50ad18..00b968586 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -3123,7 +3123,7 @@ void GCodeViewer::load_shells(const Print& print, bool initialized, bool force_p instance_ids.resize(instance_index); size_t current_volumes_count = m_shells.volumes.volumes.size(); - m_shells.volumes.load_object(model_obj, object_idx, instance_ids, "object", initialized); + m_shells.volumes.load_object(model_obj, object_idx, instance_ids, "object", initialized, false); // adjust shells' z if raft is present const SlicingParameters& slicing_parameters = obj->slicing_parameters();