We brainstormed for about ten minutes over a game of pool to come up with the idea. The thought process went a little something like, "I kinda want to make something with the google maps API" "Neat. I kinda want to do something with 3D printers" "Tubular, bro. Let's make a way for people to easily print geological topographies and buildings." "Gnarly, homeslice."
What it does
So, that's what we did. Affectionately dubbed Print Your City!
Print Your City allows a user to pick any location on the world and fly around a 3D model environment of that location based on Google's Maps location data.
You can then modify the size of buildings and turn individual buildings on and off to make a "caricature" of the city featuring prominent buildings.
How I built it
The building model and topography data is retrieved from Google's Maps SDK for Unity. The user interface is implemented in Unity. Several scipts in Unity export the surface models.
The Python packages trimesh and vtk were used for post-processing the models to merge the buildings and terrain and add a flat base to enable 3D printing.
Challenges I ran into
Within a few hours we were using Google's SDK and Unity to fly around in different locations. Unfortunately Unity does not have a native, easy method for exporting the building geometry and terrain data together. A majority of our time was then dedicated to creating a single printable file with all of the building models and terrain.
Accomplishments that I'm proud of
We both worked extensively figuring out a solution to correcting the positions of exported terrain. The terrain is provided in tiles, and upon exporting, the tiles need to be aligned to ensure a seamless plane for 3D printing. Aside from the inner workings of the program, I quite like the ability to adjust building size. I think it's a great way of making a stylized print of a city with all of it's most-known features scaled to reflect their larger-than-life reputations.
What I learned
Neither of us had much experience using unity at all. In fact, it was Jackson's first time. We also had never used the maps API before, or had much experience with using 3D meshes programmatically in general. The project has been a great opportunity to learn all of these, and definitely worth whatever snags and headaches we ran into.
What's next for Print Your City!
We'd love to see a number of improvements to the program. Some of these include individual building editing, exposing more export options to the user, speed optimization, and gcode generation.