Tutorial: modifier meshes

Posted by Alessandro Ranellucci on 2014-11-08

We'll go through one of the most advanced features of Slic3r: the ability to use modifier meshes for applying distinct settings to object parts. Infact Slic3r allows users to define regions where the print settings should be overridden by distinct settings.

Some time ago I decided to design an ukulele that could be printed on a RepRap. I also called JonTom, a world-famous ukulele player for getting a review of it. You might want to enjoy the YouTube video about it.



Before assembling it, I was worried that string tension would break the instrument or bend it too much. Nothing happened to the instrument body and neck. However, the head got bent a bit too much. This is how it should have been:



And this is how it turned out after tensioning strings:



The joint I designed turned out to be too flexible:



So, at this point there would have been three possible solutions:

  • redesign the parts with a larger joint (not much possible without altering the external shape of the instrument)
  • print the head with 100% solid infill
  • print just the joint area with 100% solid infill

I chose the third option: let's see how this feature works.

I used my CAD application to model a simple volume around the area that I wanted to print with solid infill:


Then I exported it as a separate STL file.

Finally, I fired Slic3r up and loaded the main part, then clicked on Settings... and then hit Load modifier... I loaded the new volume as a modifier mesh and I applied 100% solid infill to it:



That's it!

This is the comparison between a print with the modifier and without modifier. Note the solid area near the joint:



Modifiers are a different way for specifying multi-part objects: instead of importing multiple volumes that define the object shape, you can import a special volume that overlaps with the object and defines a part by subtracting it from the rest of the object.


1.5 years of Slic3r development

Posted by Alessandro Ranellucci on 2013-07-01
Slic3r was born in late 2011 as an attempt to modernize the 3D printing toolchain. It simplified slicing by reducing configuration to just three options (nozzle diameter, filament diameter, temperature) and it also made slicing a lot faster - but speed wasn't the main goal. The goal was to have clean, structured code for prototyping new features and getting a powerful slicing engine. This is why Slic3r uses C++ code for the hardcore geometric processing, while it keeps higher-level logic in a flexible language such as Perl. Of course, more features mean longer processing times. As always, it comes down to a compromise!
I'll try to list some of the things that Slic3r introduced in 3D printing as original features.

First off, Slic3r was designed to expose a full command line interface. All options are available on the command line, and batch jobs can be performed through it. This is to avoid reinventing the wheel and let other projects focus on nice graphical interfaces, 3D visualization, G-code preview, print control. Slic3r can be easily integrated everywhere.


The first big change introduced by Slic3r was the automatic detection of bridges. Skeinforge couldn't do multiple bridges in a single layer, as it just made solid infill span the entire layer, resulting in a waste of material and suboptimal bridging direction. Slic3r detects each bridge independently and only extend it by the distance strictly needed for anchoring. (The same logic is applied to top surfaces, where solid infill is only extended where needed instead of the entire layer.)


A well-known feature introduced by Slic3r is Microlayering (aka Infill every 'n' layers, aka Combine infill). With this option, a different layer height is used for infill and for perimeters: this way you can do, say, 0.1mm thick perimeters while still printing infill at 0.3mm. You save time while still getting high resolutions on the surfaces. Note that this is very different from the "Skin" option that was introduced in Skeinforge: that one just duplicated perimeters several times, so you'd still get the infill resolution even on the outside. A former microlayering concept and implementation was actually introduced by Adrian Bowyer, so this is not entirely new in Slic3r.
Speaking of multiple layer heights, Slic3r introduced the ability to assign different layer heights to different regions of a single print. This allows to save time while still using thin layers for parts that need accuracy, and for example to have a thicker first layer for easier adhesion to print bed. Such a feature required a large refactoring of the codebase so that no algorithm relies on the assumption that all layers have the same thickness.
Brim is one more popular feature. It was actually proposed by the community as an effective way to improve adhesion and avoid warping.
Slic3r's cooling logic was also innovative: it controls both cooling fan and print speed in a single integrated logic. Triffid Hunter (Michael Moon), active member of the RepRap community, proposed it.


