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.
The current iteration of the project is still skeletal, awaiting linking of all the parts and a useful skin (UI/UX) over it all.
(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
(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.