3D Scanning Workshop at Medialab Prado

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

  1. Capture STL 
  2. 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)
  3. 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) 
  4. 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.
  5. File > Export mesh as... / STL
  6. 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

  1. Capture the object/scene / http://editor.medialab-prado.es/processingNI-STL
  2. 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
  3. Decide the orientation you want to print. (Makerbot has better resolution on the vertical axis) 
  4. Clean up the model: 
    Select the parts you want to print. (click & paint. mousewheel=brush size). 
    invert selection (i), 
    Discard (x)
  5. Make the flat base: 
    Select / all (command+A) 
    Edits / Extrude: Offset= -0.5, Harden=0, Density=5, Direction=Constant, EndType=Flat,
  6. Smoothen edge if needed: SmoothBrush (1) and paint along the extruded edges.

Aligning multiple Kinect captures

  1. Open all the files in Meshlab. 
  2. Launch the align tool Edit/Align (yellow circle with black A on the menu bar)
  3. 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.
  4. 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. 5. Merge the aligned meshes into one mesh: Filters>Layer and Attribute Management >Flatten Visible Layers.
  6. 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/