This instructable aims to show you the step-by-step process of takin a full-body scan and manipulating into any different position for a 3D print. I made the steps as short as possible, so anyone would be able to perform their own 3D scan easily.
Also, I thought some people would be interested in animating their mesh, so I decided to add the basic steps to doing so, at the end of this instructable. The video of the example animation can be found here:
Step 1: Gathering Materials
The three basic materials required for this project are:
- Microsoft Kinect (ASUS Xtion and PrimeSense will also work)
-Computer (with a fairly good graphics card)
-turntable (if you don't have one the steps to make one are included in this instructable)
Once you have met the prerequisites above, you will need access to additional software (All the software used for this instructable is either free, or has a "lite" edition that you can use)
- Reconstruct Me
The newest version is much more user-friendly, but if you do not purchase the lincense, little spheres will appear in your output mesh much like a water mark. the older version does not have this watermark, but can be harder to use, and can sometimes be a bit "buggy".
Newest version download - http://reconstructme.net/projects/reconstructmeqt/
Older version download - http://reconstructme.net/releases/
Downlad - http://sourceforge.net/projects/meshlab/files/meshlab/MeshLab%20v1.3.2/
- Blender (I used version 2.66, but 2.67 should also work fine)
Download - http://www.blender.org/download/get-blender/
netfabb has a cloud service where you send an stl file, and it will attempt to repair it within five minutes and send it to your email.
netfabb cloud - http://www.netfabb.com/cloud/index.php
netfabb studio - http://www.netfabb.com/download.php
Step 2: Making a Turntable
The turntable is what will be used to more easily capture the surfaces of what we want to 3D print.
(The turntable is not necessary, but is strongly recommended for better 3D scans)
1. One Plank of wood to serve as a base.
2. One 1'' X 15" Circular plank to serve as stand
3. Bar stool Swivel
6. No-slip Rubber Pad
7. Eight Lag Bolts
8.Impact Driver with socket attachment
11.Drill with forester bit
Step 3: Marking Your Center
1. Using your ruler, measure the diameter of the surface, and mark the center.
2. Draw a line from one side to the opposite side, through the center.
3. Draw a line perpendicular to the first, through the center.
Step 4: Align the Swivel
1. Align the bar stool swivel holes with the perpendicular lines drawn in the previous step, and mark where these holes intersect the lines.
Step 5: Center and Alignment of Base
1. Using your ruler, find the center of your base and mark it.
2. Draw perpendicular lines from one side to the other, through the center.
3. Align the holes (opposite side from previous step) of the bar stool swivel with the perpendicular lines drawn on the base.
4. Mark where these holes intersect the lines.
Step 6: Fastening the Swivel to the Base
1. Aligning the bar stool swivel holes with the markings on the base, fasten the bolts to the base with the impact driver by drilling them into the board through the holes in the swivel.
Step 7: Preparing to Fasten Swivel to Circular Board
1. Rotate the non-bolted portion of the swivel 90 degrees until holes fall into alignment with the bolted section.
2. Using the drill and the forester bit make a hole through the base, at one of the notched sections of the swivel.
Step 8: Fastening the Swivel to the Circular Board
1. Align the swivel holes to the holes marked on the circular board.
2. Flip the turn table, so that the base is facing up.
3. Align the hole drilled in the base, with one of the holes of the swivel that is touching a marked hole on the circular board.
4. Attache an extension(impact driver extension marked by red arrow) to your drill, then fasten the bolt to the circular board through the hole in the base.
5. Turn the base, and then fasten the second bolt to the circular base. Do the same with the remaining two bolts.
Step 9: Applying a No-slip Base
1. Measure the length of no-slip rubber pad needed to cover the bottom of the base, and cut away the excess.
2. Then using an adhesive, apply the no-slip pad to the base.
Step 10: Marking Turning Angles
(The reason I added this step was because the first time I performed a scan, the kinect I used was damaged, and I had to take partial image scans, and align them in MeshLab. If you have a properly working kinect, this step is unnecessary.)
1. Using your measuring device, find the center of the circular board.
2. Using your protractor mark-off points from the center, 20 degrees apart around the entire circle.
3. Draw lines across the board through the marked points.
4. Cut strips of tape, and place the tape over the the marked lines.
Step 11: Setting Up to Record
Before we begin we will need to set up the area where the recording will take place.
- Fairly open area to reduce the amount unwanted materials being scanned.
- Something to put the kinnect on and a way to change the elevation of the kinect(In our case we used a foldout table with some old VHS tapes and textbooks to place the kinect on. We changed the elevation of the kinect by removing some of tapes and books).
- Place the turn-table so the center is approximately 3 feet from the kinect.
Step 12: Taking the Scan
Have the person that is going to be scanned stand directly over the center of the turn table.(I used the older version of ReconstructMe to cut down mesh editing)
-Also, make sure the person being recorded moves as little as possible
Newer version of ReconstructMe
1. If you have the latest version of ReconstructMe, simply start up the program and click record.
2. Turn the turntable, so the kinect captures all 360 degrees of the person. Once you have finished recording one section, readjust the
height of the kinect, and record the next section.
4. Do this, until the full person has been captured by ReconstructMe.
5. All the scans taken should be located in a folder called default project as .PLY files.
Older version of ReconstructMe
1.If you have an earlier version go to where you saved the ReconstructMe folder, then shift and right click on the folder and select "open command window here".
2.In the command window type "reconstructme.exe --multscan" and press the "enter" key.
3.Then type "y" and press the "enter" key.
4.When the console pops up, press the "p" key to play or pause the recording.
5.Once you have recorded the first section of the person, readjust the height of the kinect and press the "n" key to record the next section of the person.
6.Once the entire person has been recorded, press the "esc" key to exit the record console.
7.In the command window type in reconstructme.exe --stitch.
8.All the scans taken should be located in a folder called "default project" as .PLY files.
Step 13: Piecing Together the Mesh
1.Now that you have taken the scan, open up meshlab.
2.Under the "file" tab. Click on "Import Mesh" and import all the .PLY files of the person you scanned.
3.If your .ply scan file comes out like the left image, you can adjust the individual .PLY positions by toggling between "Manipulators Tool" (indicated by the green arrow) and "Not editing", (indicated by the blue arrow) located in the "edit" tab until they are in the desired locations, like in the right image.(Note: Make sure you import your .PLY files, and edit them one at a time. Once you import a second mesh, the first one is locked in place.)
Step 14: Preparing for Blender Edit
1. Now that you have placed all the mesh parts in the way you want them, go to the "Filters" tab (indicated by the red arrow) then "Mesh Layers" (indicated by the white arrow) then click on "Flatten visible layers" (indicated by the green arrow, this will combine all the PLY files into one).
2. Go to the "File" tab, scroll down to "Export Mesh As..." and export the file as a .STL file.
3. Now you can either use netfabb studio, or the netfabb cloud service at http://www.netfabb.com/cloud/index.php to fix any holes in the mesh, that the kinect did not pick up.
4. Open the "Fixed" .stl file in MeshLab then go to the "File" tab, scroll down to "Export Mesh As..." and export the file as a .obj file.
Step 15: Removing Excess Mesh
A few notes about Blender
- The numbers on the numpad(these are not the numbers in a row, at the top of the keyboard) are used to control mesh positions, such as moving the mesh to the origin, rotating up, rotating down, rotating clockwise, and rotating counter clockwise.
- Right clicking the mesh selects it, left clicking performs an action on the mesh.
1. Now open Blender, and import the .obj file.
2. Then go to the "Add" tab, scroll down to "Mesh"(both located by the red arrow) and import one of the 3D shapes there(indicated by the white arrow).
3. Position the object so that it intersects any unwanted part of the mesh.as seen in the first image.
-You can extend the size of the removal mesh by going to the "Object" tab on the right side of the screen(indicated by the green arrow), and then editing the numbers under "scale" in the "Transform" section(indicated by the blue arrow) as seen in the second image.
4. Now right click on your mesh to select it, and click on the "Object Modifiers" tab on the right side of the screen (indicated by the orange arrow).
5. Click on "Add Modifier" (indicated by the purple arrow) and then click on "Boolean" under the "Generate" column (indicated by the yellow arrow).
6. Now under "Operation" select "Difference" and under "Object" select the 3D shape you used, in my case "cube", (indicated by the pink arrow in image 4).
7. Finally, click "Apply" to remove the unwanted mesh. Redo this procedure, until all unwanted mesh is removed (indicated by the black arrow in image 5).
Step 16: Giving the Mesh "bones"
At this point we are ready to apply armature(also refered to as bones) to our mesh. The armature of the mesh is what will control the positions of the mesh.
1. Click on the tab as indicated by the red arrow, and create another screen to view your image.
2. Rotate one of your screens, so it shows the side view of the mesh.
3. Click on the the joint where you want to place the first bone so it is marked by the red circle (in my case the shoulder). make sure it is aligned in both views, so that the bone is in the mesh.
4. Click on the "Add" tab, scroll down to "Add Armature", and click on the "Single Bone" option.
5. Go to the "Object Data"(image of a stickman) tab indicated by the white arrow. Now check-mark the "X-Ray" option indicated by the green arrow. Also, make sure that the "X-Ray" option is check-marked, under the "Object"(image of a cube) tab located in the same row of tabs as the "Object Data" tab.
6. Change the armature option indicated by the blue arrow to "Edit Mode".
Controlling the bone position
-Grabbing the middle of the bone will move the entire bone.
-Grabbing one of the tips of the bone will make the bone pivot off of one of those points.
-Right clicking the tip of the bone will allow you to move it freely with the mouse. Left clicking will then lock that bone in place.
Step 17: Adding More Armature
-In order to add more bones to the first one press the "shift" key, then press the "e" key while still having the "shift" key pressed.
-To add a new "parent" bone (a parent bone is the first bone to be placed in an area) to the mesh press the "shift" key, and then press the "a" key while pressing the "shift" key. Then right click, and drag the bone into the position you desire.
Step 18: Assigning Mesh Parts to Bones
1. Once you have finished placing bones in the mesh, change the tab indicated by the red arrow to "Object Mode".
2. Right click on your mesh and then right click on one of the bones to select all of the armature, so that both the mesh and armature has been selected.(Note: Make sure, the mesh has been selected first.)
3. Press the "ctrl" key, and then the "p" key while the control key is pressed to open an option box. In the option box, select the "With Automatic Weights" option.
4. Following this, press on the "Object" tab indicated by the green arrow. Under the "Transform Locks" tab, lock the X,Y,and Z options as indicated by the white arrow. (by doing this the bone will only rotate along a fixed axis, so the movement of the armature is more natural).
Step 19: Perfecting Mesh Assignment
1. Select one of the bones.
2. In the tab indicated by the red arrow, select the "Pose Mode" option.
3. Select the mesh, and in the tab indicated by the white arrow, select the "Weight Paint" option. This option allows you to choose which part of the mesh is controlled by what bone. The amount to which the bone controls the mesh depends on the color(red = most control, dark blue = no control).
"Weight Paint" controls
-The tab indicated by the green arrow allows you to choose different options such as to add color, or subtract color to the mesh (color in this case being parts of the mesh that the bone controls).
-The tabs indicated by the blue arrow you to control variables such as strength of color, and radius of coloring area.
-If you press on the "g" key while a bone is selected, you will be able to adjust the position of all the mesh that the selected bone controls (as indicated by image 3).
-Left clicking will lock the bone in place.
Step 20: Final Touches
Now that you have your mesh in a fixed position, export it to an slt. file (For some reason when I used Blender I had trouble exporting my mesh as an .stl file, so I saved it as an .obj file, opened it in MeshLab, and exported it from there as a .stl file). You may want to process the final mesh through netfabb once more, before sending it out to a 3D printer, but in any case you now have a ready to print .stl file.
Step 21: Animating the MeshFirst Position
In this section, I will show you how to give your mesh animation. Only a few more steps are needed, in order to be able to do so.
1. Make sure that your armature(bones) are still set to "Pose Mode", as indicated by the red arrow.
2. Set your "current frame" to one, as seen by the white arrow.
3. Put your mesh in the position you want your animation to start, by right clicking a bone and dragging it into position(you may find useful the "translate", "rotate", and "scale" options indicated by the green arrow).
4. Select all the "bones" in your mesh, and press the "i" key. Scroll down and select the "LocRot" option, indicated by the blue arrow arrow. You have now set the first position for your animation
Step 22: Adding Positions
1. Now that you have created your first pose for the animation, a little yellow bar should be seen indicating the frame of the first pose as seen next to the red arrow.
2. Change the frame number indicated by the white arrow, and a green line should appear next to the red arrow.
3. Change the position of your mesh for the following frame(In my case since my mesh is waving, I adjusted the rotation of the upper arm bone,and to get exact angles of rotation I clicked on the "Rotate" tab indicated by the green arrow).
4. Press on the "i" key and click on "Rotation", and you have just added the second frame to your animation.
-If your mesh has recurring movements, the next step will cover a shortcut in adding those frames.
5. Repeat this process until you have created all positions for your animation.
Step 23: A Shortcut to Adding Recurring Frames
This step is for if you would like to have your mesh loop through the same movement multiple times.
(Example: In my animation, the mesh waves his hand up and down. In order to do this, some frames have to be copied.)
1. In order to copy a meshes position, first left click on the frame of the position you would like to copy as indicated by the red arrow.
2. Click on the "Pose" tab indicated by the white arrow, and scroll to "Copy Pose" as indicated by the green arrow.
3. Adjust the frame number you would like this pose to be located, as indicated by the blue arrow.
4. Click on the "Pose" tab again, and scroll to the "Paste Pose" option, located right above the "Copy Pose" option.
5. Press on the "i" key and click on "Rotation", to add this pose to the animation.
Step 24: Playing the Animation
1. To remove "bone" visibility click on the "Restrict Visibility" (eye) icon indicated by the red arrow.
2. Now right click on your mesh to select it, and click on the "X-Ray" option indicated by the white arrow (located under the object tab) to remove any background lines that may be shown in front of your mesh.
3. To play/pause your animation, press on the "alt" key, and then press on the "a" key while pressing on the "alt" key.
-Note: Be sure that your "End" frame (indicated by the green arrow) matches the frame of your final pose, so your animation loops more smoothly.
Now you have an animation, that is ready for rendering.