3D scanner (024; 21.02.2010; blender)
Simple but works well.
Digital camera with video recording function (resolution: 640x480, 30 frames/sec).
Laser pointer with special ending for linear beam (ending from laser level).
Phonograph as a rotational drive. Modified with low speed motor and Arduino.
Board and measuring tape.
How it works?
Digital camera placed in phonograph axes of rotational record laser light on objects surfaces (it works better in the darkness). Distortion of laser line corresponding to objects deformation derive from location of laser source. Very important is constant rotational speed and precise measurment (calibration).
Based on scheme and calibration value (a,b and c) we can calculate coordinates of every scanned point.
I wrote special python script for converting video direct to point cloud in Blendera 2.49b. Script require Python Image Library (PIL-1.1.7.win32-py2.6). PIL require conversion from *.mov to *.gif format (but *.gif works with only 256 colors).
Helpful documents: PIL handbook, Blender 2.49b API.
Blender screens of room scan:
Sample point cloud file: Room.blend.
Sample face scan:
Scan with auto faces generating script:
Mesh after a little processing:
This construction is better for scan large object. There are some problems with scan in light places and with shining surfaces. It is also interesting a choise of video filter (sometimes it is better to work with red laser on green channel than with red).