[MAS.865](../..) > [Path Planning](..) > Slicers
## Slicers
Slicers are tools specifically targeted at path planning for additive manufacturing - more specifically for Fused Deposition Modeling (FDM)
also known as Fused Filament Fabrication ([FFF](https://en.wikipedia.org/wiki/Fused_filament_fabrication)).
They usually take a 3D watertight mesh as input and generate a 3D printing path (e.g. as G-Code).
The assumptions that these tools make is that the whole path planning can be done as a stack of 2-D paths that are connected between slices, thus simplifying the path search space drastically.
Beyond the slicing, these tools usually also consider semantics of the given additive printing process.
For example, the path is composed not only of the target printed path, but often includes specific parts
such as
* a **raft** layer that allows better adhesion between print and platform to counter warping,
* **support** structures to print overhangs,
* various dense **infill** patterns, or
* zigzags
* space-filling curves (e.g. Hilbert curves)
* spirals
* sparse **infill** patterns to speed up the printing process
* 2d lattices (rectangular, triangular, hexagonal "honeycomb" ...)
* 3d lattices (diamond ...)
* **wall** paths (usually done first for best appearance, and as a "buffer" for the interior)
* **bridge** paths that can go over small __unsupported__ regions
* **enclosure** paths that allow support, and protect against oozing, specifically for multi-extruder printing


For an overview, see [From 3D models to 3D prints](https://hal.inria.fr/hal-01518469).
The slicing steps includes
1. Generating support structures
2. Sampling the z-height either uniformly or adaptively
3. Intersection of geometry with slice planes (produces contours)
4. Generation of infill paths (offset curves, or clipping of pattern)
5. Path scheduling (to minimize printing time)
### Infill patterns
There are mainly two different pattern types: regular and adaptive patterns.
The former can basically be generated by clipping a regular pattern and thus do not require much computation.
The latter adapt the pattern to each slice, either for structure, or filling.


Adaptive patterns include notably spirals (related to offset curves),
and notably [Connected Fermat Spirals](https://www.cs.sfu.ca/~haoz/pubs/zhao_sig16_fermat.pdf)
that allow a nice optimization of the path time per slice while allowing easy control of the path starting and ending points.
### Software list
Before slicing, you need to generate a watertight mesh.
This means removing [non-manifold structures](https://blender.stackexchange.com/questions/7910/what-is-non-manifold-geometry), and filling holes.


Mesh repair:
* [Meshlab](http://www.meshlab.net/)
* [Meshmixer](http://www.meshmixer.com/)
Mesh slicing:
* [Slic3r](http://slic3r.org/)
* [Skeinforge](http://fabmetheus.crsndoo.com/) (getting old)
* [Cura](https://ultimaker.com/en/products/ultimaker-cura-software) from Ultimaker ([github](https://github.com/Ultimaker/CuraEngine))
* [Repetier](https://www.repetier.com) platform for [RepRap](http://reprap.org/) printers
* [IceSL](http://shapeforge.loria.fr/icesl/) (also an algorithmic design tool)
* [SliceCrafter](http://shapeforge.loria.fr/slicecrafter/) (web version of IceSL)
* [OctoPrint](https://octoprint.org/) as a web interface to 3d printers
### Parameters
There are (too) many path planning parameters.
See [Cura's default settings](https://github.com/Ultimaker/Cura/blob/9ea59c1976c7d440cb7b9f4fd23be069c73b254f/resources/definitions/fdmprinter.def.json) to have an idea.
Furthermore, many settings dependent on the machine, as well as the environment including the temperature,
the type of material being used, or even the humidity level (e.g. fiberglass filament on Markforged).
See [Mastering Cura](https://ultimaker.com/en/resources/21932-mastering-cura),
[Support Settings](https://ultimaker.com/en/resources/20422-cura-support-settings)
### Resources and non-conventional additive path-planning
* Work of [Sylvain Lefebvre](http://www.antexel.com/sylefeb/research)
#### Support structures:
* [Clever Support: Efficient Support Structure Generation for Digital Fabrication](http://hpcg.purdue.edu/papers/Vanek14SGP.pdf)
* [Branching Support Structures for 3D Printing](https://www.youtube.com/watch?v=JaNImqRXF34)
#### Enclosures:
* [Tight printable enclosures for additive manufacturing](https://hal.inria.fr/hal-01141706/)

#### Out-of-plane path planning:
* [WirePrint](http://hcie.csail.mit.edu/research/wireprint/wireprint.html)
* [5DOF WirePrint](http://www.cs.cornell.edu/projects/wireprint/)

#### Foam path planning:
* [Procedural Voronoi Foams for Additive Manufacturing](https://sites.google.com/site/jonasmartinezbayona/procvorfoam) ([video](https://youtu.be/ENksVUYBrGs))
* [Orthotropic k-Nearest Foams for Additive Manufacturing](https://hal.archives-ouvertes.fr/hal-01577859/file/MSDL17.pdf) ([video](https://www.youtube.com/watch?v=IqPC9nK0nuM))

#### In-situ path planning:
* [ReForm bidirectional](http://ourus.co.uk/reform)
* [Patching Physical Objects](http://hcie.csail.mit.edu/research/patching/patching.html)
* [Hybrid Path Planning](https://robertmcgrath.wordpress.com/tag/the-hybrid-artisans-a-case-study-in-smart-tools/)
#### Special Extruder Path Planning
* [Colored fused filament fabrication](https://arxiv.org/abs/1709.09689)