This is what we want to produce, by scanning the face of a person and printing it. Mini people!
What you need
- A Kinect or related PrimeSense-based depth sensor (like the Asus Xtion)
- A Windows PC with a powerful graphic card with recent drivers (you need OpenCL support)
- A 3D printer
The process in short
- capture your model using ReconstructMe. ReconstructMe allows to capture a scene or an object in 3D by moving the Kinect freely around
- optionally simplify the object with VTK and François' SimplyMesh
- cut, clean and fix the model with NetFabb Studio Basic
Setting things up
- download and install NetFabb Studio Basic
- follow the installation instructions for ReconstructMe.
Make sure to install the proper driver for your sensor (iMAL's one is "Kinect for Xbox") while the sensor is unplugged, and don't forget to reboot before plugging it in!
One way is :
- The Kinect attached to a tripod (using this tripod adapter for Kinect)
- The model sitting on an office chair, rotating 360°
The other way is to have the person sit still and turn around, holding the camera by hand (more flexibility!)
Then start ReconstructMe, using one of the .bat. At iMAL we use Start ReconstructMe Scan OpenNI.bat
(you can more details on ReconstructMe usage there: http://reconstructme.net/usage/)
It shouldn't be necessary to run a hires scan, since ideally we're going to simplify the model later.
You should something like this:
[2012/06/12 17:18:31.815408][info ] Welcome to ReconstructMe [2012/06/12 17:18:31.815408][info ] Running 0.6.0-405 [2012/06/12 17:18:31.815408][info ] [2012/06/12 17:18:31.815408][info ] Licensed for non-commercial purposes only. [2012/06/12 17:18:31.815408][info ] See 'Non-Commercial License of ReconstructMe.txt' [2012/06/12 17:18:31.815408][info ] Do you agree to our license terms? (y/n) :
Press y to agree. It goes on:
[2012/06/12 17:18:33.721658][info ] Starting sensor [2012/06/12 17:18:33.721658][info ] Testing OpenNI driver backend [2012/06/12 17:18:39.081033][info ] Preparing environment for Device GeForce 9600 GT [2012/06/12 17:18:39.409158][info ] Using default settings. [2012/06/12 17:18:43.018533][info ] Press 'p' to reconstruct/pause recording [2012/06/12 17:18:43.018533][info ] Press 'r' to reset volume [2012/06/12 17:18:43.018533][info ] Press 'ESC' to stop recording
And a window should open with the view of the RGB camera.
Make sure the focus is on that window, by clicking on it (you can also maximise the window to get a better view).
You can start/pause scanning by pressing P.
When you are scanning, it's important that the model stands or sits still, and that only the chair (or the Kinect) is moving.
Make sure to read those recommendations on the ReconstructMe website. Basically, you have to know that the reconstruction only happens in a predefined zone of 1x1m that starts 40cm away from the sensor, and that you have to carefully move around or have your model spin around.
Make sure that there are no fixed objects in that predefined zone (like a wall, a desk), because it will confuse ReconstructMe. It really can only understand what it's scanning by "seeing" something changing appearance under a different angle. If something change and something else doesn't: CONFUSION!
If something went wrong and you want to start over, just press R to reset (just know that resetting doesn't pause the recording, so you might want to press P first)
You should get something like this
There will always be "holes", but don't worry, we can fix those later. You can try avoiding the (already) classic hole on top of the head by having you camera high and pointing down (this will give you a hole under the chin, though, but it's probably easier to fix than a hole in hair).
Finally, press ESC to quit and save your model. The file extension you enter sets the file format. By default ReconstructMe saves a .PLY file, but if you enter MYTEST.STL you will get a STL file (which pretty much is the standard in 3D printing).
(Optional step) In order to speed up the slicing and the repair in netfab, you can simplify the numbers of triangles of your STL by using the "SimplifyMeshBlackBox" python script. This vtk-based script aimed remove artefacts, smooth and decimate the STL. You can find more details about it on this page
Basically, netfabb will allow you to fix your model (especially filling the holes), rotate and cut you along the xyz axis.
Each case will be different... depending of your model, the angle, the size, the existing holes in the scan.
But basically, it's good to cut out the parts that are fragmentary or that you surely won't need, then repair to fill the holes, then cut again to get the part you really need.
This is netfabb.
First we will trip the lower part that we don't need
Simply move the slider corresponding to the axis along which you'll cut, you will get a preview of the line where the cut will be made. Clicking on the icon next to X, Y or Z, you can actually get a preview of what the isolated two parts will look like after the cut.
You might actually want to rotate the model to cut straight and not in a bevel. Simply use the green edges around your model to rotate it.
Press "Execute cut", you'll get an visualisation of the plane that will cut your model in two.
You can still adjust it with "move parallel". When you're ready, press "Cut"
Your model is now actually cut in two, you can select the part you don't need and delete it.µ
We will no try to "repair" the model.
This icon is telling you that some things are wrong with your model. The biggest of them is that your model is not "closed" (it has holes).
Select your model and click the Repair icon. You enter the repair mode.
For most cases, clicking "Automatic repair" and selecting "Default repair" should fix most issues. Sometimes you might need to do it twice or to tinker with the repair options. Don't forget to click "Apply repair" to actually.. well.. apply the repair.
You probably shouldn't worry too much if your model still has some weird parts sticking out, or holes, IF they bits you won't print anyway. The best course of action now is to cut the model again to isolate the part we actually want to print. Since the repair phase kind of "filled" your model, cutting through it won't create new holes. Nevertheless, you might need, after cutting, to repair it again.
In the end, you should get something like that, with a flat bottom:
It's reaaady for print!
Just right-click on it and export it to STL.
You can basically follow this tutorial http://imal.org/wikimal/resource/imal-makerbot-users-guide
You probably don't need your 3D head to be *that* solid, so an object infill of less than 25 should work.
(I successfully printed with an infill of 3, and it still feels a bit too full)