Sequential printing is one more popular feature, enabling users to compose plates of objects but have the printer print one object completely at time. This reduces the impact of a failure, since some objects would be completed.
The Avoid crossing perimeters feature, which took a few months to be completed, bends travel moves so that they don't cross objects when not strictly needed - and when it's needed, it tries to cross a vertex rather than a flat surface. This allows to get clean prints even with Bowden extruders (more prone to oozing). Skeinforge had a feature named 'comb' which served the same purpose, but it was very different as it actually walked over perimeters (while Slic3r stays far from perimeters, either on the inside or on the outside) and it followed them even in concave points until it reached the destination (while Slic3r just bends the path). Slic3r's implementation is based on visibility graphs and a weighted Dijkstra search.
One unique feature of Slic3r is the configuration of different extrusion widths for each print part (perimeters, infill, support, first layer etc.). This allows fine-grained tuning of the results and it makes the internals very complicated (and a bit slower, like all these features!) since no assumption can be made on widths.
One more unique feature of Slic3r is known as Extra Perimeters: this logic automatically increases the number of perimeters in those layers where slopes would expose some of the infill producing suboptimal results. (picture by Michael Andresen)
Slic3r also introduced true, complete, support for multiple extruders. While the previous solution was just to slice each material as a separate object and stitch the G-code files afterwards, Slic3r has native support for multimaterial files. It was one of the first applications able to read and write AMF files. It also allowed to use a secondary extruder for support material, opening the way to soluble support.
One less known option is Only Infill Where Needed: it will detect what upper parts of the object actually require infill for supporting the ceiling. For example, a dome only needs the central part supported: think of it like an internal support material. This saves time and material.
Another original feature is the ability to specify a different number of top and bottom layers. This allows, for example, to make vases from solid objects.
There are more less known features. One is Acceleration control: Slic3r allows to fine-tune your firmware by assigning different acceleration limits to each part of the print (perimeters, infill, bridges). This is for expert users, though!
Finally, Slic3r introduced an automatic logic for generating internal bridges over sparse infill. This greatly improves the quality of top surfaces. There's no option for this: Slic3r does it automatically for you :-)

Tip: handling large models

Posted by Alessandro Ranellucci on 2013-05-06

Let's see some things you can do to avoid problems or even crashes when trying to print large, detailed, heavy models. Detailed models contain a lot of vertices and Slic3r will use more memory to handle them; sometimes such needed memory is more than your physical system memory.

First off, make sure you're using Slic3r 0.9.10 or newer, as their memory usage was reduced enormously.

The first thing you can to is to reduce the number of vertices/facts in your model: if your file has more than 300k facets, it's very likely way more detailed than you can achieve using your printer. You can then use Meshlab to perform such simplification: it's a very easy task, just follow this tutorial.

The next thing you can do is to use the resolution option in Slic3r: it will perform a simplification on the XY plane after the model is sliced. You can set the resolution option to a value like 0.01mm. If you leave resolution to zero, no simplification will happen in Slic3r and the output G-code will reflect the full resolution of the original model.

Finally, you can reduce the number of threads. Due to the way Slic3r is currently written, each threads will reserve its memory space and duplicate most of the geometric data. This means that using 4 threads will reduce the processing time but will use about 4x the memory. You might want to revert to a single thread for very memory-consuming models.

Of course each Slic3r version includes optimizations and things will improve on this side, so expect these hints to be less needed in the future.

Tip: printing with Bowden extruders

Posted by Alessandro Ranellucci on 2013-03-31

I learned that the main goal with Bowden extruders is to reduce the number of retractions in a print. Even fast and long retractions often leave blobs, so we have to fight those.

Slic3r 0.9.9 contains a number of features for that purpose. Here are the recommended settings:

  • avoid crossing perimeters (Print Settings): on
  • only retract when crossing perimeters (Print Settings): on
  • retract on layer change (Printer Settings): off

The first setting will also cause Slic3r to finish each island completely before moving to the next one, reducing the need for retraction.

Slic3r 0.9.10 introduced a new useful setting to avoid blobs upon retraction:

  • wipe (Printer Settings): on

These settings should help you getting good prints with your Rostock, RepRapPro, Ultimaker or whatever.

