Skip to content

Tutorial - How to export 3D photogrammetry meshes from Google Maps

Tutorial - How to export 3D photogrammetry meshes from Google Maps from Sanning Arkitekter on YouTube.

Description

Map data ©2021 Google, Map data ©2021 CNES / Airbus, Maxar Technologies, Kartdata ©2021

This tutorial introduces a workflow to extract Google Maps 3D photogrammetry meshes with RenderDoc, made by Baldur Karlsson, and import them into Blender with the Maps Models Importer plugin, made by Élie Michel. The tutorial also covers how to clean up the imported mesh, UV unwrap it in MeshLab, and baking a projected texture from the multiple original textures. It also very briefly covers exporting the optimized mesh and importing it into Rhino.

This workflow is only compatible with Windows, and is computationally intensive, proportionate to the amount of data you extract.

Timestamps: 0:00 Adhere to copyright laws 0:39 Different map areas have different resolution 1:24 Software requirements 2:56 Starting RenderDoc, and initializing the Injection 3:10 Starting Google Chrome via command prompt 4:11 Injecting into the Process ID for the Google Chrome GPU process 6:05 Level of Detail (LOD) depends on camera zoom 7:11 What you see is what you will get 7:57 Manipulating the rendering of higher level of detail 11:33 Beware of too big data captures 11:57 Capturing the photogrammetry mesh data with RenderDoc 13:02 Evaluating the amount of data captured based on the file size of the capture 13:48 Save the capture as a .rdc file 14:04 Make sure to release the injection 14:35 Make sure that the Maps Models Importer plugin is active in the Blender preferences 14:49 Importing the .rdc file 16:55 Processing times can be excruciatingly long 18:21 Reducing the complexity of the imported model 21:18 Reducing the number of material slots, by baking to one texture 23:07 Duplicating the mesh and assigning separate collections 24:00 Removing all material slots of the duplicate 24:55 Exporting the duplicate mesh and unwrap it in MeshLab 27:45 Exporting the unwrapped mesh from MeshLab 28:57 Z-buffer fighting is expected 29:36 Verifying the unwrapped UV map imported from MeshLab 30:23 Creating a texture to project onto 32:20 Configuring settings for the texture baking process 34:28 Baking the projected texture 34:47 Noticing erroneous results due to inadequate projection settings 35:14 Rebaking with Extrusion setting active 35:58 Noticing erroneous results due to insufficient margin 36:28 Connecting the baked texture to the single material 37:06 Disconnecting the texture node again, and rebaking with increased margin 38:13 Noticing erroneous results due to excessive Extrusion distance 38:55 Decreasing the Extrusion distance and rebaking 39:43 Further decreasing the Extrusion distance and rebaking 40:57 Evaluating the results 43:24 Considerations to improve the resolution of the texture 44:47 Increasing the texture resolution, and rebaking 46:45 Evaluating the result of the final baking settings 47:11 Saving the baked image texture 49:47 Testing the result by exporting the refined mesh as an OBJ 52:24 Evaluating the mesh results in Rhino 53:00 Creating a material to render the baked texture 56:06 Reminder of fair use of copyrighted data 57:04 Showcase of Benjamin Bardou's experiments

Links:

Blender 2.93: https://www.blender.org/download/lts/

Maps Models Importer: https://github.com/eliemichel/MapsModelsImporter

Maps Models Importer 0.4.0: https://github.com/eliemichel/MapsModelsImporter/releases/tag/v0.4.0

RenderDoc 1.13: https://renderdoc.org/builds

Google Maps: https://www.google.com/maps/

MeshLab: https://www.meshlab.net/

Benjamin Bardou, Grey Cities: https://www.behance.net/gallery/108199983/Grey-Cities

Copy and paste these two lines into a command prompt and execute to start Chrome in injection-compatible mode – if you intend to use the 32-bit Chrome application instead of the 64-bit one, change 'Program Files\' to 'Program Files (x86)\':

set RENDERDOC_HOOK_EGL=0 "C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-gpu-sandbox --gpu-startup-dialog

Python script to remove all material slots for selected object in Blender:

python import bpy for ob in bpy.context.selected_editable_objects: ob.active_material_index = 0 for i in range(len(ob.material_slots)): bpy.ops.object.material_slot_remove({'object': ob})

Song of the Volga Boatmen by Kevin MacLeod Link: https://filmmusic.io/song/4394-song-of-the-volga-boatmen License: https://filmmusic.io/standard-license

The Google Maps 3D photogrammetry meshes are copyrighted by both the publisher, Google, and the creators of the data, CNES/Airbus, Maxar Technologies, Kartdata, and others (depending on map location). Do not use the workflow described here in any way, commercially or non-commercially, which disrespects the copyrighted status of the data. Any private usage should adhere to your sense of copyright fair use, and be attributed properly, as described in the Google Maps general guidelines: https://about.google/brand-resource-center/products-and-services/geo-guidelines/