MakerBot models 5486

MakerBot models built with code included with the ModelBuilder library, also downloadable from my Thingiverse account

Update, March 16, 2012: New Modelbuilder build (0020) released, containing minor fixes and some less-than-well documented experimental features (UApp, UAppSketch). Biggest news is the UMovieMaker sub-lib, which provides a replacement for Shiffman’s MovieMaker library that was discontinued for Processing 2.0b.

UMovieMaker is distributed separately from the main Modelbuilder lib and uses the Monte Media Library by Werner Randelshofer. The lib matches MovieMaker’s syntax and provides Quicktime export without dependencies on Apple’s flaky Quicktime for Java. See included examples for typical uses: UMovieMaker-001.

Update, Feb 25, 2012: Modelbuilder is now hosted on Github: https://github.com/mariuswatz/modelbuilder. See the post about the updated README for information abouth Processing 2.0 beta compatibility.

Update, June 21 2012: I have started an OpenProcessing Modelbuilder collection of sketches. Watch that space for new demos or submit your own…

Update, June 14 2012: Revised Modelbuilder-0007a03 with source and new examples now on Github: modelbuilder-v0007a03.zip

Update, May 24 2012: Modelbuilder-0007a03 with complete source and new examples is now on Github: modelbuilder-v0007a03.zip

Update, April 24 2012: Modelbuilder-0007a01 with complete source and new examples is now on Github: https://github.com/mariuswatz/modelbuilder. Download the exportded/modelbuilder-0007a01.zip for the latest version packaged and ready for use in Processing (1.5.1 only…)

Update, July 1 2011: I’ve uploaded ModelBuilder v0004, which fixes a few really silly bugs in 0003. Download it from http://code.google.com/p/codeandform/.

I’m happy to announce the first public release of my new ModelBuilder library, created as part of my artist-in-residence project at MakerBot Industries and beta tested in the Interactive Parametrics workshop. The occasion for today’s release is the MakerBot User Group New York, where I’ll talk about the library and show off my MakerBot models.

ModelBuilder focuses on functions useful for digital fabrication purposes, such as creating meshes, centering models around origin, scaling to given dimensions, output to STL format etc. It emulates Processing’s beginShape / vertex / endShape logic to build mesh geometry which can then be manipulated and transformed.

The UVertexList class allows the user to build paths of vertices. Vertex lists are then fed into various UGeometry.quadStrip() functions to construct quad strip meshes, most likely eliminating the need for dozens of for loops in the process. See the online copy of the ModelBuilder JavaDoc for a more complete overview.

Coders using the library to output models for 3D printing need to be aware of face orientation (see Wikipedia: Handedness) so that face normals are generated correctly.
Always check models to see if face normals are correct before attempting to 3D print them. As always, I recommed the Open Source tool MeshLab for previewing and testing models. MeshLab will render backwards-facing faces as all black, giving an easy preview of incorrect geometry.

Happy mesh building, look forward to seeing models on Thingiverse!

Download

Download modelbuilder-0004.zip and unpack it. Copy the “modelbuilder” folder to your “libraries” folder and restart Processing. If you have the now obsolete unlekkerLib installed you should remove it before adding ModelBuilder, which effectively replaces unlekkerLib.

The ModelBuilder library folder includes (rudimentary) JavaDoc documentation, the library source code and a series of examples located in “modelbuilder/examples”. The most advanced example is mb_04_gui_parametric, which contains the code used to create MakerBot prints shown above. The “gui” examples use Andreas Schlegel’s ControlP5 library, which must be downloaded and installed before running them.

This should be considered an experimental in-progress release and some features are likely to change. As usual, niceties like good documentation have been left for last, so the best way to get a feel for the library is to run through the examples provided. Bug and / or success reports are welcome, just leave comments on this post.