Get real, active and permanent YouTube subscribers
Get Free YouTube Subscribers, Views and Likes

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

Follow
Sanning Arkitekter

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 Zbuffer 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/MapsMod...

Maps Models Importer 0.4.0:
https://github.com/eliemichel/MapsMod...

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/10819...


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

set RENDERDOC_HOOK_EGL=0
"C:\Program Files\Google\Chrome\Application\chrome.exe" disablegpusandbox gpustartupdialog


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

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://incompetech.filmmusic.io/song...
License: https://filmmusic.io/standardlicense

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 noncommercially, 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/brandresourcec...

posted by liberaderir