This week assignment: 3D Printing & Scanning.
1- For the 3d Printing part i wrote a script to generate triply periodic minimal surfaces thorugh a set of equations that describes those surfaces. I wrote an implementation of the Marching -cubes algorithm in Rhino 5 (Python) to generate the meshes for 3d printing.
The algorithm worked very well with a wide range of equations to describe many of this surfaces (Schoen, Schwarz, etc) or for example, metaballs. The performance Of the algorithm is very slow basically because i use the brute force algorithm for polygonizing the scalar field.
Finally i choose the Gyroid Surface for 3d printing. The gyroid is a surface that has no planes of symmetry and no embedded straight lines. I think is the perfect example of an object that can be produced only by 3d printing.
2- For the 3d scanning part i decided to play with a kinect sensor trying to implement again the marching cubes algorithm. I used processing with OpenNI libraries to get the point cloud. Then i imported the point cloud to rhino evaluating every point to reconstruct the surface.
I use of the examples provided by the openni Library for processing as a template to implement the marching cubes algorithm, but after a couple of failed attempts (kinect was freezing after 10 seconds), i decided to export only the points and use my marching cubes algorithm.
The algorithm worked really slow because of the parameters to achieve an acceptable resolution for the 3d model. I choose a 512x512x512 voxels
resolution. each reconstruction took about 3.5 minutes.Possible improvements for 3d scanning:
- Improve the algorithm so it can run faster (maybe try marching tetrahedrons).
- Work in a processing or Openframeworks version that doesn't crash (move to windows because i found that OPENKINECT , OPENNI libraries and the kinect sensor has problems with mountain lion).
-For 3d Printing , try other machines (maker bot , zcorp, nylon 3d printer, to compare results).