The Scanner
The MakerScanner is a completely open source 3D-scanner and the perfect complement to a MakerBot or other 3D printer. Every one of the scanner's plastic parts can be printed on a MakerBot or other 3D printer!
Documentation Online
Head over to the documentation page (and the Thingiverse part page) where you'll find complete documentation for the MakerScanner v0.3!
Software is now on github.
Face Scan
A scan of my face! I used Blender 3D to clean the pointcloud and MeshLab to create a surface which we then 3D printed on a Makerbot. If you're interested you can get the pointcloud and STL files here.
Dramatic Increase in Quality
Lots more work put into the scanner and have dramatically improved quality! Here's two scans of a nautilus shell combined into a single 3D pointcloud. The color information has been removed.
An Overview of How the MakerScanner works
The technique projects energy into a scene in order to perform rangefinding. The basics are similar to stereo vision. A laser pointer (scanning to make a vertical line) and a camera are offset a base distance B. As objects approach the sensor, the laser line appears closer to the edge of the camera's image. With correct calibration and some math, the range to each point can be calculated.
The following video explains the concept far better than words. Notice how the laser line moves to the left of the image when my hand approaches the camera. That's all there is to it!
This technique has the distinct advantages of being cheap, fast, and accurate. There is little processing required beyond the digitization of the images, unlike a traditional stereo sensor that requires pixel correlation. By using a camera, surprising accuracy can be achieved for relatively little cost -- using a Logitech webcam gives +/- 1 centimeter accuracy.
I am less successful at long ranges and when scanning in environments with untrained personnel. Long ranges are difficult because often the laser will become too faint to detect. A more powerful laser solves this problem, but can become dangerous for nearby people.