Geometry Processing and 3D Printing
In this practical course, our students will implement the various algorithms and stages of a Geometry Processing pipeline, required for 3D scanning of a real world object or person and for 3D printing a replica of it.
The software components will be built within the Geometry Processing and rendering framework OpenFlipper. We will implement all required steps like 3D data capture and reconstruction, mesh completion and cleanup as well as the generation of tool paths for the 3D printing manufacturing process. The developed algorithms will be tested with our lab equipment including LiDAR cameras and Ultimaker 2 3D printers which are all available for the practical.
Geometry Processing Pipeline
The processing pipeline starts with capturing the 3D shape of an object. We will use LiDAR cameras to acquire multiple depth images of a real scene and combine them into one polygon mesh. This requires the synchronization and registration of individual scans as well as the merge of overlapping surface patches.
Usually 3D scans of objects contain holes due to hidden areas of the object during a scan. This step will detect and fill these holes to eventually get a watertight surface for printing. The reliability of this step can be increased by specializing to particular object classes (such as, e.g., human bodies).
Meshes generated by scanners can contain too many or sometimes badly shaped triangles which may cause problems during 3D printing. In this step we will improve the mesh quality to make the data suitable for 3D printing. The result of these steps will be a high quality 3D reconstruction in form of a polygon mesh which can then be handed over to the 3D printing pipeline.
3D Print Pipeline
The manufacturing process for 3D printing consists of several steps that prepare the model for layered printing and translate slices into movement instructions for the print head.
Fitting the model into the print space and translating it onto the build plate is the most obvious task before printing. The rotation of the object is an important factor on the print time, material consumption and the surface quality. Meshes with thin geometry that is below the printer resolution need to be automatically fixed to yield a correct printing result.
The process of slicing cuts the 3D object into a set of 2D contours. Each slice can then be converted into movements for the print-head, called GCode. An optimal GCode converts the parametric slices into thick walls and guides the print-head in an efficient pattern through the print.
Printing solid models is often a waste of material and time, thus most printed objects are hollow. However, to maintain a certain structural integrity, objects are not printed completely empty inside, but they are filled using a grid pattern. The inserted pattern can range from a simple orthogonal grid to a hexagon-pattern or even a more complex infill structure.
Most 3D-Printer struggle with object parts that are steeper than a certain angle. In these cases, the resulting print has uneven surfaces and lacking quality at these areas. Using a support structure, such that the printer does not have to print overhangs into the air can improve the result. However, support structures also damage the surface they are attached to and leave marks when removed. A good balance between stability and impact on the print quality and time has to be found.
The course will teach the participants how to develop a complex project using software engineering techniques. Based on the 3D-Printing pipeline, tasks will be given out to address each of the previously mentioned steps in the pipeline. Each step starts with implementing a basic version of the algorithm followed by a more in-depth look at each problem. Envisioned algorithms and techniques can be tested on our LiDAR cameras and Ultimaker 2 printers.
- Students should have basic knowledge in C/C++ programming.
- We recommend to have attended the Geometry Processing lecture (not a strict requirement)