Skip to content
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

Seam: use scarf joint to minimize seam visiblity #3839

Merged
merged 54 commits into from
Mar 2, 2024

Conversation

Noisyfox
Copy link
Collaborator

@Noisyfox Noisyfox commented Jan 26, 2024

Implements #3211 by @vgdh directly in the slicer.
And similar idea from prusa3d/PrusaSlicer#11621 by @MichaelJLew

Todos:

  • Fix the bug that the sloped seam will confuse the gcode preview to display incorrect layer numbers.

@Noisyfox
Copy link
Collaborator Author

Noisyfox commented Jan 26, 2024

I'll post a few comparasions later. Meanwhile, feel free to test for yourself once the CI build is completed: slop_test.zip

@superfloh247
Copy link

oh wow, the result is truly amazing!
seam nearly invisible or really invisible

@FuryriderX
Copy link

Alright this is really interesting. To get it to work properly (I think?) I had to make some extra changes - disabling wipe on loops and external loops, and also set the seam gap to 0. Left the slope settings default.

Settings in image - (printed in PETG, so its stupid hard to take a proper pic its so shiny)

Top - enable sloped seam, disable wipe on loops, disable wipe on external loops, seam gap 0
Middle - enable sloped seam, wipe on loops enabled, wipe on external loops enabled, seam gap 2%
Bottom - normal seams, wipes enabled, seam gap 2%

20240126_182956

Love to see innovation like this and the flow compensation stuff.

@discip
Copy link
Contributor

discip commented Jan 27, 2024

@Noisyfox

  1. It would be great if we could get some pointers in the tooltip about what needs to be disabled or changed for this to work optimally.
    Like you did here:
    There is a way to completely eliminate the visible seam. #3211 (comment),

    or @FuryriderX above.

  2. I'm not absolutely sure, but it seems that this idea was first published by @MichaelJLew here.

thanks in advance
kind regards

@MichaelJLew
Copy link

The tooltip should say that the perimeter to be optimised needs to be printed first. Usually that would be the external perimeter, but something else where the bore of a tube is to be optimised.

I think that the user should be given a choice of how long the scarf should be, with an entire perimeter being the longer extreme.

