Work In Progress
This is work in progress. Informations on this page try to be accurate, but are still incomplete.
3D printing is a process to create physical, three-dimensional objects from digital models.
Wikipedia has more informations on the history of 3D printing and the available technologies; this article is concerned with hobbist accessible ones that can be used with software in Debian.
Hardware support under Free operating systems tends to be excellent for models developed by the makers community and non-existent for models sold via traditional channels.
Fused deposition modeling (FDM)
Some models supported by Debian include:
LulzBot: FSF certified RespectYourFreedom hardware and closer to a consumer product.
RepRapFamily: many models, sold from various vendors as either kits or assembled products; usually they are under a free hardware license and can run using only free software (firmware included).
Going from an idea to a finished object requires a number of distinct steps that are usually done from distinct programs.
Any software that is able to manipulate 3D shapes can be used to create a model for printing; ideally it should be able to export an .stl file, but there are conversion tools for many other formats.
blender: the first choice for complex, organic shapes, but it has quite a significant learning curve.
openscad: an excellent choice for technical models, based on a programming language.
Model conversion and fixing
Some models may require conversion from other formats to .stl, or they may have geometry problems that could prevent a successful print; programs such as meshlab are useful to prepare the model for printing.
The next step is slicing, i.e. cutting a 3d model (usually described by triangles) in a number of slices a fraction of mm high and describing each slice with the path that a printing head should follow to print the slice.
This step generates a .gcode file based on settings that are usually specific for the printer (printing plate size, number of printing heads, etc.), filament used (printing temperature, etc.) and model (layer height, speeds, supports for overhangs and many more).
Slic3r: a good balace between configurability and simplicity, can be used from a GUI or from command line.
cura-engine simple, but command line only (mostly meant to be used from the cura printer control software).
The last step involves actually sending data to the printer: this is done with a program that is usually also able to give simple commands for mainteinance such as moving the plate/printing head/filament or setting the temperature.
Many printer control programs also include an interface to a slicing program, usually one of the ones mentioned above.
Printrun (not yet in Debian: ITP #695336): written in python, with command line, text and GUI interfaces.
Octoprint (not yet in Debian: ITP #718591): written in python, web interface with support for a webcam to help remote controlling a printer.
Cura (not yet in Debian: ITP #706656): aims to be a complete, easy to use, solution for 3D printing.
While out of scope for Debian, the firmware on most community designed printers can be easily changed and most available ones are Free Software; usually uploading a new firmware requires the arduino IDE (Free and in Debian).
See also http://www.reprap.org/wiki/Firmware.
It could be interesting to package the firmware for Debian so that printer users can update their firmware more easily and securely to get bug fixes and new features.
Many of the programs listed here are or should be managed by the 3D-printer team.