PrusaSlicer 2.5.0-alpha2
Summary
This is the first public alpha release of PrusaSlicer 2.5.0 (alpha1 was not public), introducing new perimeter generator Arachne, improved seam placement based on visibility, pressure equalizer, lightning infill and several more improvements and bugfixes.
The new perimeter generator Arachne and the new lightning infill were ported from Cura. The Arachne perimeter generator was implemented based on the paper [Kuipers et al., 2020], while the lightning infill was implemented based on [Tricard et al., 2019]. Big thanks to Ultimaker for keeping Cura open source and big kudos to Cura development team led by @nallath, to @BagelOrb for his research and majority of the Arachne implementation and to @BagelOrb and @rburema for the lightning infill implementation.
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.
Arachne perimeter generator #5591
The 'classic' strategy for calculating perimeter extrusion paths is to offset contours of an object slice inwards by a constant extrusion width, one offset per perimeter. This was also the default algorithm in previous PrusaSlicer versions. However this simple algorithm does not handle thin regions well, as reported in these issues. Namely, thin regions cannot be filled with an integer number of fixed width extrusion lines. The classic way of handling narrow regions is to either not generate the innermost perimeter that does not quite fit, but to fill the remaining region with a gap fill algorithm, or to over-extrude the innermost perimeter. None of the two approaches are ideal: The gap fill may produce short segments of widely differing extrusion rates, while over-extruding may produce bulges on thin walls.
The developers of Cura recently implemented a new strategy named Arachne based on paper [Kuipers et al., 2020]. The Arachne generator produces perimeter loops and gap fills with varying extrusion width in such a way, that the slice area is filled without underflows and overflows with possibly continuous paths while respecting minimum / maximum extrusion width limits. The Arachne perimeter / gap fill generator really shines on objects with thin walls as thin boxes or labels.
In this PrusaSlicer version, we have ported the Arachne engine from Cura while keeping the old perimeter generator as an option. We made the Arachne perimeter generator default in our printer profiles. Thanks again to Ultimaker for developing Cura under open license.
The following picture demonstrates Arachne benefits on thin text: The classic perimeter generator fills text contours with many thin gap fill lines, while the Arachne perimeter generator widens the perimeter lines instead, producing cleaner prints quicker and with better surface quality.
However the Arachne perimeter generator has a tendency to round concave corners, as shown in the picture below. While the perimeter curves with circular segments at concave corners produced by Arachne are geometrically correct (they satisfy the constant offset distance requirement), they may not be optimal for FDM due to the tendency of extruded plastic to shrink into concave corners, thus the classic perimeter generator producing mitered offset curves with sharp corners may print more accurate concave corners. For most prints the Arachne perimeter generator is superior, but for some functional prints where the accuracy of concave corners is important the classic perimeter generator may be better.
Another case where the classic perimeter generator may be preferable are sharp corners. The classic perimeter generator with "detect thin walls" disabled trims the tips of sharp corners, but the print surface will likely be smooth due to constant extrusion width.
With "detect thin walls" enabled, the chopped off tip is filled with gap fill, which may not quite stick to the print.
Arachne generator produces connected lines with varying extrusion rate, where the extrusion rate variation will likely cause some visible artifacts on the outer surface of the print.
Lightning infill #7344
Infill serves dual purpose: To provide structural rigidity and to support top surfaces. In case the structural rigidity is not needed, a lot of material and printing time is saved with the new lightning infill, that is optimized to supports the top surfaces only. The lighting infill is based on paper [Tricard et al., 2019]. A branching structure is generated that gets progressively denser towards the top surfaces to support them reliably. Like the Arachne perimeter generator, we have ported the Lightning infill from Cura, thanks again for keeping Cura open source.
The following table compares the print time and filament consumption when printing the famous tree frog at 100% and 400% scale. The values for a 400% scale are enclosed in braces.
Infill type | Print time [min] | Filament total [g] | Filament Infill [g] | Filament saved on Infill |
---|---|---|---|---|
Gyroid 15% | 54 (1104) | 6.8 (204) | 1.5 (114) | 0% |
Support Cubic 15% | 51 (792) | 6.3 (152) | 1 (62) | 33% (46%) |
Lightning 15% | 55 (840) | 6.0 (111) | 0.6 (20) | 60% (82%) |
Pressure equalizer (EXPERIMENTAL)
FDM printer consists of a motion system and an extrusion system. While the motion system loves to accelerate and decelerate smoothly to reduce vibrations, the extruder loves to extrude at a constant rate for best extrusion consistency. Unfortunately the optimal conditions of the motion system and extruder are contradictory. Bowden style extruders are especially sensitive to pressure fluctuations, due to the slack in bowden tube they are not able to reproduce rapid changes in extrusion rate reliably.
With bowden style extruders, moving from internal perimeter printed at high speed to external perimeter printed at slower speed the extruder often produces a bulge at the start of the external perimeter due to an excess extruder pressure. Similarly when moving from external perimeter to infill the extruder produces gap at the start of infill because of the extruder pressure deficit. To lessen these artifacts caused by rapid extruder pressure fluctuations, we have implemented an experimental "Pressure equalizer" feature.
Before moving from faster internal perimeter to slower external perimeter, the pressure equalizer slows down gradually the end of the internal perimeter to reach the extrusion rate of the external perimeter. Similarly when moving from the external perimeter to infill, the start of the infill is slowed down to external perimeter speed and accelerated gradually. The volumetric rate fluctuations are configured at Print Settings->Speed->Pressure equalizer
, they are limited by the new Max volumetric slope negative and Max volumetric slope positive configuration values. Slowing down infill after perimeter may increase print times excessively, thus it could be suppressed by setting Max volumetric slope positive to zero.
The following two images show gradual slowdown when external perimeter is about to be printed and comparison of the result with and without the feature activated.
The right picture shows bulges on external perimeters due to excess extruder pressure on a bowden style printer, while the bulges are mitigated in left picture thanks to the pressure equalizer.
Visibility-based seam placement
Starting with this version, seam placement algorithm prefers regions which are not visible from the outside of the model at all or which are occluded from most directions. The new visibility algorithm is applied for seams set to Nearest or Aligned.
In addition, when paint-on seams are used and 'Aligned' is set, the resulting seam line attempts to find a sharp corner in the painted area and snap to it, leading to smoother lines along the sharp edge. Previous versions did not detect the sharp edge in this scenario #5857 #6086 #7180 #8014.
Also the new algorithm strives to produce possibly long and smooth seams on smooth surfaces, while the old algorithm often produced disconnected random bits on such surfaces #4416 #7180 #7759.
For multi-material or multi-part objects where a slice is split into multiple regions with each region having its own perimeter, the seams are newly hidden inside the object between the regions #5144 #6751.
Other improvements with respect to PrusaSlicer 2.4.2
- G-Code thumbnails can now be exported in JPG and QOI formats (until now, only PNG thumbnails were supported). This should make it possible to see the thumbnails on printers which do not support PNG thumbnails. Namely the Duet boards with RepRapFirmware are low on RAM to decode PNGs, but they happily consume QOI thumbnails. Thanks to @n8bot for initial implementation.
- SLA hollowing was optimized and it is now significantly faster. The actual speed-up depends on the model, but in general it is several times faster. The difference is especially noticeable on bigger models, where it can be 10x faster than before.
- SLA time estimate was improved and it is now more accurate for SL1S. In addition, "High viscosity tilt time" was added into Printer Settings so the time estimate is correct for printers supporting separate tilt time setting for high-viscosity SLA materials. #8421
- Concentric infill is newly properly filled by the new Arachne perimeter generator if Arachne is enabled. #577, #1461, #3104
Bugfixes with respect to PrusaSlicer 2.4.2
- OSX specific: It is now possible to send G-Codes to OctoPrint using self-signed certificates. The OSX system SSL library does not accept self signed certificate, however OpenSSL based libcurl library shipped with OSX does. See also the following Prusa3D forum thread and #5984
- Fixed a crash when using a selection rectangle with the cut gizmo open.
- Fixed a memory leak during slicing e0e34f6.
- Windows specific: Dialog asking to send system info shown at startup no longer pops up in case the internet connection is not available.
- Fixed a crash when using auto-rotation with some specific models #8319.
- When using arrange in sequential printing mode, it sometimes tightly violated desired extruder clearance #8335.
- Fixed flickering of colored rectangles in legend in the stand-alone G-Code Viewer.
- When using wipe tower with no sparse layers, the first layer might have ended up too thin and ruined the print #7090, #8358.
- OSX specific: Cmd+M shortcut should now minimize the application as expected, restoring the application using the "View All Windows" works. #6364, #8352
- When clicking the "Detach from system preset" button in Dependencies section of a profile, the button did not disappear. Also, detaching a printer profile from a system profile broke rendering of custom bed model for both the parent and child profile. Both issues are fixed now.
- Fixed a very rare issue which led to generating a G-Code with commas instead of decimal points (caused by incorrectly set locales on one of the threads).
- Windows specific: Improved detection of corrupted PrusaSlicer.ini configuration file. Very rarely for some unknown reason PrusaSlicer.ini is partially or fully filled in with binary zeros, most likely due to power outage or a bug in hard drive driver #8217.
- OSX specific: When trying to open a G-Code file using drag and drop or "Open with" option, G-Code Viewer would report the file extension as unknown when PrusaSlicer was not already running #8300, #8344
- Filament usage estimate was incorrect when using MMU. The loading and unloading moves were not correctly accounted for, leading to much higher estimate then reality. Only the 'Sliced Info' box was affected, the statistics at the end of the G-Code were correct.
- Fixed a crash when rescaling the windows or changing color mode (Windows, OSX). This should fix some spurious crashes happening when moving PrusaSlicer window between two monitors etc.
- Fixed inadvertent deselection after changing and confirming object-specific settings #8342
- Changing object-specific settings incorrectly inserted two undo/redo snapshots.
- Some configuration options always showed as modified in profiles inherited from the
---default---
profile. - Fixed a crash when pressing Ctrl+A while using a painter tool or editing SLA support points or drainage holes #8416
- Linux specific: Fixed a crash when confirming a value in Height range modifier #7531, #8055, #8408
Profiles
- Added Infinity3D bundle (#8396, thanks @Amit4Infinity3D)
Translations
- Updated CZ, DE, ES, FR, IT, JA and PL dictionaries.
- Updated zn_CN translation (#8383, thanks @iBral)
References
[Kuipers et al., 2020] Tim Kuipers, Eugeni L. Doubrovski, Jun Wu, Charlie C.L. Wang. "A Framework for Adaptive Width Control of Dense Contour-Parallel Toolpaths in Fused Deposition Modeling." Computer-Aided Design, vol. 128, p. 102907. 2020.
[Tricard et al., 2019] Thibault Tricard, Frédéric Claux, Sylvain Lefebvre. "Ribbed support vaults for 3D printing of hollowed objects." Computer Graphics Forum. 2019.