一、背景
谷歌地图(Google Maps)是 Google 公司提供的电子地图服务,包括局部详细的卫星照片。能提供三种视图:一是矢量地图(传统地图),可提供政区和交通以及商业信息;二是不同分辨率的卫星照片(俯视图,跟 Google Earth 上的卫星照片基本一样);三是地形视图,可以用以显示地形和等高线。它的姊妹产品是Google Earth。
谷歌地图作为大家研究与工作中不可或缺的数据来源,用户可以从Google Map获取某些地区建筑物的三维模型数据,接下来我们介绍一下如何使用GoogleMap+renderDoc+Blender来获取较为精细的3d模型。
二、实现
2.1 工具
1)blender+MapsModelsImporter插件
插件地址:https://github.com/eliemichel/MapsModelsImporter/releases

2)renderdoc
下载地址:https://renderdoc.org/builds
笔者使用版本:v1.25
3)chrome
4)科学上网
2.2 操作步骤
1) 打开renderdoc软件,选择菜单栏 file-inject into process,
注意:有些高版本的renderdoc 在file里面没有inject into process,需要用户自己去tool里面配置。
2)关闭所有chrome浏览器,记录一下你刚刚谷歌地图的链接,
a、在cmd中依次运行下面的命令(推荐)
set RENDERDOC_HOOK_EGL=0
“C:\Program Files\Google\Chrome\Application\chrome.exe” --disable-gpu-sandbox --gpu-startup-dialog
如果是32位系统,需要修改上文Program Files 为Program Files(X86)
b、或者修改Chrome 快捷方式的目标:
3)打开谷歌浏览器,会弹出两个页面,一个页面是空白的,一个页面是如下图的进程号页面,先不要点确定:
4)此时切换到renderdoc中,点击refresh,然后双击和弹窗pid一样的进程
可以看到api是none然后其余功能是灰色的
点击chrome弹窗,确定,可以看到api已经获取到了
5)在打开的chrome中输入之前保存好的地图链接,切换到三维模型视角(按住ctrl键+鼠标滑动可以看到深度信息)
选择需要截取的场景:
6)设置capture after display为5s(用户根据反应时间以及网速等条件可以自由设定),这个功能是延迟捕捉(意为几秒之后开始捕捉数据),
点击Tigger after Delay按钮,立刻返回到你的地图界面,等待延迟捕捉时间结束,等待期间可以按住鼠标左键不松开,小幅度拖动所选的目标。(此操作为了使chrome判定你在查看地图细节,从而显示更多模型细节,提高模型精确度)
注意:视角的高低会影响模型精度,视角较低时,谷歌地图会显示建筑较为细节的部分,视角较高时,会模糊部分细节。
7)任务保存
可以看到过5s后,已经有一个任务保存了,将其导出,导出方式为点击红框,会弹出操作菜单,点击save,选择保存路径即可。
在纹理预览里面,可以点击键盘下键,一点点看到纹理重建的过程:
注意:模型一般较大,40M以上一般正常,上图第一个模型只有20M,为保存失败的模型。
8)使用blender对导出的模型进行展示:
注意:导入模型时候,一般模型比较大,需要等待一定时间(加载时间和电脑配置有关)。除此之外,需要把Blender中语言改成英文,否则可能导入模型失败,报错。
9)导出模型
由于导入模型的格式为rdc格式,一般用起来程序处理3d模型的数据格式不相同,所以可以按照用户需求导出为其他常见的三维数据格式,例如obj、ply、fbx等格式。
三、效果及局限性
3.1 效果
纹理模式:
mesh模式:
3.2 局限性:
目前只有美洲部分,欧洲部分,中国港澳台以及日韩等地区有三维图,中国大陆暂无)点击右下角的3D切换到三维模型视角。
参考资料:
https://zhuanlan.zhihu.com/p/552940490?utm_id=0
https://blog.csdn.net/su_huanzhen/article/details/111869609
https://blog.csdn.net/qq_36925475/article/details/110500885