Introduction: Woodguy: Scan and Print
This is an experiment in object scanning for 3d printing using photogrammetry. I wanted to scan a small wooden artist figure that had been disfigured by dog jaws. I experimented with photogrammetry methods in the open source program COLMAP, reconstructed the mesh from a point cloud in Meshlab and Meshmixer, and generated tree supports with Ultimaker Cura.
camera, COLMAP, Meshlab,
Step 1: Photogrammetry Capture
I tried a few different capture apps for android, but wasn't satisfied with the results, so I wanted to try a photogrammetry method and was curious to try some open source software to reconstruct objects from images.
There are a few different open source projects that looked promising. I chose COLAB due to the availability of pre-built binaries.
I took about 100 images of the wooden figure while rotating around it.
I imported the photos into the COLAB photogrammetry reconstruction software and ran the auto-reconstruction feature. After some time and vary phases of the reconstruction process, the program finally crashed during the final stages of the reconstruction. Luckily this software uses a database to store all of the data for various stages of the process and allows you to export the model in a format where it can pick up where it left off. The program seemed to crash for an unknown reason after reconstructing a certain number of images. By stepping through the reconstruction process one image at a time and exporting the model periodically, I was able to get further along in the process than by running the auto-reconstruction task. Although I still couldn't get all the images to complete without the program crashing.
The resulting point cloud wasn't complete and also had some noise issues, the results seemed promising, although I think in the future I might try different camera settings and techniques for the capture. I wanted to complete the entire pipeline so I decided to use this point cloud regardless.
Step 2: Cleanup and Meshing
I imported the point cloud into Meshlab and removed all the background points and noise.
I generated normals for the point cloud and tried the Poisson surface reconstruction filter, but initially just got some funky surfaces probably due to the point cloud being incomplete and the normals not defining a closed surface. I tried different methods and found that by first using a different surface reconstruction filter, such as ball-pivoting, the Poisson filter worked more as expected after.
Although the point cloud wasn't nearly good enough or detailed enough to recreate the model, it created an interesting likeness that I thought would make an interesting sculpture.
I used meshmixer to connect some of the floating islands with tubes.
Step 3: Slicing and Printing
Importing the model into Cura, I wanted to print it standing and utilize tree supports.
I initially intended to use minimal supports, but I liked the look of the tree support density growing thought the form, so I am trying a print based on the last photo here. I will update with images when it finishes.