Atomizer: Beyond Non-Planar Slicing for Fused Filament Fabrication
This repository contains the implementation of Atomizer, a novel toolpath generation algorithm for fused filament fabrication (FFF) 3D printing. Atomizer introduces the concept of atoms as a replacement for traditional slices. This method enables collision-free toolpaths that tightly conform to complex geometries and offer new fabrication capabilities.
Xavier Chermain, Giovanni Cocco, Cédric Zanni, Eric Garner, Pierre-Alexandre Hugron, and Sylvain Lefebvre
Université de Lorraine, CNRS, Inria, Loria
Computer Graphics Forum (Proceedings of the Symposium on Geometry Processing), 2025
SGP Honorable Mention
Replicability Stamp: http://www.replicabilitystamp.org#https-github-com-xavierchermain-atomizer
Key Features
- Toolpath generation using frames (i.e., atoms) instead of slices
- Control of the deposition direction and tool orientation
- Collision-free toolpath ordering
- Support for anisotropic appearance on curved surfaces
Replicating One Result (for the Impatient)
This set of PowerShell commands reproduces the colored mesh of Fig. 17 (top left) from the article. You’ll need Windows 10 or newer and Blender to visualize it.
Open PowerShell as Administrator, then run:
winget source update .\install_git_blender_miniconda.ps1
Close and reopen PowerShell. Then run:
git clone https://github.com/xavierchermain/atomizer cd atomizer conda create --name atomizer python=3.10 conda activate atomizer pip install -e . python tools/atomize.py data/param/tubes.json python tools/toolpath_to_ply.py data/toolpath/tubes_smoothed.npz data/mesh/tubes.ply blender --python see_toolpath_with_blender.py -- "data/mesh/tubes.ply"
Notes
- The script
install_git_blender_miniconda.ps1sets up Git, Blender, and Miniconda if needed. You have to download the script install_git_blender_miniconda.ps1. pip install -e .installs the local library in editable mode inside theatomizerconda env- If
blenderisn’t on yourPATH, use the full path toblender.exe. - If something goes wrong, please read the following.
Installation
The code compiles, runs, and is maintained on Windows 10 or newer. It has also been tested on Linux and macOS, but we do not provide installation guidance for those platforms. The following installation instructions target Windows 10 or newer.
Dependencies
To install the dependencies (Git, Blender, and Miniconda), we provide a script that automatically downloads and installs all of them:
.\install_git_blender_miniconda.ps1
The script checks whether the softwares are already installed; if not, it installs them and adds them to the PATH. Alternatively, you can install them manually by following the instructions on the respective software websites.
- Blender must be installed and added to your executable path. It is used to remesh the model (see
tools/process_for_atomizer.py) for the atomizer. We tested with Blender 4.4 and 4.5. - Git and Miniconda are optional dependencies if you are already comfortable with code cloning, Python environments, and modules.
Clone the Repository
git clone https://github.com/xavierchermain/atomizer
Install Python and Module Dependencies
This implementation is written in Python 3.10. Supported versions are Python >= 3.7 and < 3.11, as required by the Taichi module dependency. The implementation also relies on the local library src/atom. Please refer to pyproject.toml for the complete list of Python module dependencies.
Conda
We recommend using Miniconda to install a specific version of Python, the dependencies, and the local library src/atom:
conda create --name atomizer python=3.10
conda activate atomizer
pip install -e .
Usage
Atomize
python tools/atomize.py data/param/<json_filename>.json
The parameters in the JSON file are:
-
solid_name: the filename of the STL representing the 3D solid, without the extension. The STL file must be located in thedata/mesh/folder and have the.stlextension. -
deposition_width: the deposition width in millimeters. The layer height is half the deposition width in our implementation. -
max_slope: the maximum tilting angle of the tool, in degrees. -
top_linesandbottom_lines(optional): paths to single-channel, 8-bit-per-pixel PNG files representing the target tangent directions for the top and bottom surfaces, respectively. The mapping is
