3D Printing has entered the mainstream. Multiple low cost desktop 3D printers are currently available
from various vendors, and open source projects let hobbyists build their own. This course
addresses the problem of creating 3D models for 3D printing. As is the case for 3D printers,
low-cost homemade 3D scanners are now within reach of students and hobbyists with a modest
budget. This course provides the students with the necessary mathematics, software, and practical
details to leverage projector-camera systems to build their own desktop 3D scanner. An exampledriven
approach is used throughout, with each new concept illustrated using a practical scanner
implemented with off-the-shelf parts. First, the mathematics of triangulation is explained using
the intersection of parametric and implicit representations of lines and planes in 3D. The particular
case of ray-plane triangulation is illustrated using a scanner built with a single camera and a modified
laser pointer. Camera calibration is explained at this stage to convert image measurements
to geometric quantities. The mathematics of rigid-body transformations are covered through this
example. Next, the details of projector calibration are explained through the development of a
classic structured light scanning system using a single camera and projector pair. A minimal postprocessing
pipeline is described to convert the point-based representations produced by these
scanners to watertight meshes. Key topics covered in this section include: surface representations,
file formats, data structures, polygonal meshes, and basic smoothing and gap-filling operations.
The course concludes with the description of some commercially available low cost desktop 3D
scanners.