diff --git a/src/libslic3r/TextureMapping.hpp b/src/libslic3r/TextureMapping.hpp index bda06bcafcf..b08082ed3b3 100644 --- a/src/libslic3r/TextureMapping.hpp +++ b/src/libslic3r/TextureMapping.hpp @@ -129,10 +129,10 @@ struct TextureMappingZone static constexpr int DefaultDitheringMethod = int(DitheringHalftone); static constexpr float MinDitheringResolutionMm = 0.04f; static constexpr float MaxDitheringResolutionMm = 10.f; - static constexpr float DefaultDitheringResolutionMm = 0.08f; + static constexpr float DefaultDitheringResolutionMm = 0.4f; static constexpr float MinHalftoneDotSizeMm = 0.08f; static constexpr float MaxHalftoneDotSizeMm = 50.f; - static constexpr float DefaultHalftoneDotSizeMm = 0.8f; + static constexpr float DefaultHalftoneDotSizeMm = 2.f; static constexpr float DefaultContrastPct = 100.f; static constexpr bool DefaultHighResolutionSampling = true; static constexpr float DefaultToneGamma = 1.f; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index d4323131f93..3aa6b21e02c 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1160,6 +1160,29 @@ public: tone_gamma_row->Add(new wxStaticText(image_page, wxID_ANY, _L("x")), 0, wxALIGN_CENTER_VERTICAL); image_root->Add(tone_gamma_row, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, gap); + auto *dithering_row = new wxBoxSizer(wxHORIZONTAL); + m_dithering_enabled_checkbox = new wxCheckBox(image_page, wxID_ANY, _L("Enable dithering")); + m_dithering_enabled_checkbox->SetValue(dithering_enabled); + dithering_row->Add(m_dithering_enabled_checkbox, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, gap); + wxArrayString dithering_choices; + dithering_choices.Add(_L("Closest combination (no dithering)")); + dithering_choices.Add(_L("Floyd-Steinberg - not recommended")); + dithering_choices.Add(_L("Ordered Bayer - not recommended")); + dithering_choices.Add(_L("Halftone")); + dithering_choices.Add(_L("Halftone (increased detail) - not recommended")); + m_dithering_method_choice = new wxChoice(image_page, wxID_ANY, wxDefaultPosition, wxDefaultSize, dithering_choices); + m_dithering_method_choice->SetSelection(std::clamp(dithering_method, + int(TextureMappingZone::DitheringClosest), + int(TextureMappingZone::DitheringHalftoneIncreasedDetail))); + dithering_row->Add(m_dithering_method_choice, 1, wxALIGN_CENTER_VERTICAL); + m_dithering_enabled_checkbox->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent &) { + update_dithering_options_visibility(true); + }); + m_dithering_method_choice->Bind(wxEVT_CHOICE, [this](wxCommandEvent &) { + update_dithering_options_visibility(true); + }); + image_root->Add(dithering_row, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, gap); + const std::vector channel_labels = texture_mapping_channel_labels(filament_color_mode); auto component_label = [&component_ids, &channel_labels](size_t i) { wxString text = wxString::Format("F%d", int(component_ids[i])); @@ -1365,28 +1388,6 @@ public: m_compact_offset_mode_checkbox->SetToolTip( _L("Normalizes sampled filament offsets so the strongest active color uses the full maximum line width.")); experimental_box->Add(m_compact_offset_mode_checkbox, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, gap); - auto *dithering_row = new wxBoxSizer(wxHORIZONTAL); - m_dithering_enabled_checkbox = new wxCheckBox(experimental_page, wxID_ANY, _L("Enable dithering (not recommended)")); - m_dithering_enabled_checkbox->SetValue(dithering_enabled); - dithering_row->Add(m_dithering_enabled_checkbox, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, gap); - wxArrayString dithering_choices; - dithering_choices.Add(_L("Closest combination (no dithering)")); - dithering_choices.Add(_L("Floyd-Steinberg")); - dithering_choices.Add(_L("Ordered Bayer")); - dithering_choices.Add(_L("Halftone")); - dithering_choices.Add(_L("Halftone (increased detail)")); - m_dithering_method_choice = new wxChoice(experimental_page, wxID_ANY, wxDefaultPosition, wxDefaultSize, dithering_choices); - m_dithering_method_choice->SetSelection(std::clamp(dithering_method, - int(TextureMappingZone::DitheringClosest), - int(TextureMappingZone::DitheringHalftoneIncreasedDetail))); - dithering_row->Add(m_dithering_method_choice, 1, wxALIGN_CENTER_VERTICAL); - m_dithering_enabled_checkbox->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent &) { - update_dithering_options_visibility(true); - }); - m_dithering_method_choice->Bind(wxEVT_CHOICE, [this](wxCommandEvent &) { - update_dithering_options_visibility(true); - }); - experimental_box->Add(dithering_row, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, gap); m_dithering_resolution_panel = new wxPanel(experimental_page, wxID_ANY); auto *dithering_resolution_row = new wxBoxSizer(wxHORIZONTAL); m_dithering_resolution_panel->SetSizer(dithering_resolution_row); @@ -1537,7 +1538,7 @@ public: global_root->Add(prime_image_box, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, gap); auto *angle_row = new wxBoxSizer(wxHORIZONTAL); - angle_row->Add(new wxStaticText(global_page, wxID_ANY, _L("Angle offset")), 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, gap); + angle_row->Add(new wxStaticText(global_page, wxID_ANY, _L("Rotate image (Z):")), 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, gap); m_prime_tower_angle_spin = new wxSpinCtrlDouble(global_page, wxID_ANY, wxEmptyString, @@ -6060,7 +6061,7 @@ void Sidebar::update_texture_mapping_panel(bool sync_manager) if (offset_btn != nullptr) offset_btn->Show(!image_texture); if (advanced_btn != nullptr) - advanced_btn->Show(image_texture); + advanced_btn->Show(); editor->Layout(); row->Layout(); update_texture_mapping_area_height();