Kinect + Makerbot
Medialab-Prado Feb 23-26, 2012
by: Chris Sugrue, Gorka Cortázar, Bernat Cuni, Daniel Pietrosemoli
A 3 day workshop held at Medialab Prado to explore the possibilities of using a Kinect sensor as a 3d scanner and use it for 3D printing.
Participants were able to experiment capturing 3D data, editing and optimizing 3D meshes using open source tools and 3D Printing the captures with a Makerbot 3D Printer.
Tools:
Replicator: http://replicat.org/
SimpleNI for Processing:
http://code.google.com/p/simple-openni/
Modified Processing Code to Export to STL
http://editor.medialab-prado.es/processingNI-STL
-- requires ModelBuilder Library:
http://code.google.com/p/codeandform/downloads/detail?name=ModelBuilder%20v0004.zip&can=2&q=
Processing Export PLY
(experimental)
http://editor.medialab-prado.es/kinectProcessingPly
exports points only
Processing Export PLY With Color
http://editor.medialab-prado.es/processingNI-PLYColor
Poisson Reconstruction in Meshlab
(convertir nube de puntos a una malla, es un video para instrucciones están el los commentarios debajo)
http://vimeo.com/20933872
3D Tools
Meshlab: http://meshlab.sourceforge.net/
Blender: http://www.blender.org/
Mesh Mixer: http://www.meshmixer.com/
NetFabb: http://netfabb.com/
OpenFrameworks links:
http://www.openframeworks.cc/download
https://github.com/openframeworks/openFrameworks
directorio OF addons: http://ofxAddons.com
ofxKinect: http://github.com/of+Theo/ofxKinect
ofxOpenNI: http://github.com/gameoverhack/ofxOpenNI
ofxOpenNI2: http://github.com/arturoc/ofxOpenNI2
Ejemplos de ofxKinect para OF:
Processing links:
http://processing.org
Simple NI
http://code.google.com/p/simple-openni/
http://www.shiffman.net/p5/kinect/
Modified Processing Code to Export to STL
http://editor.medialab-prado.es/processingNI-STL
-- requires ModelBuilder Library:
http://code.google.com/p/codeandform/downloads/detail?name=ModelBuilder%20v0004.zip&can=2&q=
Otra opción para Windows:
https://github.com/hardikpandya/kinect-processing
Example of Stl Code without Stl Saving
(this example is just drawing the point cloud,and is just a useful comparison to see the separate parts of the code)
http://editor.medialab-prado.es/processingNIPoints
Examples from Making Things See:
https://github.com/atduskgreg/Making-Things-See-Examples
Tutorials
Optimizing meshes from KinectToSTL app for 3DPrint
KinectToSTL APP: https://github.com/downloads/kylemcdonald/Makerbot/KinectToStl.zip
- Capture STL
- Lower the mesh density (for easy processing): Meshlab / Filters > Remeshing,Simplification and Reconstruction > Quadric Edge Collapse Decimation: Percentage reduction: 0.8 (repeat until get a nice mesh of around 50k faces)
- Smoothen the mesh (if needed):
Select faces to smooth (don't select the base plane)
Filters > Taubin Smooth: / check "Affect only selected faces" Preview and test. (Lambda 0.55 gives a nice smooth surface maintaining the general geometry) - Scale your model.
Edit > Measuring tool: Click to points to know the actual dimensions of the 3DModel
Change dimensions accordingly: Filters > Normals, Curvatures and Orientation > Transform:Scale / Set scale factor, uniform scaling, Freeze Matrix. - File > Export mesh as... / STL
- Clean up STL to minimize errors during GCode generation:
Use the cloud services from Netfabb to close holes, remove double vertex, manifold edges... http://cloud.netfabb.com/ upload your file, wait & download the fixed model.
From Kinect capture in Processing - to printable file
- Capture the object/scene / http://editor.medialab-prado.es/processingNI-STL
- Open the STL in MeshMixer / http://www.meshmixer.com/ d
2.1 if you have problems opening the STL. Convert it to .OBJ in Meshlab and import the .OBJ - Decide the orientation you want to print. (Makerbot has better resolution on the vertical axis)
- Clean up the model:
Select the parts you want to print. (click & paint. mousewheel=brush size).
invert selection (i),
Discard (x) - Make the flat base:
Select / all (command+A)
Edits / Extrude: Offset= -0.5, Harden=0, Density=5, Direction=Constant, EndType=Flat, - Smoothen edge if needed: SmoothBrush (1) and paint along the extruded edges.
Aligning multiple Kinect captures
- Open all the files in Meshlab.
- Launch the align tool Edit/Align (yellow circle with black A on the menu bar)
- Select the mesh you want to use as base to position the others. click "Glue Here Mesh", a star appears next to the layer, meaning that the mesh is fixed on the space.
- Align the other meshes:
Select one layer, click "Point Based Glueing": a new window appears with both meshe side by side. Dobleclick to add points where you see the same geometry. (nose with nose, eye with eye, chin with chin...) add a minimum of 4 points, and repeat the same process for as many meshes you got. Click "Process" and the meshes will be aligned. - 5. Merge the aligned meshes into one mesh: Filters>Layer and Attribute Management >Flatten Visible Layers.
- Create a continuous mesh based on the aligned geometry:
Filters > Point Set > Poisson Reconstruction.| Octree Depth 11 = high def. mesh (Solver Divide = lower than Octree Depth, 9 works ok) It might take a while to compute.
Lower the mesh density (for easy processing): Filters > Remeshing,Simplification and Reconstruction > Quadric Edge Collapse Decimation: Target Number of Faces: around 30000
Smoothen the mesh (if needed): Filters > Taubin Smooth: preview and test.
Pointcloud Reconstruction
software: http://meshlab.sourceforge.net/
librerias: http://www.cgal.org/, http://pointclouds.org
meshlab blog: http://meshlabstuff.blogspot.com/
meshing point clouds: http://meshlabstuff.blogspot.com/2009/09/meshing-point-clouds.html
3D Printing
3D Printing processes: Stereolithography SLA | Fuse Deposition Modeling FDM | Selective Laser Sintering SLS | videos: http://vimeo.com/imaterialise/videos
Industrial 3D Printers: http://www.stratasys.com/ | http://www.3dsystems.com/ | http://www.objet.com/ |http://www.zcorp.com/
Home 3D Printers / DIY: http://reprap.org/wiki/Main_Page | http://www.makerbot.com/ |http://blog.ultimaker.com/ |
Business of 3D Print: http://www.economist.com/node/18114327
The Future of Fabrication: Neil Gershenfeld http://goo.gl/APlNj
3D-printing consumer products http://www.mgxbymaterialise.com/%7C http://www.shapeways.com/ | http://i.materialise.com/ | http://www.sculpteo.com/en/
Form vs. Funciton http://goo.gl/c10no 3D printing ariplane parts in Titanium
Printing avatars: http://www.figureprints.com/
Art & Design: 3D-print artist in residence http://goo.gl/TZ4xT | 3D-print graffiti http://goo.gl/nfpX8 | Elephantiasis lamp http://www.platform21.nl/page/3915/en | City hacks http://www.fabrique-hacktion.com/| Fabrique Hacktion http://www.fabrique-hacktion.com/
Medical & Prosthetics http://www.bespokeinnovations.com/ | http://goo.gl/6A5eZ
Generative Design
Nature algorithms http://n-e-r-v-o-u-s.com/shop/concepts.php
words to object: lightpoem http://www.shapeways.com/creator/lightpoem
data driven design: streets clock http://goo.gl/DiCTp
interaction driven design http://www.interactivefabrication.com/projects/beautiful-modeler/ | http://www.fluid-forms.com/design-your-own/Fluid-Cassius-Lampshade | Artisan Electronique by UnfoldStudio http://unfold.be/pages/5/items/90
Scan & Print http://www.interactivefabrication.com/projects/fabricate-yourself/ |
Genetic evolution http://endlessforms.com/ |
Misc
Guide to chop off parts of a model with a cube in Blender:
http://makeprojects.com/pdf/make/guide_1220_en.pdf
Kyle Mcdonald MakerBot prints:
http://www.makerbot.com/blog/2011/05/26/3d-printing-with-kinect/
Kyle & Zach course about 3D sensing and visualization
http://3dsav.blogspot.com/
Tutorial con meshlab:
http://3dsav.blogspot.com/2011/03/reconstructing-and-mesh-from-point.html
Mesh reconstruction in meshlab: poisson, marching cubes
http://blog.reprap.org/2011/09/being-in-3d-world-with-3d-printer-what.html
Kyle & Golan kinect workshop at future theater
http://futuretheater.net/wiki/Kinect_Workshop
3D Objects:
http://www.thingiverse.com/