John Mars

28 Apr 2015

ibldi by @john_a_mars is a web app that creates customizable 3D printed models of urban areas.

Using extracted 3D tiles, i.e., buildings, textures, and terrains, from Here.com née Nokia Maps, ibldi is a webapp that allows users to select custom areas within cities (or anywhere that has 3D data available), and have them printed via Shapeways.

There are two competitors in this general area, Terrafab and The Terrainator, but both of them are focused on terrain instead of buildings.

The current iteration of the project is still skeletal, awaiting linking of all the parts and a useful skin (UI/UX) over it all.

Focus Areas:

  • (COMPLETE) Scrape 3D tiles of various cities

    All of the tiles were downloaded via a python script leveraging the Nokia Maps scraper migurski/NokiaWebGL (with improvements to make better OBJ files).

  • (COMPLETE) Creating a web application capable of 3D visualization and API calls

    The backend of the website is running on Node.js with Express as the web framework. Visualization and all mesh editing is done with Three.js.

  • (COMPLETE) Integrating with the Shapeways API

    Shapeways has graciously provided a Node.js wrapper for their API, but neglected to provide any meaningful documentation to its intricacies.

  • (COMPLETE) Creating manifold meshes from the city tiles

    The downloaded tiles are only single surfaces, and they’re fairly messy at that. In order for a model to be 3D-printable, it needs to be manifold, or watertight, i.e., there single surfaces and groups of surfaces are not allowed.

    I eventually ended up finding the edges of the tiles (via vertex hashing and a transversal algorithm), duplicated the edge so all points had a z-height of 0, then triangulated the vertices and made faces.

    This was by far the biggest problem/time-sink of the entire project.

  • Creating the X3D file format required for printing in color

    As has been a running issue throughout the project, keeping individual vertices and faces matched up with uv-coordinates for textures proves a challenge. I’ve been working with OBJ file formats for the length of the project, thanks to their ubiquity and ease-of-use/creation, but Shapeways will only accept VRML or its successor X3D for color prints.

  • Merging it all together

    All (well, most) of the parts work on their own, but the pipeline connecting them all together needs to be finished.

  • Making it work well and look good

    The front end of the website needs to be designed and developed.