PrusaSlicer 2.9.0-alpha1
Pre-release
Summary
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, #9787, #10264, #13508). This behavior was recently improved in OrcaSlicer by @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
, andDisabled
.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.