This is an alpha release. This release took us little a little longer than usual, as we decided to do some radical redesign of the user interface, for which we needed to rewrite the last bits and pieces of the Perl source code to C++. In this release we hope we managed to marry the simplicity of the Prusa Control's user interface with the power and configurability of Slic3r that we all love. Check this quick overview video of the new features, we believe you will be pleased.
The 3D object manipulation was improved significantly, the Project aka Factory File was made explicit at the File menu, a Simple / Advanced / Expert mode was added to lower the learning curve for the beginner, the Slic3r's power features were exposed at the plater screen, a "Color Print" feature was ported from Prusa Control, and the Slic3r's main screen has got a modern face lift. The final G-code and print time estimate is now produced by the "Slice" action, there is no need to export the G-code to get the time estimate, and the background processing is finally stable.
This release brings a preview of a masked SLA mode supporting our upcoming SL1 printer. While the SLA mode is usable, there are some rough edges here and there, and the support work flow may change a bit in the final release, so please bear with us.
To let you enjoy the alpha without worries, the alpha builds now save their profiles into Slic3rPE-alpha directory, so you may use the alpha side by side with the current release without ruining your production configuration.
TL;DR Before opening new issue tickets, please read the "Missing features" and "OpenGL compatibility" sections. This Slic3r starts in a Simple mode, read the "Simple / Advanced / Expert mode" section and switch to Expert if you want the full fledged user interface.
Masked SLA Support
We added a masked SLA (MSLA) mode into Slic3r PE to support our upcoming SL1 printer product. As far as we are known, Slic3r PE is the first high quality open source MSLA slicer available. While an SLA slicer may seem similar to an FFF slicer on the surface, in reality the two technologies share just one thing: They work slice by slice. To some extent a masked SLA slicer is simpler than a fused filament slicer as it is much easier to just raster a layer image than to plan the path of an FFF print head. There is one caveat though: The SLA technology depends on well shaped and stable tree or truss supports. A failed support will likely ruin the whole print, as a piece of object stuck to the resin vat masks the light for the remaining layers to be exposed.
The following features were implemented into Slic3r PE to support the SLA mode:
- SLA print, material and printer profiles were added. The SLA print and material profiles are stored separately from the FFF print and filament profiles, while the SLA and FFF printer profiles are stored in the same location, and they are differentiated by a new "printer_technology" field.
- Pad and truss supports are generated by Slic3r in the SLA mode to support the printed object. If not specified by the user, the pad and supports are calculated automatically. Once calculated, the user has the option to modify the placement of the support touch points, add or remove the support touch points manually.
- Layers are rasterized into .png images using the Anti-Grain Geometry library and zipped.
- After the slicing is finished, the print may be inspected layer by layer in the layer view to assert, that every island is properly supported.
- A zip archive containing the rasterized layers may be sent to the SL1 printer over network using the OctoPrint file upload protocol.
While this release is certainly able to produce quality prints on our SL1 pre-production printers, the support placement workflow in Slic3r is not optimal and it will likely change a bit in the final release.
For now, the modifier meshes, support blockers / enforcers and variable layer height are not supported in the SLA mode, and the object parameters are limited to the support and pad configuration. You may switch a print between the SLA and FDM technology as long as there are no modifier meshes, support blockers or enforcers defined in the project.
Project aka Factory File, menu restructured
While Slic3r PE supports a concept of a project aka Factory File since 1.40.0 release, it was buried behind the "Export plater as 3MF/AMF" menu. In this release we restructured the menus to better carry the intent:
- We declared the 3MF file to be the project file for Slic3r PE. The 3MF file format is modern, it is supported by Microsoft 3D Builder and Cura, while the AMF file format was only ever supported by Slic3r. Therefore the AMF files could still be imported, but we will no more support AMF for export as a Slic3r PE project file.
- "File Save" does exactly the same as the old "Export plater as 3MF/AMF" menu used to: Every active configuration, object, modifier and its parameters are saved into a 3MF file.
- "File Open" loads a project file including all the configuration, objects, modifiers and its parameters, so that re-slicing the project should produce the same G-code or SLA rasterized images as before.
- "Import STL" imports a geometry into an active project.
- "Import 3MF/AMF" imports geometries into an active project, but the configuration stored in the 3MF / AMF files is ignored.
We are aware of some rough edges, namely we need to implement a concept of an active project and its state (saved, modified), so that the "File Open" would clear the plater first before opening another project, and the user would be asked to save a new or modified project when opening another project or closing the application.
User interface improvements
The application main screen received a face lift, where the tool bars with new elegant icons are now laid over the 3D screen. Slic3r 1.41 introduced basic object manipulation gizmos, and this release expands on them. Rotation is now supported in all three axes, anisotropic scaling, group selection and group operations are supported, and the transformation gizmos are now applicable to the modifiers, support blockers and enforcers as well. A Simple / Advanced / Expert mode was added to lower the learning curve for the beginner, and the Slic3r's power features are exposed at the plater screen.
Simple / Advanced / Expert mode
To make life easier to the beginners, we introduced a Simple mode, where the user interface resembles the UI of Prusa Control: Complex features like the modifier meshes are hidden, and only a basic subset of parameters is shown to the user. In the "Advanced" mode more parameters are shown, and in the "Expert" mode all the power features of Slic3r we love are accessible. To make the learning of parameters easier, we color coded them: Green are safe to be tinkered with by a beginner, an advanced user may want to modify the yellow coded parameters, and the power user may have an itch to modify the red coded parameters.
Every feature is exposed
Slic3r was always known to be powerful and versatile, though some of its features were difficult to use, if not outright hidden behind obscure menus and dialogs. In this release we strive to expose all the power features at the main screen.
- Modifiers, support blockers and enforcers and object parameters may be added from object's context menu at both the 3D view and the object list. Please note that due to the limitations of the wxWidgets user interface library you have to click with the right mouse button at the icon in the last column of the object list to open the pop up menu.
- Object list now shows a hierarchy of objects, their instances, object's parameters, object's volumes and modifier meshes. Every parameter is exposed either inside the object list, or through a contextual panel opening below the object list. One now gets a clear idea of the project structure just by looking at the object tree #378.
- An exclamation mark is shown at the object list next to a model containing errors (gaps, cracks, intersecting triangles). Clicking on the exclamation mark icon sends the object to Netfabb service for repair (works on Windows 10 only).
- The "Cut by plane" tool is now integrated in the 3D view as well, the pop up dialog is gone.
- The object manipulation gizmos now support translation, rotation, scaling and mirroring along all three axes, anisotropic scaling is supported as well. All gizmos are accessible with a hot key (m for move, r for rotate, s for scale), and the active gizmo is deselected with Escape #829, #1082, #1171.
- Rotation gizmos snap to the inner ticks spaced at 45 degrees and to the outer ticks spaced at 5 degrees. Toolbar buttons to rotate left / right by 90 degrees toolbar buttons were dropped, as they are now superseded by the rotation gizmos.
- When holding the Shift key, the translation changes with 1mm steps, and scaling changes with 5% steps.
- Multiple objects may now be selected when holding a Shift key, and they can be manipulated as a group. All objects can now be selected with a hot key (Ctrl-A) #1147, #1394.
- Not only objects, but also their volumes (printable volumes, modifier volumes, support blockers and enforcers) can now be manipulated by the gizmos #346, #429, #572, #1371, #1407.
- Modifier volumes and support blockers / enforcers may now be selected with a mouse click. Selecting a modifier volume switches Slic3r into a volume manipulation mode, where the other objects are painted with a gray color to indicate that they are not accessible in the volume manipulation mode. The volume manipulation mode is left by deselecting the last volume (for example by clicking on the print bed) or by selecting another object (which is painted with gray color in the volume manipulation mode).
- Objects, their instances, volumes, modifier meshes, support blockers and enforcers may now be selected from the object list as well. Group selection is supported in the object list.
- Translation, rotation and scaling of selected object or volume may now be inspected and manipulated from a numeric panel as in Prusa Control. When a particular text input field is entered, an arrow is displayed in the 3D scene to hint the user about the effect of the active text field. Transformation of a single object, instance or volume works with absolute values in its respective local coordinate system, while a transformation over a group selection is specified with relative values in the world coordinate system.
- The translation, rotation, scaling and mirroring is now stored into the 3MF file. This different from the older Slic3r, where only translation in XY plane, rotation around the Z axis, and uniform scaling was handled as a parameter, while the other object transformations were applied to the triangle mesh #777.
- The object instances may now differ by the position in the XY plane and newly also by the rotation along the Z axis. These constraints were chosen to make the support blockers & enforcers or the SLA support points shared by all instances of an object meaningful #405.
- Hot keys were added to control camera zoom: "i" for zoom in, "o" for zoom out", "b" to zoom to the plater, and "z" to zoom to a selected object #376.
- Focal point of the orthographic camera is now kept inside the bounding box of the scene, which solves some of the annoying camera manipulation issues #1098, #1179.
Slic3r supported incremental real-time slicing aka background processing since 1.2.9 release, though this feature never worked quite well due to its complexity and issues with cancellation of the background process. Now while rewriting the rest of the slicing engine from Perl to C++, we took the opportunity to finally fix the update and cancellation issues to make the incremental slicing work as intended.
- The C++ only slicing engine now supports rapid cancellation on parameter change, therefore the continuous re-slicing aka the "background processing on" mode is finally usable in Slic3r PE.
- The slicing engine cancellation was redesigned to work reliably. The redesign should fix many issues reported with background processing enabled #392, #482, #618, #726, #808, #1049, #1115, #1192.
- Synchronization of the front end with the slicing engine was re-designed to be fine granular, so only those slicing steps that were invalidated by the user action will be re-sliced. This was not the case before, as any change of an object parameter or a modifier mesh invalidated the whole object.
- The G-code export now runs on the slicing thread as well, therefore one will get the final G-code preview and the print statistics including the estimated print time automatically after the slicing finishes. Therefore you do not need to export the G-code to get a print time estimate anymore #130, #800, #953, #1132, #1359, #1432.
Multi material improvements
- Extruders can now be assigned directly from the object list, the object pop up dialog is gone. As of now, you have to select the line in the object list first, then to click onto the extruder number to activate a combo box. We are looking into the options of how to convince wxWidgets to open the combo box at a single click.
- Selection combo box now correctly respects the number of extruders configured for the active printer #817.
- One may now print a multi-material project with a single extruder printer, the extruder assignment will simply be ignored. If printing a 5-color print on a MMU1 with 4 colors, the fifth extruder will be silently substituted with the 1st, while the previous Slic3r releases would complain and refuse to print.
- Slic3r will now respect the print speed override dialed by the user on the printer control panel by emitting "M220 B" for the printer to back up the speed override value when moving to the wipe tower, and to recover the user dialed value by emitting "M220 R" when moving away from the wipe tower. This feature is not enabled if printing with a flex, PVA or a BVOH filament, for which the Slic3r emits "M220" to lower extrusion speed #421.
- There is a new parameter "High extruder current on filament swap", which is enabled for the MMU1 to overcome the drag in the filament path, but which will be disabled for the MMU2 to not overheat the extruder motor during the filament exchange sequence.
- The "single extruder multi-material" feature is now enabled for the Repetier firmware as it seems to be compatible with it #1310.
- Slic3r now starts slicing immediately after you switch to a print path preview #152.
- Prusa Control's "Color Print" feature has been integrated into Slic3r PE. You may now insert the M600 "pause for filament change" code at layers which you marked with the layer selection slider at the print path preview screen, and the effect of the M600 code is then visualized by the final G-code preview, therefore you will see precisely what you will get #270, #628, #1141.
- A new "Keyboard shortcuts" screen is invoked with a "?" hot key at the 3D screen and the path preview, and from the Help menu.
- Text fields now send out updates not at each key press, but first when the text field loses focus. This fixes many user interface lag issues #1250, #1397.
- One may now insert placeholders for the print statistics into the output file name template. This is most useful for the print time estimate, however this Slic3r release supports the following new placeholders: "print_time", "normal_print_time", "silent_print_time", "used_filament", "extruded_volume", "total_cost", "total_weight", "total_wipe_tower_cost", "total_wipe_tower_filament" #714, #922.
- Custom G-code file extension in output_filename_format is now supported #1221.
- Sending a print to Octoprint no more blocks the user interface. The print is being sent to OctoPrint or to an SL1 printer on the background, and the progress of the data transfer may be monitored on a new "Print Host Upload Queue" window.
- Filament and SLA material profiles now support a "compatible print profile condition". This allows one to suppress some of the Filament and SLA material profiles based on the configuration keys of the active print profile.
- The system (read only) profiles are no more exported into a config bundle #1292.
- Initial Korean translation contributed by @ulsanether.
- Porting the UI from Perl to C++ allowed us to switch to the latest wxWidgets 3.1 user interface library.
This release contains the following bug fixes:
- Fixed "Slic3r keeps warning about Detect Bridging perimeters if disabled" #838.
- Preset files marked with hidden or system attributes are not loaded, so that the Dropbox config files are ignored #1298.
- Fixed missing top / bottom layers after an object is moved back into the working space #1390.
- Width of the right panel was set to a fixed value #1395.
- Print time estimate was fixed for Smoothie G-code flavor (M203 was interpreted incorrectly), thans @CapnBry #1259.
- A sanity check was added to guess, whether the user did not enter a percentage as a value by mistake (he forgot to enter the % sign) #1225.
Features dropped from this release:
Slic3r was initially written in a scripting language Perl. The Perl language is powerful, descriptive and it certainly sped up the initial Slic3r development, however the Perl support is dropping as it is being replaced by Python or Ruby, it is increasingly difficult to find contributors as less people are willing to learn Perl, debugging the Perl / C++ combination is difficult, and there is no Perl binding for the current wxWidgets UI library that Slic3r is based on. We had to pay the technological debt and ditch Perl to get forward, which meant to rewrite quite a lot of user interface code from Perl to C++ in one shot. To make the transition faster, we dropped some of the Slic3r's features:
- Online printing over serial line aka the "Controller" was dropped for now. We are not sure yet whether we will integrate it into Slic3r again, or whether we will create a separate application for printer and printer queue control, or whether we will drop the serial line printing for good, as there are other applications that serve the same purpose. Please let us know what you think.
- 2D toolpath preview was dropped for now, however we will likely re-implement it as time allows. For now you can use the hot key "1" to orient the camera to look at the print bed from the top.
- Layer height table was dropped for now, though we plan to replace it with a more general feature to assign not only a layer height, but also other print parameters to layer spans. Assigning parameters to layer spans is implemented in Simplify3D through processes. While Slic3r supports the same feature through modifier meshes (slabs), having the option to define the parameters per layer spans table would be nice #495.
- Smooth variable layer height editing is broken in this alpha, it will be fixed in beta.
Starting with this release, Slic3r PE requires OpenGL 2.0 and newer to run. This allows us to simplify the development by not having to implement some code twice (for OpenGL 1.1 vs OpenGL 2.0), and to use modern software libraries. Also OpenGL 2.0 shaders shall improve rendering performance on a modern hardware in respect to the legacy OpenGL.
OpenGL 2.0 is certainly supported on Macs and modern Windows machines, but you may experience issues with old Windows machines or Linuxes. On Linux, you will experience lower frame rates if your are running a MESA software rasterizer. On Windows, we now bundle the MESA software rasterizer with Slic3r PE, so Slic3r should run, though with a lower frame rate due to the use of OpenGL 2.0 shaders. If the 3D scene does not render correctly on Windows, most likely the system legacy OpenGL driver was not substituted with the MESA software renderer. In that case please close Slic3r and copy mesa\opengl32.dll to the main Slic3r directory and restart Slic3r, which should convince Slic3r to load just the MESA software renderer.
Please note, that you will likely experience a rendering performance drop if your driver does not support OpenGL 2.0. In that case we advice you to invest your time into updating your OpenGL drivers (provided by your graphics card vendor) if possible.
- Undo / Redo is never easy to do right, and Undo / Redo for a complex application takes quite a significant time and effort to implement, however it is at the top of our list.
- After the SLA supports are pimped up, we plan to implement hollowing for the SLA prints to save material.
- We plan to use the panels inside the 3D scene like the new "cut by plane" panel more extensively.
- and we hope to go back to the basics and look into optimizing the FFF slicer kernel for print time and quality.