Thanks to SeeMeCNC and Wasproject who donated printers to test these features.

Tip: printing vases

Posted by Alessandro Ranellucci on 2013-03-25

The Top solid layers option in Slic3r allows to print vases from simple solid models. This means that you don't need to hollow out your models manually, which can be a timeconsuming task and often requires features that basic modeling packages don't offer.

The trick is just to set Top solid layers to 0 and Infill density to 0 - voila, your solid will be printed with just its sides and the bottom surface.

You can then use the Bottom solid layers and Perimeters options to define the thickness of the bottom and the walls of your vase (note that this allows to change such thickness at print time without having to change it in the original model).

This trick also enables faster slicing, because Slic3r won't need to use its thinwall/medial axis algorithm to collapse the walls into single traces.

So, when you find that sexy vase on Thingiverse be sure to check whether a solid version is available - if so, use that instead of the one that is already hollowed out (for example, the Twisted Heart Vase provides both). If not, you can use a tool like Meshlab or Netfabb Studio Basic to fill the holes like I did for the Tornado.


If you ever decide to print a single-walled vase (i.e. with Perimeters set to 1) you can also benefit from the Spiral Vase setting which will raise Z continuously avoiding a layer-change point which would cause a visible seam. This setting works with any number of bottom solid layers.

3D printing - present and future of Slic3r

Posted by Alessandro Ranellucci on 2012-12-17

Andrew Mazzotta, newyorker filmmaker, visited me to record one episode of his "3D Printing Adventures". We had a chat about present and future of Slic3r and 3D printing.

Andrew, thanks for visiting!

A (not so short) talk with Josef Prusa

Posted by Alessandro Ranellucci on 2012-09-11

I recently visited Josef Prusa in Prague (yes, that Josef Prusa: the world-known author of the Prusa Mendel printer and RepRap core developer).

We recorded a talk about many topics including Slic3r, 3D printing, community, funding, bad vendors and open development. Check it out!

(Some days ago Josef got a new tattoo on his arm. Do you recognize it? It's Slic3r hexagonal infill! :-P)

Here and there in the Slic3r community

Posted by Alessandro Ranellucci on 2012-01-07

Okay, Slic3r was born in September and in a few months I was able to bring it beyond what I expected, in terms of features, speed and stability. Things have started to change very quickly, and community is playing a big role in testing and discussing new features.

Slic3r forum was created in the official RepRap forums. Also, about 50 people sit in the FreeNode IRC #slic3r channel.

Some notable things appeared in the web recently. Neil Underwood (well known as Spacexula) posted pictures and a video of a print he did on the official RepRap blog. The first outstanding thing is that he reached a0.01mm layer height. The second outstanding thing is that he used Slic3r!

Richard H. (well known as Richrap) is posting a multipart illustrated Slic3r guide to his colorful blog. It's a very good work, so thank you Rich!

Michael Andresen (well known as blddk) posted some screenshots to show differences between the various fill patterns available in Slic3r. Don't miss the interesting article Gary Hodgson posted about new possible fill patterns.

Pointedstick (Nathaniel Graham) posted two good blog articles about high-resolution printing, in which he talks about using Slic3r: this and that.

Brazen Artifice posted a couple articles about retraction and preloading last settings.

Sparr posted a picture of an object he printed with and without enabling the native arcs support in Slic3r.

The good Kliment Yanev added an option to customize the slicing command in his excellent Pronterface, to allow for easy integration with Slic3r. (See the Slic3r README for guidance.)

The birth of a Slic3r community

Posted by Alessandro Ranellucci on 2011-11-13

Here we are. After two months since I started to write this software from scratch, there are many people enjoying using it. And I'm enjoying to receive their feedback!

Tech Paladin published a post entitled Slic3r 0wns with some pictures:

Joachim Glauche, owner of and creator of the ShaperCube published some pictures of nice high-resolution prints sliced thanks to the speed and accuracy of Slic3r.

Some people printed the same object with Slic3r and Skeinforge and published pictures with the comparison: see this picture by Blue_Metal,this one by John Ridley. Also, see this picture by Richard Goodwin.

There are also a couple YouTube videos: this and that.