3D Scanning for Personal 3D Printing

Siggraph 2014 Studio Course
taught by Gabriel Taubin and Daniel Moreno
on Wednesday, August 13, 2014,9:15 AM - 12:30 PM
at the Vancouver Convention Centre, West Building, Exhibit Hall A
Douglas Lanman contributed to the Lecture Notes

Abstract

3D Printing has entered the mainstream. Multiple low cost desktop 3D printers are currently avail- able 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 example- driven 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 mod- ified 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 post- processing 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.

Prerequisites

Attendees should have a basic undergraduate-level understanding of linear algebra. While exe- cutables are provided for beginners, attendees with prior knowledge of Matlab, C/C++, and Java programming will be able to directly examine and modify the provided source code.