Google Earth Toolkit
Purpose:
Find a way to capture 3d data from Google Earth, download it, translate it and import it into a 3D application. Making the whole process simple and straight forward for an artist to use.
Real world Example:
An engineering company was contracted to update a major highway and needed to show their proposed changes to the city. The presentation needed 3D renders of the new highway as well as the surrounding area for context. There wasn’t a lot of time to model everything out 3D, even though the new highway and connecting surface streets were already designed and modeled in 3D. What was needed was for a way to show the surrounding area, that didn’t need to be super detailed and integrate that with the new highway proposal.
Normally an artist would capture the satellite aerial and then download some openstreetmap proxy models (box shapes) for the buildings. This would work most of the time, but for a presentation like this, more detail was needed.
For an visualization artist using information like Google Earth Pro to quickly get measurements of buildings and general distances is a normal day to day routine. But what if you could actually use the Google Earth 3D models themselves.
Research:
I set out to see if there wasn’t something already done (no need to re-event right?) I discovered a few opensource projects that provide a way to capture and download the raw data. Though processing that data, importing it into a 3D application (in a workable state) and making the whole process artist friendly is a completely different matter.
Both of these projects have pros and cons to them. The earth-reverse-engineering has the most promise and uses the java programming language as a way to process the data. This does pose a small problem considering most 3D Animation software uses either a custom scripting language or supports Python. Another issue with most of these projects is they require some sort of basic programming knowledge to setup and install and require dozen or so steps to produce a workable result.
Executed:
I decided to use the earth-reverse-engineering project as a base for my Google Earth toolkit. Additional adjustments were made to the core project in order for it to work with python and additional features were added to give the artist more control. I also organized the code in such a way where this toolkit could be reused in multiple animation packages.
Toolkit currently works in:
I did explore the idea of adding a Sketchup extension, but later abandoned the idea since Sketchup doesn’t handle heavy geometry and hundreds of textures very well.
For the toolkit’s GUI, I used QtCreator and Python. Python is also used to launch and process the data for each software package. Additional python libraries were also used: pyside2, numpy, pillow, and protobuf. These libraries are needed for the GUI itself, normalizing the model data, converting textures, and downloading and processing the google raw data.
Quick Run down:
- Mode / BoundingBox and LatLong: Allows bounding box information of an area to capture or a single longitude and latitude point.
- Octant Level: 20 is the highest amount of detail generally, but there is also a built in function to find what the highest level that is available for that area.
- Download Directory: File directory to download and process the data.
- Importing Models:
- Split Model by Objects and Groups: A lot of the Google Earth data is split up into sections (or quadrants), this option creates an individual 3d object per section. Very handy when working on small sections from a large capture.
- Convert BMP to Jpegs: All texture data is downloaded as BMP images, most 3D Applications kind of support these kind of images until you get to rendering part. This option converts them automatically to jpegs and switches them out on the material side.
- Smooth Groups: Some applications have this option when importing the model data. The result doesn’t always look good.
- Model Cleanup: Additional model and texture cleanup (application specific). Currently only Maya has this functionality.
How to use:
- Step 1:
Navigate to the following website. http://bboxfinder.com. Use the box controls on the left hand side and draw a marquee box around the area that you want to download and capture. Switch to Lat/ Long on the lower screen right side. Copy the coordinates text from the marquee area (screen left). See image for reference.
- Step 2:
Launch the GUI and paste the coordinates in the bounding box area.
- Step 3:
Click on “Find Highest Octant”, to figure out what the highest Octant level is available for that area.
- Step 4:
Set the file location.
- Step 5:
Set any additional options.
- Step 6:
Click on Process!
Tags: blenderdevpython