-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Aesthetic pack #10314
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Aesthetic pack #10314
Conversation
I checked the code, and rolled back a bit in some of the fixed features. As it turned out, the infill polylines are optimized several times in Orca, so that the actions of the primary optimization functions simply turn out to be unnecessary, and even harmful in terms of execution speed. Now the code is working as intended, but I can't provide the tests yet due to other difficulties related to retracts and snotty plastic from the nozzle... |
@pi-squared-studio |
src/libslic3r/ShortestPath.cpp
Outdated
@@ -998,6 +998,13 @@ std::vector<std::pair<size_t, bool>> chain_segments_greedy2(SegmentEndPointFunc | |||
return chain_segments_greedy_constrained_reversals2_<PointType, SegmentEndPointFunc, false, decltype(could_reverse_func)>(end_point_func, could_reverse_func, num_segments, start_near); | |||
} | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems this function is not used anywhere. If that is the case, can we delete it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi!
Whatever you deem necessary to do is within your rights!
At the moment, I'm still working on this project, and I wanted to look at the code again at the end and do the final cleaning of all kinds of garbage. Also make sure that some algorithms work correctly... But if You decide to fix the job at this stage, I can transfer it to Draft. And already make new functions in the new PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see.
Yes, it would be helpful to mark it as a draft or add [NOT READY] in the PR title if it isn't ready for review, so I can hold on the review.
src/libslic3r/ShortestPath.hpp
Outdated
@@ -26,8 +26,9 @@ std::vector<std::pair<size_t, bool>> chain_extrusion_paths(std::vector<Extrusion | |||
void reorder_extrusion_paths(std::vector<ExtrusionPath> &extrusion_paths, std::vector<std::pair<size_t, bool>> &chain); | |||
void chain_and_reorder_extrusion_paths(std::vector<ExtrusionPath> &extrusion_paths, const Point *start_near = nullptr); | |||
|
|||
Polylines chain_polylines(Polylines &&src, const Point *start_near = nullptr); | |||
Polylines chain_polylines(Polylines&& src, const Point* start_near = nullptr); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you undo these format changes to keep the git history lean?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, that's what I wanted to do at the end of the project.
It's just that the development environment (VS) where I work in likes to edit third-party code. ))
src/libslic3r/PrintConfig.cpp
Outdated
@@ -525,7 +536,7 @@ void PrintConfigDef::init_common_params() | |||
def->label = L("Elephant foot compensation"); | |||
def->category = L("Quality"); | |||
def->tooltip = L("Shrinks the initial layer on build plate to compensate for elephant foot effect."); | |||
def->sidetext = "mm"; // milimeters, don't need translation | |||
def->sidetext = L("mm"); // unlike signs, units are translated into some languages |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we keep the PR focused on the relevant changes only? These unrelated changes make the code review extremely difficult.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can cancel it completely. Or I'll do it at the finish line. I noticed that recently these parameters were possible for translation, but then they were canceled. But for some languages, it would make sense.
src/libslic3r/PrintConfig.cpp
Outdated
@@ -2805,6 +2816,42 @@ void PrintConfigDef::init_fff_params() | |||
def->mode = comAdvanced; | |||
def->set_default_value(new ConfigOptionInts{ -1 }); | |||
|
|||
def = this->add("aesthetic_surfaces", coBool); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we rename it to "anisotropic" and update the tooltip to mention that it turns off the reorder so that all lines are drawn in an anisotropic way?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Of course you can! But, I think that the addition to this function will be much more than the line drawing order.
Then I thought that when choosing this option, it would be possible to change others so that the effect would be the most advantageous. For example, the surface density... But, again, the final decision is yours.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you please elaborate on it? In the current implementation, enabling this option will optimize line directions so that they are anisotropic. Did I miss anything?
Another issue is that calling it "Aesthetic Surfaces" is very ambiguous; users won't have any idea what specific changes and impacts occur when the option is turned on or off.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is an eternal struggle between the technical approach and the humanitarian one... I realized that this project is more technical )) Let them be anisotropic. As for me, everything is the same, when this feature works.
src/libslic3r/PrintConfig.cpp
Outdated
def->enum_values.push_back("each_surface"); | ||
def->enum_values.push_back("each_model"); | ||
def->enum_values.push_back("each_assembly"); | ||
//def->enum_values.push_back("printable_area"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's remove these comments if we don't plan to implement them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK. In fact, these principles, if implemented, will turn out to be very complex and will require a lot of machine time.
src/libslic3r/PrintConfig.cpp
Outdated
def->mode = comAdvanced; | ||
def->set_default_value(new ConfigOptionEnum<AlignCenterOfPatterns>(AlignCenterOfPatterns::Each_Surface)); | ||
|
||
def = this->add("precision_surfaces", coBool); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you elaborate on what exactly the precision surface does?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I noticed that when I make a fuzzy skin and 1 wall for the surface, the fill is worked out according to the old contour. Therefore, there are surges and dips. This algorithm simply recalculates the new fill space. Among other things, it turned out that it also fills in the pores (or voids) that have appeared between the usual inner walls and the outer with fuzzy skin.
Technologically, I took the inner filling from the outer boundaries of the layer, and subtracted the silhouettes of the walls from it. All that remains is the inner fill, which is then filled in.
But, as it seems, he did not take into account the nuances, and the fact that the walls may change slightly after applying this algorithm, for example, bridges and overhangs are drawn.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see. Yes, it makes sense.
I would suggest creating a separate PR for this improvement.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Initially, I thought they would be linked into one pack... I will do the following projects.
Give me 1-2 days to complete this PR. I just got really involved in another project, I didn't want to interrupt it.
src/libslic3r/PrintConfig.cpp
Outdated
def->mode = comAdvanced; | ||
def->set_default_value(new ConfigOptionBool(false)); | ||
|
||
def = this->add("align_center_of_patterns", coEnum); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can we name this "center_of_infill_pattern"?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK. It was initially difficult for me to give a name for this function.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Internally, they are all infill patterns.
For the display string (the label), feel free to call it surface.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some quick thoughts:
I like the "aesthetic_surfaces" and "align_center_of_patterns" ideas; I think they are useful.
I have questions about the other changes; please review my code comments.
I would like to suggest:
- Include changes for these two features only in this PR.
- Display these two options in the same place as other infill options in the UI.
- Enable or display these options only for center-based Archimedes Chords and Octagram Spiral patterns.
OK, then I'll fix everything possible here, and transfer the new idea to the new PR. |
@SoftFever Here's a little teaser of what I'm doing at the moment: )) @ianalexis when I finish, will it be possible to contact you to correct the possible Wiki and some UI before adding all this to the code? |
sure! |
…ithub.com/pi-squared-studio/OrcaSlicer into Aesthetic-top-and-bottom-surface-patterns
@ianalexis I will try to roll back such changes in this file, but it seems to me that they are generally worthy of translation. |
Why should we leave the option to translate mm, which is the “universal symbol” for millimeters? |
So I opened up... I forgot to translate that post into English.))) |
…ithub.com/pi-squared-studio/OrcaSlicer into Aesthetic-top-and-bottom-surface-patterns
No te preocupes camarada! XD
This surprised me, so I did some research and realized that you have the Russian designation/русское обозначение. |
It's up to the creators of Orca to decide. In theory, this will not affect the user in Russia in any way, because for advanced users there are no problems with which version of the program to work with, and even any user will have no doubts about this issue if they read it in English. Here the question concerns the ideality of the product. ))) |
@SoftFever @ianalexis There are some minor unresolved issues.
So far, this is just code with an inaccurate description in the UI for those functions. I am not a native English speaker, and I may have given them incorrectly. Need to give them a more accurate description. Also ask me for the basis for the wiki. It would be better if you were given to me a template with theses that need to be filled with the material. Please, read the first post of the topic #10314 |
src/slic3r/GUI/Tab.cpp
Outdated
optgroup->append_single_option_line("fuzzy_skin", "others_settings_special_mode#fuzzy-skin"); | ||
optgroup->append_single_option_line("fuzzy_skin_mode", "others_settings_special_mode#fuzzy-skin-generator-mode"); | ||
optgroup->append_single_option_line("fuzzy_skin_noise_type", "others_settings_special_mode#fuzzy-skin-mode"); | ||
optgroup->append_single_option_line("fuzzy_skin_point_distance", "others_settings_special_mode#point-distance"); | ||
optgroup->append_single_option_line("fuzzy_skin_thickness", "others_settings_special_mode#skin-thickness"); | ||
optgroup->append_single_option_line("fuzzy_skin_scale", "others_settings_special_mode#skin-feature-size"); | ||
optgroup->append_single_option_line("fuzzy_skin_octaves", "others_settings_special_mode#skin-noise-octaves"); | ||
optgroup->append_single_option_line("fuzzy_skin_persistence", "others_settings_special_mode#skin-noise-persistence"); | ||
optgroup->append_single_option_line("fuzzy_skin_first_layer", "others_settings_special_mode#apply-fuzzy-skin-to-first-layer"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You have to revert this changes, it's fine as it is now.
I think you still have the change from some other old modification.
About the error that "Validate Documentation" is giving to you.
optgroup->append_single_option_line("patchwork_tiles_alternate_direction");
optgroup->append_single_option_line("patchwork_tiles_alternate_direction", "strength_settings_top_bottom_shells");
|
+ step settings into patchwork parameters + check determination for top_infill in precision surfaces + correct determination patchwork surface
…ithub.com/pi-squared-studio/OrcaSlicer into Aesthetic-top-and-bottom-surface-patterns
`α%` - that is coorect description `α:β`, `ℍ:ℕ` - new instructions and its description
Description
Several aesthetic improvements for the top and bottom surfaces. Generally, they are designed for center-based Archimedes Chords and Octagram Spiral patterns. For other patterns, the action needs to be checked or resolved in algorithms.
Anisotropic surfaces
Sometimes it turns out that the direction of infill changes the aesthetic appearance of the surface. This is clearly noticeable if you use multicolor or silk plastics. This option disables drawing surfaces in different directions, so they look noticeably better. At the same time, the printing speed is loosing.

Some notes to ensure the cleanliness of the top surface:
Center of surface patterns
You can choose one of the 3 options for centering the axial pattern:
If the model has one body but several surfaces, then you can set both separate centering for each surface and set a global center for the whole model. The same parameter is available for assembly if the composition consists of several unrelated models.
Precision surfaces
This mod sets the precision overlay of patterns on the top and bottom surfaces, and partially fills the pores when using Fuzzy Skin. Both works with Classic wall generator mode and also with Arachne.
Patchwork surfaces
What are the options in this add-on:
The angle of inclination of the masonry itself and the metalanguage element for setting the absolute/relative value of the tilt of the tiles. A value of '+0' or '360' causes a random tilt.
height and width of the tile - and so everything is clear
Vertical and horizontal joints:
When the Patchwork surfaces option is enabled, this parameter will work like this:
Examples:
Also solved problems
an add-on that can extend the wipe path beyond the contour when entering a negative value in wipe_distance. It is very useful for the purity of the upper surface pattern.
remove some bugs
add fractional numbering in the infill rotation templates (that always decrypted in wiki)