(2. Yes, I think my scarf seam suggestion was first, but vgdh's seems to have come up with the idea independently.)

@Noisyfox
Copy link
Collaborator Author

I think that the user should be given a choice of how long the scarf should be, with an entire perimeter being the longer extreme.

There is a "Slope length" option that do this, but slightly differently. Currently it applys the slope on perimeters that longer than this value, and do the normal seam otherwise. I think I'll update that so it uses the perimeter length as the limit instead as you described.

(2. Yes, I think my scarf seam suggestion was first, but vgdh's seems to have come up with the idea independently.)

I agree that you posted this idea on PS' github first, though here is the thing, I didn't know that until someone raised #3408, and at that time I've already played around with #3211 for a while, including that post-process script, that's why I called this feature "sloped seam". I hope you understand that I didn't mean to intentionally ignore your contributions. And thanks for what you've done to the community!

@MichaelJLew
Copy link

I never thought that anyone was intentionally ignoring my post, and don't really care much, as long as the feature is available.

Nonetheless, I do think that 'scarf seam' is a better name than 'sloped seam' for two reasons. First, scarf seams are well known to the large woodworking community and that name does not require a neologism. Second, 'sloped seam' would apply equally well to a sloping (i.e. non-vertical) arrangement of conventional end to end seams on a part. Users of the slicer will need to learn that 'sloped seam' refers to a particular usage of a common word, which is a less simple task than using a standard technical term, even where that term might be new to the user.

@SoftFever
Copy link
Owner

Look how wonderful things are brewing up in this community!

Call for more testing results/photos so that @Noisyfox can refine the parameters further! 👍

@Noisyfox
Copy link
Collaborator Author

Nonetheless, I do think that 'scarf seam' is a better name than 'sloped seam' for two reasons. First, scarf seams are well known to the large woodworking community and that name does not require a neologism. Second, 'sloped seam' would apply equally well to a sloping (i.e. non-vertical) arrangement of conventional end to end seams on a part. Users of the slicer will need to learn that 'sloped seam' refers to a particular usage of a common word, which is a less simple task than using a standard technical term, even where that term might be new to the user.

I see. I just googled it and seems it's called scarf joint (because when I googled "scarf seam" I literally got a whole page of scarf)? Maybe let's call this option scarf joint then?

@MichaelJLew
Copy link

Scarf joint seam works for me.

@Noisyfox Noisyfox changed the title Seam: sloped seam Seam: use scarf joint to minimize seam visiblity Jan 27, 2024
@Noisyfox Noisyfox added the enhancement New feature or request label Jan 27, 2024
@Noisyfox
Copy link
Collaborator Author

Noisyfox commented Jan 27, 2024

Just to clearify, seam gap should not matter when this is enabled, as I've already disabled the seam gap for external perimeter when scarf is used. If seam gap does make a difference in your test, then that's a bug and needs to be fixed.

@FuryriderX
Copy link

Just to clearify, seam gap should not matter when this is enabled, as I've already disabled the seam gap for external perimeter when scarf is used. If seam gap does make a difference in your test, then that's a bug and needs to be fixed.

I realized after looking carefully at the sliced preview and changing the setting back and forth that that is the case. It is working as you intended. I'm just running a few more test circles to see what effect some of the other settings actually have on the print. I changed everything all at once to in the first test, not very scientific.

@Noisyfox
Copy link
Collaborator Author

Noisyfox commented Jan 27, 2024

d9bad86369599d4cba414ddbadb80353
33a9b350b48398a4ffdd1148f0800ea8

It doesn't work as well for overhangs, though I think it's still a lot better.

@JJRPF
Copy link

JJRPF commented Mar 2, 2024

hi! I am trying this out after seeing the teaching tech video about it. when I try to use it on build #1018, like on the video, I see this error when opening, after opening the file from the Artifacts area on that build.

Try to use the latest 1033 build https://github.com/SoftFever/OrcaSlicer/actions/runs/8096108803?pr=3839

I got it to work with the command xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app

I am going to use the newest one though.

@SoftFever SoftFever added this to the 2.0.0 milestone Mar 2, 2024
@SoftFever
Copy link
Owner

Huge thanks to @Noisyfox for the fantastic work
We're lucky to have you!

A big shoutout to @vgdh and @MichaelJLew for coming up with this brilliant idea and the early-stage prototype. And, of course, a heartfelt thank you to everyone who participated in the testing and discussion, with a special mention to @psiberfunk for those incredible scientific experiments.

This PR has been merged. The feature will be available in the nightly build as soon as the CI/CD pipeline completes the build.

Cheers to all!

@SoftFever SoftFever merged commit 924a2b4 into SoftFever:main Mar 2, 2024
12 checks passed
@psiberfunk
Copy link

I’ll update the printables post later today so people get less confused

@SoftFever
Copy link
Owner

SoftFever commented Mar 3, 2024

@psiberfunk I remember you encountered this issue too.
It's hard to dig this long thread, do you remember or figured out what caused this issue in the photo?
For me, changing wall seq from inner-outer to sandwich mode solved this problem. I just want to double check
image

@igiannakas
Copy link
Contributor

I think the solution was wider wall widths but I may remember wrongly - theory is you’ve got more flow to play with while tapering

@SoftFever
Copy link
Owner

I think the solution was wider wall widths but I may remember wrongly - theory is you’ve got more flow to play with while tapering

Yeah, makes sense.
Let me give it a try

@psiberfunk
Copy link

It’s a complex interplay of many factors @SoftFever . Are you using the optimized settings from my printables posting ? If not, start there !

@Gwaboo
Copy link

Gwaboo commented Mar 3, 2024

@psiberfunk, I'm guessing you are the guy behind the Pintables post and the excel sheet v2 right ? I made a multi material print that clips together (https://thangs.com/designer/BigBricks/post/Stormtrooper%20%2ANEW%20RELEASE%2A-819) but I ran into issuers where the seams stick out a good millimetre and is not following the geometry of the model, but just goes strait up. Also how do I read the settings from the 3mf file you provided ?, bcs. I can see the start and end of my seams pretty well, but it has to be my fault I'm pretty sure bcs. i dont know how to read you settings or if i have to print the file and see what works best for me...

  1. seams sticking out
  2. seams visible
  3. how to read / configure settings

(to make it short and easy to answer)

@Gwaboo
Copy link

Gwaboo commented Mar 3, 2024

@SoftFever sorry but I don't see the files I have to download

@Bidulglloq
Copy link

IMG_3037
Top : best seam I can get with regular seam
Bottom : Scarf Joint Seam (parameters below, Voron 2.4)
SNAP 2024 03 03 18;11;50 Document1
I specially wanted the wall print order to be Inner/Outer for best overhangs, and pretty satisfied with the results ;)

@MNisker
Copy link

MNisker commented Mar 3, 2024

Skærmbillede 2024-03-03 201033
Skærmbillede 2024-03-03 201056

Ok, so first comment on github, please let me know if I did something wrong :-)
Pictures show same object, round cylinder, samme settings, but cylinder rotated 45°
Rotating the cylinder more around shows quite a difference in number of seam-dots
Am I missing somthing here, it's round after all, shouldn't it be the same?
(object is primitive--cylinder with no infill or top layers.

@psiberfunk
Copy link

psiberfunk commented Mar 3, 2024

Skærmbillede 2024-03-03 201033 Skærmbillede 2024-03-03 201056

Ok, so first comment on github, please let me know if I did something wrong :-) Pictures show same object, round cylinder, samme settings, but cylinder rotated 45° Rotating the cylinder more around shows quite a difference in number of seam-dots Am I missing somthing here, it's round after all, shouldn't it be the same? (object is primitive--cylinder with no infill or

Yes it should all be the same , something maybe not right with seam alignment settings ..? Try painting the seam and see what it does

ideally this type of troubleshooting and comments would be done on the printables site , as its optimization and usage related rather than feature related : https://www.printables.com/model/783313-better-seams-an-orca-slicer-guide-to-using-scarf-s/comments

Since this Pull request has been merged, this thread should probably be closed @Noisyfox @SoftFever . I’m happy to try and support people over on printables . Can we close/lock the thread here so it doesn’t become a black hole ? Unfortunately the comment history feature in GitHub is not a great place to discuss this type of thing because it’s very difficult to search, and we will keep getting off topic with respect to R&D vs support requests .

@5axes
Copy link

5axes commented Mar 3, 2024

New thread on this topic could be : #4317 with the new option Conditional Scraf Joint ?

@psiberfunk
Copy link

New thread on this topic could be : #4317 with the new option Conditional Scraf Joint ?

That’s probably the right place to discuss logic and testing and R&D, but probably not a great forum for support /help discussions .

@tsmith35
Copy link
Contributor

tsmith35 commented Mar 3, 2024

New thread on this topic could be : #4317 with the new option Conditional Scraf Joint ?

That’s probably the right place to discuss logic and testing and R&D, but probably not a great forum for support /help discussions.

I added a discussion for scarf joint seams in General: Scarf joint seams

@pvginkel

This comment was marked as off-topic.

@psiberfunk
Copy link

I got really good results using PLA+ on my Ender-3 V3 KE, but with PETG it comes out like this:

image

I've enabled Contour and hole, and I've checked Scartf joint for inner walls. I forgot to change the infill setting, so it's printing infill:

image

Is it caused by the infill setting, or is there a different reason I get this result?

Same print on same printer with PLA+:

image

Any idea what to do about this?

You’ll need to experiment with tuning. See the printables post for tips

@vgdh
Copy link
Contributor

vgdh commented Mar 13, 2024

I got really good results using PLA+ on my Ender-3 V3 KE, but with PETG it comes out like this:

Try to use 0.1 start height.

@Peterortiz94
Copy link

Hmm, I'll have to try a bit tomorrow with the spheres, I was concentrating just on the cylinders.

As far as the more thorough test - leaving staggered inner seams and wipe on loops enabled does not change the end result. Having 'wipe before external loop' enabled makes it look significantly worse, I would definitely recommend to disable it. And setting the seams to 'random' is a disaster, blobs and strings galore.

I'll try fooling with the rest of the settings a bit more maybe over the weekend. Awesome work!

The whole print in less than a second? I know that the Fflsun v400 was promoted as being fast, but that' incredible!
Seriously, I don't know what you mean, and I can't really see much in the photo. Do you mean to show that in then out works as well as out then in, or something else? What do the times refer to?
image
image
image

speed of the outer layer at 120ms instead of 50ms and if I don't see a difference at least in this piece using from inside to outside as always, and the speed the only thing that was lost is the brightness the rest is the same, I don't know the same with pieces more specific, more tests can be done

Hola amigo, como conseguiste la versiòn en Español? no la encuentrro, Gracias!!!

@kitkat0981
Copy link

not sure what im doing wrong here, but I tried build 3839 and have my settings as shown. There is no difference between 2 parts printed with version 1.9.1 (no scarf option ) and beta 2 3839 settings as picture. What am i missing here?
1111
1112

@Finnitio
Copy link

PXL_20240816_052633326

So i tried the scarf seam. I am not sure I prefere it or not. It certainly is not as visible from a greater distance but there seams to be some over and underextrusion. I did think it coult be pressure advance, but to be honest I did some pa calibrations tests and refined it a bit but not much. Any suggestions how to work aroung these inconsistencies?

@KoksaSa
Copy link

KoksaSa commented Dec 6, 2024

Dose it work in Bambu?

wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request Feb 17, 2025
Also add patches to fix compatibility isues with cgal 6.0.x.

PrusaSlicer 2.9.0

Bugs fixed with respect to 2.9.0-rc1
- Fixed a crash in a specific case when slicing multimaterial-painted
  objects (#13676, #13798).
- Fixed a crash when slicing multimaterial-painted objects on a printer with
  less extruders than painted.
- Fixed highlighting of the active bed in case that the bed has a big custom
  model which would overlap neighboring beds (mentioned in #13791).

PrusaSlicer 2.9.0-rc1

Bugs fixed with respect to 2.9.0-beta1
- Windows specific: Export G-code button in the right panel was flickering on
  mouse move.
- The Slice Now button did not update after loading an object from the shape
  gallery (#13777).
- Fixed undefined behavior when sending G-code to print host. The issue only
  manifested on macOS with address sanitizer (#13766, #13759, #13750).
- A tenth bed was offered to the user after loading the project already
  containing maximum number of beds (a visual glitch, it was not possible to
  actually use the bed).
- Fixed empty thumbnail after adding a custom object into the shape gallery
  (bug introduced in 2.9.0-alpha1).
- Fixed freeze after a communication with Prusa Account returned a specific
  error code. This bug was uncovered by a problem on the server side couple of
  days ago which affected many PrusaSlicer users (#13768, #13762, #13765,
  #13762, #13745, #13757, #13758, #13748). Extra countermeasures were applied
  on both sides and they should prevent this from happening again.
- Fixed incomplete update when switching from FDM mode to SLA: out-of-bed
  status of volumes and thumbnails in bed selector were not updated correctly.
- Fixed a crash during slicing introduced between 2.9.0-alpha1 and 2.9.0-beta1.
- Fixed a crash when switching application language while using the bulk
  slicing screen.
- macOS specific: Loading screen displayed when web content is being loaded
  did not show.
Localization
- Updated POT.
- Updated CS, PL, DE, IT, ES, FR, JA dictionaries.
- Updated RU dictionary (#13438, thanks to @AndylgTom and Dmitry Sorkin).

PrusaSlicer 2.9.0-beta1

This is the first beta release of PrusaSlicer 2.9.0. This release introduces
more improvement related to multiple beds, several other improvements and
couple of bugfixes.

To let you enjoy the beta without worries, the beta builds save their profiles
into PrusaSlicer-beta directory, so you may use the beta side by side with the
current release without ruining your production configuration.

Important note for Linux users: As noted during 2.8.x releases, we are now
using Flathub as the only official distribution channel of PrusaSlicer on
Linux. The reasons behind this decision and what it means for you are
described at the end of 2.9.0-alpha1 release log.

Multiple beds - bulk slicing and export
It is now possible to schedule slicing of all prepared beds without switching
them manually. The bed selector dialog in Preview now has an extra button.
Pushing it activates a "bulk slicing" mode, and PrusaSlicer will start slicing
all the beds one by one. When it is finished, a combined print statistics is
shown.

It is also possible to export all the sliced beds using the usual button in the
right panel. It now opens an "Open folder" dialog, and after a folder is
selected, an extra dialog appears where it is possible to change names of the
individual files. One can also uncheck one or more of the beds to not export
them. The same dialog opens when sending multiple G-codes to Connect.

Support for printing with different nozzle diameters
Experimental support for printing with different nozzle diameters on multi-tool
printers, such as the Original Prusa XL, is now available for experienced users
and developers. This workflow allows combining nozzles of different diameters
(e.g., for fine perimeters and fast infill) but requires a few profile
adjustments.

Key changes:
- Automatic extrusion width calculation can be easily enabled (Print Settings ->
  Advanced -> Automatic extrusion widths calculation), adjusting based on nozzle
  diameter.
- Automatic infill combining (Print Settings -> Infill -> Automatic infill
  combination) helps optimize printing when using larger nozzles for infill.
  This feature, inspired by OrcaSlicer, simplifies setup. Thanks to OrcaSlicer
  for the idea!
- It is now possible to use the wipe tower and supports with multiple nozzles of
  different size.

Important Notes:
- Some nozzle combinations may not be compatible. Be cautious as these setups
  could lead to failed prints.
- For detailed step-by-step instructions and limitations refer to our help.
Closes #13159, #13587.

Other improvements with respect to 2.9.0-alpha1
- When using slicer from command-line interface and slicing a 3MF, the thumbnail
  in the 3MF is used for G-codes. Because thumbnail generator relies on OpenGL,
  PrusaSlicer cannot easily generate its own thumbnail. #7878
- When multiple beds are used, each is now labeled with a number. The number
  also appears in the Bed selector dialog in Preview, along with a status icon
  informing about current situation of the bed (not sliced / slicing in
  progress / slicing finished).
- Autocenter feature was removed. The feature was a candidate for removal for
  many years, because it caused more confusion than good.
- Extruder stall detection is disabled for XL before ramming.
- Bugs fixed with respect to 2.9.0-alpha1
- Loading binary G-codes into standalone G-code Viewer was extremely slow.
- Fixed issues with 'avoid crossing perimeters' feature (#13445, #13478, #12432,
  #13669).
- Fixed incorrect display of volumetric flow rate in preview when "Use relative
  distances" was switched off (#13623).
- Fixed never-ending loading cursor on Linux when loading webpage in WebView
  panels.
- Fixed arrange not arranging to front on XL (#13650).
- Fixed wipe tower not auto-disabling on single filament print on MM printer
  (#13649).
- Fixed export of M73 C lines to G-code to fix displaying remaining time to
  color change. This was partially fixed in 2.9.0-alpha1 already, but not in
  all cases. #4734, #12849
- Fixed couple of camera glitches.
- Fixed missing updates of shells in preview after moving object using the right
  panel.
- Fixed incorrect placement of objects after cut (they would end up on an
  unexpected bed). #13637
- Stopped displaying warning dialog with "Error running JavaScript" phrase
  (#12950).
- Fix objects incorrectly rearranging after saving and reloading a 3mf in
  2.9.1-alpha1 (#13651).
- Custom G-codes and ColorChanges did not load from project when multiple beds
  were used (#13651).
- Object names emitted into G-code for Cancel Object G-codes are now trimmed.
  Very long names were causing issues when sending the G-code using OctoPrint
  (#13314).
- Changed reading of keyboard shortcuts in WebView on MacOS. Current
  implementation of wxWidgets's WebView has completely different approach to
  keyboard shortcuts. On Widows, all kind of WebView shortcuts are read and
  implemented while no "PrusaSlicer shortcuts" are read. On Linux it is opposite
  situation - only "PrusaSlicer shortcuts" are read inside WebView. It is not
  the best, but behavior on Windows and Linux is acceptable. While on Mac no
  shortcuts are read at all. So far we have added reading and handling of
  cmd + Q, cmd + M and cmd + R. In future we would like to unify shortcut
  reading on all platforms.
- Menu button "Reload from disk" and "Reload WebView Content" now correctly
  share "F5" shortcut. Reload from disk shortcut was not working in last
  release (#13693).
- Fix of clipping logic for clipping arcs with negative radius. (#13678).
- Fix splitting to object moving some of the just split object parts to a
  different bed (#13661).
- Fix of search bar losing focus while typing (#13691, thanks to @themanyone).
- Fixed slow generation of cancel object polygons by performing union operation
  of polygons incrementally.
- Prevent empty slicing notification when switching beds.
- Height range painting tool now always use world coordinates and thus works
  correctly with rotated objects (13631).
- During startup, non-flatpak desktop files of older PrusaSlicer versions are
  silently searched for and deleted. This is necessary for correct opening of
  our custom URL (used for login and model opening from Printables).
  Unfortunately searching for desktop files has troubles to search all possible
  paths due flatpak changing XDG_DATA_HOME and XDG_DATA_DIRS which stores
  potential paths for desktop file creation. Thus some old desktop files might
  remain in the system. In such case, it is possible to delete those inside the
  old version with Configuration -> Desktop Integration -> Undo.
- Fix of uninitialized ExtrusionLine when Fuzzy skin was applied on Arachne
  extrusions to fix combining Fuzzy Skin and Seam Painting (#13614).
- Fixed incorrect seam placement with painted fuzzy skin (#13640, #13614).
- Fixed negative seam gap values causing invalid extrusion generation (#13678).
- Fix missing update of preview when switching beds in 3D scene.
- Fix empty layers when multi-material painting and modifiers are used (#13645).
- Fix of ignored assigned extruders to modifiers when multi-material painting
  is used (#13645).
Infrastructure
- Fix CMake bugs leading to build errors on Gentoo and possibly other linux
  distributions (PR #13609 by @jmickelin building upon PR #13080 by @Rose-

PrusaSlicer 2.9.0-alpha1

This is the first alpha release of PrusaSlicer 2.9.0. This release introduces
support for multiple beds, Printables integration, scarf seams, better fuzzy
skin and other improvements and bugfixes.

To let you enjoy the alpha without worries, the alpha builds save their profiles
into PrusaSlicer-alpha directory, so you may use the alpha side by side with the
current release without ruining your production configuration.

Important note for Linux users: As noted during 2.8.x releases, we are now using
Flathub as the only official distribution channel of PrusaSlicer on Linux. The
reasons behind this decision and what it means for you are described at the end
of this release log. Thanks for your understanding

Multiple beds (#10704)
It is now possible to work with multiple beds in the scene. This allows the user
to handle more complicated projects (which do not fit a single bed) more easily
than before. This feature is already known to BambuStudio users (the
implementation in PrusaSlicer is completely independent).

Beds handling
To make the workflow fluid and not intrusive to users using only a single bed,
there are no buttons to add or remove beds. A new bed is offered anytime you are
dragging an object outside of bed for more than 1 second (unless the object is
dragged to the new bed position faster, in which case it shows up immediately).
This allows to create a bed and place an object on it in a single operation. The
beds are placed in a compact grid pattern, with a hard limit of 9 beds. One bed
is always set as active, which is controlled by left-clicking it. Operations
such as "Import STL" and similar are processed on the active bed. The individual
beds can be thought of as almost independent projects, each having its own set
of color changes, its own wipe tower and so on. Currently the only limitation is
that all the beds must use the same configuration (i.e. you cannot have an MK4
bed next to a MINI).

Arrange
The Arrange button in the top toolbar was duplicated. The arrange function can
either do the global arrange (as it always could) or arrange only objects on the
active bed (which includes objects partially on it). The settings dialog shown
when right-clicking the button is common to both.

Compatibility with older PrusaSlicer
To keep the number of changes to our 3MF project files as small as possible,
the positions of the beds are not explicitly saved, but they are instead
inferred from positions of the objects. The new project files can therefore be
loaded into older versions of PrusaSlicer (they obviously do not show the extra
beds, though). As for loading older PrusaSlicer projects. PrusaSlicer actually
had minimal concept of virtual beds for many years, which is obvious from
Arrange function. When there were too many objects to place on a single bed,
PrusaSlicer would keep adding them spaced as if there were other beds next to
each other. If you load such a project into PrusaSlicer 2.9.0, this situation
is detected and the objects on these virtual "beds" are moved so they actually
end up on a non-virtual bed in the grid.

Preview
When switching to Preview, a bed selector toolbar is shown in the top-right
corner, which was the last remaining space where nothing was placed yet. We were
considering a bigger reorganization of the Preview scene, but in the end we
decided to purposefully leave the controls where they were so we do not break
what people are used to. We are planning to do a general overhaul in future,
so it makes sense to us to postpone the big changes to do them in one go.
Switching the beds in Preview moves the camera so the bed switched to is in the
same position as the one switched from. The 'Sliced Info' statistics and
'Export G-code' button in the right panel are related to currently active bed.

What is in the works
It is currently not possible to slice all the beds in one step. This will be
added before the 2.9.0 final. We only released the alpha a bit early to start
collecting feedback.

Printables integration (#13207)
Printables.com has been fully integrated into the PrusaSlicer ecosystem,
complementing the earlier integration of Prusa Connect in version 2.8.0.
Printables is now a persistent tab in the top bar, available to all users
regardless of login status. While anonymous users can browse and download
models, logged-in users gain access to additional features such as managing
collections, viewing liked and downloaded models, and sending G-code directly
to Prusa Connect.

On model pages, three key functions - Slice, Download and Print - interact
seamlessly with PrusaSlicer. The Slice button, identifiable by the PrusaSlicer
logo, mirrors the functionality of the browser version. Clicking it redirects
the user to the Plater tab, where the download starts automatically. The
destination directory for downloads can be set in Configuration ->
Preferences -> Others. The download notification now includes a link back to
the model page on Printables. Once the download is complete, the data is
added to the Plater using the same logic as the drag-and-drop mechanism.

The Download button provides similar functionality with two key differences.
First, the user remains on the Printables tab, with a simple notification
confirming the download in the bottom-right corner. As with Slice, a detailed
notification is available in the Plater tab, including a button to open the
destination directory. Second, the downloaded file is not opened or added to
the Plater.

The Print button is exclusively for logged-in users and enables direct printing
of G-code files. A background check between Printables and Prusa Connect
ensures printer model compatibility. If a suitable printer is detected, users
can start printing directly from Printables without needing to slice or
download the model. A printer selection dialog, similar to the upload dialog in
PrusaSlicer, is displayed to complete the process.

Printables is implemented as a webpage within a WebView, allowing its content
and functionality to improve independently of PrusaSlicer releases.

Scarf seams (#11621)
A feature dubbed "scarf seams" by the community is introduced. The main purpose
of this feature is hiding visible seams on smooth perimeters. It is achieved by
overlapping extrusions at the start and end of a perimeter loop. The name of
the feature originates from a similar technique in woodworking called "scarf
joint". It is possible to turn on scarf seams for both inner and outer
perimeters and to turn it off for holes in a print (e.g. a hole for a screw).
Also, by default, when scarf seams are turned on, it only generates the scarfs
if the perimeter is considered smooth. This can be turned off. Currently, the
scarf seams are best visualized using the "Actual volumetric flow rate" option
in the preview legend. This way it is clearly visible where the scarf joint
begins and ends.

In the image above there is a cylinder printed with both a normal seam and
scarf seam. Number one is the scarf seam start, number two is the scarf seam
end and number three is a normal seam. The scarf seam greatly reduces the
visibility of the usual seam. Yet, it is not a silver bullet as it may
generates a new "ghost" seam, albeit way less visible than the original seam.

Settings related to scarf seams are located under Print Settings -> Layers
and Perimeters -> Advanced.

It is important to note that scarf seams are not our original idea. As far as
we know the original idea came from @MichaelJLew in #11621 and simultaneously
from @vgdh in SoftFever/OrcaSlicer#3211. The feature was then implemented by
@Noisyfox to OrcaSlicer in SoftFever/OrcaSlicer#3839. Even though our
implementation is original (because of our specific code base needs), for the
most part the functionality mimics the available functionality in OrcaSlicer.
We would like to express our gratitude to the many people that got directly or
indirectly involved with the development of this feature, with a special thank
you to @Noisyfox who did a lot of the heavy lifting required to implement it in
OrcaSlicer.

Fuzzy skin improvements
Since fuzzy skin was integrated into PrusaSlicer, it was always applied to the
whole perimeter. This behavior had drawbacks, such as when fuzzy skin was
applied to the modifier, objects were split into several regions, and each
region had its own perimeters that divided the layer into several parts (#6881,
@Noisyfox, which was the base for our implementation.

We incorporated several other fuzzy skin improvements (like poor randomness)
into PrusaSlicer, which were developed by the OrcaSlicer community. Thanks to
@Noisyfox, @SoftFever, @SeaRyanC, and @andrewboktor for improvements of the
fuzzy skin.

We believe that the above mentioned improvements will lead to fuzzy skin being
more used together with modifiers. To make it more convenient to use, we also
introduced the fuzzy skin painting tool. The fuzzy skin painting is similar to
the multi-material tool and the support painting tool, so now fuzzy skin can be
easily painted where it is needed without playing with modifiers (#6988). The
tool is available from the left toolbar.

Improvements in painting tools and multimaterial segmentation
- Smart fill and bucket fill automatically paint tiny triangles around selected
  areas. Such triangles often exceeded the angle limit and were left unpainted,
  negatively affecting multi-material segmentation.
- Added the slider to specify the maximum angle between triangles that the
  bucket fill will select.
- Added height range painting tool into multi-material painting tool for
  painting objects between two horizontal lines. We were inspired by this tool
  in BambuStudio but implemented it from scratch to ensure that it works
  smoothly on detailed models.
- Sped up painting using the single triangle brush, which was especially slow on
  detailed models.
- Fixed unintended short sliders in the support painting gizmo.
- The projection of painted models onto slices in multi-material segmentation
  has been improved. We fixed various types of artifacts and made the
  projection more precise. This means the sliced models will now better match
  how they were painted (#8745, #12616).
- Improved multi-material segmentation for painted volume objects. Previously,
  multi-material segmentation was used just for painted volumes, and handling
  of the default extruder was done later during the slicing process, which was
  unpredictable and confusing for users. Because it could happen that in the
  place where two volumes were touching, there could be a change in the used
  extruder. Since this PrusaSlicer version, when at least one volume is
  multi-material painted, the whole multi-volume object is processed by
  multi-material segmentation, and the handling of the default extruder is left
  on multi-material segmentation.

Other improvements with respect to 2.8.1
- Reduced splitting of extrusions when the pressure equalizer is enabled.
  Extrusions were split into too many even when the feedrate barely changed.
- Avoid emitting Z-axis coordinates for every g-code command when the pressure
  equalizer is enabled. Z-axis coordinates are now emitted only when Z-axis
  coordinates actually change.
- We reconsidered the decision to remove the "Ensure vertical shell thickness"
  option. We bring back this parameter by combining PR by @vovodroid (#11950)
  and implementation in OrcaSlicer by @SoftFever. Now, there are three options
  for "Ensure vertical shell thickness": Enabled, Partial, and Disabled. Partial
  is similar to behavior when "Ensure vertical shell thickness" is unchecked in
  the older PrusaSlicer versions. Disabled produces additional extrusion only to
  support top layers (#223, #1054, #6853, #9898, #10102, #10191, #10202, #10827,
  #10926).
- Added hypertext link that opens the printer dashboard into the notification
  about sending files into Connect.
- It is now possible to start PrusaSlicer GUI from the command line with
  specified printer, print, and material profiles using the following arguments:
  --print-profile, --printer-profile and --material-profile (#13327). Until now,
  the arguments could only be used in the headless mode.
- Several performance improvements of ConfigWizard together with improvements of
  ConfigWizard UI.
- Remove export to the AMF file format from CLI. Export into the AMF file format
  was previously removed from GUI in PrusaSlicer 2.4.0.
- Behavior of WebView tabs is changed. Until user clicks and opens the tab,
  WebView is not created. This is particularly effective on Windows, where
  WebView spawns several processes for each tab. This applies for Connect,
  Physical printer and the new Printables tabs. #13127
- 'Reload WebView' action was added. Accessible from the View menu, 'Reload
  WebView Content' button or F5 key reloads currently visible WebView.
  Unfortunately keyboard reading with WebView / WebKit libraries does not work
  reliably on all platforms and is subject of further improvements.
- Reload button is also present on error page displayed in WebView. This could
  be helpful e.g. when user forgets to turn on their physical printer before
  clicking the Physical printer tab.
- Upload to Connect dialog now has larger default size.

Bugs fixed with respect to 2.8.1
- Covered parts of top and bottom layers are now ignored during multi-material
  segmentation.
- Fixed overriding of multi-material painted top or bottom layer on low objects
  (#13252).
- Fixed painting on broken meshes (#13142).
- Fixed top layers incorrectly classified as a bridge. Thanks to @SoftFever.
- Added parameter for setting the gap between the start and the end of
  perimeter loops (#2503).
- Emboss tool was failing when attempting to load a file from path containing
  non-ASCII characters (#13123).
- Fixed Gtk-CRITICAL ** errors filling up logs (#4935, #13092, thanks to
  @themanyone).
- Fixed avoid crossing perimeters on layer change (#13445, #13478).
- Fix rear seam not aligned to rear sharp corner (#13518).
- Fix nearest seam would detect very tiny corners in geometry (#13072).
- Fix limiting of feedrate by z-travel speed (#13420).
- Fine tune seam placing algorithm - allow more flexibility when picking
  aligned seam points.
- Fixed warning dialog to correctly show multiple slicing warnings.
- Fixed export of M73 C lines to G-code to fix displaying remaining time to
  color change (prusa3d/Prusa-Firmware#4734).
- Fixed brush freeze when changing size using "Alt+mouse wheel" in the
  painting tools.
- Fixed a crash on Esc key when editing text in gizmos (#13458).
- Fixed a crash when infill density is changed to 100% (#13450).
- Fixed incompatible profiles with parentheses in name (#13554).
- Fixed reading of right Alt key in painting gizmos.
- Linux only: Fixed issues with WebView showing just a blank page (#12969
  #13046).
- Fixed drag & drop of several files at once including 3mfs and zip files.
- Improved Configuration Wizard to select SLA printer when multipart object is
  in on the bed.
- Fixed an internal issue potentially causing problems with path planning
  (although the problematic case was not identified). Thanks to @supermerill
  for spotting and fixing the issue (#13331).

Linux: Distribution through Flathub (#1124, #9776)
We have decided to move to Flatpak and use Flathub as the official means of
distributing our application on Linux. The Flathub package here is now
officially endorsed. You can follow the steps provided on the Flathub page.

Here is a quick guide on how to use flatpak from the terminal. This is
required to try out the alpha, beta and rc releases.

First, make sure you have flatpak installed and Flathub correctly set up.
You can follow the steps at https://flatpak.org/setup/.

If you want to try out the alpha (such as this one), beta and rc versions
you must add the flathub-beta repository (you only need to do this once):

flatpak remote-add --if-not-exists flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo

To install the latest version of PrusaSlicer:

flatpak install flathub com.prusa3d.PrusaSlicer      # for stable
flatpak install flathub-beta com.prusa3d.PrusaSlicer # for the unstable versions

To run PrusaSlicer from the terminal, you can do:

flatpak run com.prusa3d.PrusaSlicer       # for stable
flatpak run com.prusa3d.PrusaSlicer//beta # for the unstable versions

Note that you can run all the mentioned commands with the --user option if you
do not have the superuser privileges on your machine.

Please understand that publication of PrusaSlicer on Flathub has to be preceded
by the publication on our GitHub. This means that there will always be certain
delay (typically couple of hours) before the new release shows up on Flathub.
This is the expected behaviour, the extra time is needed to build the Flathub
binary.

Config migration
Config folder location on your machine for the new Flatpak version of
PrusaSlicer is different to the one used by the AppImage. PrusaSlicer will
automatically ask you if you want to migrate your old AppImage config to the
new location. If you prefer or are afraid of data loss, you can also do this
manually. The Help -> Show configuration folder utility in PrusaSlicer can aid
you with doing just that.

Special thanks
Special thanks belong to @xarbit and @eliadevito who were keeping PrusaSlicer
community flatpak up to date for the past several years. Their commitment
provided a great service to many users that used the flatpak version before
this release. Also, the work was an invaluable resource when migrating our
infrastructure to flatpak. Last but not least, shout-out to @xarbit who helped
us with the migration itself.

Reasons for moving to Flatpak
We understand that the decision may make some people angry and raise questions
about why we are leaving something that "just works" (the AppImage). Why did we
decide to leave AppImage in favor of Flatpak? There are multiple reasons. First
of all, AppImage is not designed to bundle "everything". There are still
assumptions about the target system that must hold for the AppImage to work. It
is up to the developer to decide what to bundle with the application, and doing
this decision requires to check and test on all the targeted Linux
distributions, which kind of kills the whole purpose. Also, some libraries may
be almost or completely impossible to bundle (such as glibc or webkit). The
AppImage itself requires certain version of libfuse to be present on the target
system, otherwise it does not start at all, and because some Linux
distributions have upgraded from libfuse2 to libfuse3, this brings another
problem into the equation. The need to use old glibc for compatibility reasons
forces us to build on older distros (not to mention that we would like to
provide both x64 and arm64 builds). To summarize this all, the amount of work
required to keep our build infrastructure running is consuming resources that
we would much rather spend on PrusaSlicer itself.

Flatpak is a tool that is already proven by time, and it solves the problem
that we need to solve - it bypasses the dependency hell created by the
existence of many Linux distributions and different versions of everything.
The main idea is that the application is built against a defined runtime,
which is then downloaded on the target computer and the application is run
against it. The biggest complain people have about Flatpak is that it downloads
too much data to run a single application (although a runtime is only
downloaded once for all applications that rely on it). However, Flatpak only
does what people assume the AppImage was doing - it bundles everything. This
is not Flatpak's fault, it is really the price paid for the Linux freedom,
which effectively makes every distribution is a separately maintained platform.

Flatpak also provides better user experience regarding desktop integration and
application updates, and it is able to control permissions that the
applications have through its sandboxing mechanism. Although this may not be
appealing to all Linux users, we believe that these points are valuable to most.

Thank you for your understanding.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Integrate Scarf Seams by MichaelPlatypus There is a way to completely eliminate the visible seam.