Foreword
之前一直以为,各种地图API可以直接拿到建筑的轮廓和高度等信息,从而可以自己直接利用这些信息来自动生成地图,后来发现根本不行,各家地图都不提供类似的API。目前有两种解决方案,但都比较麻烦,而且整体性不够高。
CADMAPPER
https://cadmapper.com/
可以通过这个网站,在1平方千米内获取模型信息免费
可以转换成AutoCAD或者SketchUp、Rhino 5等格式,然后再通过他们转换成OBJ或者FBX给到Maya等软件。
https://www.bilibili.com/video/BV1FQ4y1S7Fa/?spm_id_from=333.788.recommend_more_video.1&vd_source=fe2e37e9c6518671631012d39f18a581
这种模式有点问题,有些区域拿到的基本都是平面图了,高度信息是不足的,也有可能是不准确的的,所以实用度不是很高
Maps Models Importer
https://github.com/eliemichel/MapsModelsImporter
这是一个开源项目,通过提取Google地图中的模型信息,导出给Blender,然后再由Blender转成其他格式再使用。
大致原理是通过Inject到chrome的gpu进程中,然后直接获取gpu绘制时的输入数据,然后将这些数据导出成特定的格式,再进入blender中进行还原。
准备
首先需要4个东西
- chrome
- blender
- RenderDoc
- MapsModelsImporter
MapsModelsImporter每个发布版本会有具体的版本说明
RenderDoc
RenderDoc 需要开启注入选项
然后重启一下程序,Inject into Process
就出现了
blender
blender这里需要安装MapsModelsImporter插件
选择刚下载的MapsModelsImporter-v0.5.0-rc1.zip
然后使能插件
使用
以管理员权限启动RenderDoc,选择注入
进程过滤chrome
关闭所有chrome,并且右下角也确保退出了,然后使用管理员权限打开运行下面的命令,以调试模式启动chrome
set RENDERDOC_HOOK_EGL=0
"C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-gpu-sandbox --gpu-startup-dialog
或者下面的是x86的chrome启动
set RENDERDOC_HOOK_EGL=0
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-gpu-sandbox --gpu-startup-dialog
启动以后,会有一个弹窗提示 Chrome GPU使用的进程ID是什么,先别点击确定。
在RenderDoc中先Refresh
,然后勾选Google Chrome Gpu
,接着Inject
就会自动切换到捕获界面
再回到Chrome,点击确定,chrome左上角会有debug信息,说明启动成功
打开谷歌地图,切换到卫星地图,缩放到合适大小
https://www.google.com.hk/maps
稍微设置一点采集延迟,然后点击Capture After Delay
,切到chrome中的地图界面
稍等一下,采集以后会有一个 1 Captures saved.
提示
在RenderDoc中就能看到采集的数据了,然后右键保存即可。
进入blender,在导入刚才的保存的rdc文件
导入过程可能会卡好一会,稍等即可
就能看到正确的模型了,再转成OBJ或者FBX即可,同时模型的贴图什么的也都是有的
测试
建模
可以正确拿到建筑模型的,必须是在google地图中,可以通过旋转看到正确3D模型的,对于无法旋转查看的,基本都是没有建模的地方。
以下位置就是没有3D模式的地图,旋转以后,视角显示都是错误的
和深圳毗邻的香港就有完全的建模显示,而深圳基本就全没有。
没有建模的地方,就会显示成这样的平面或者直接显示不出来
精细程度
对于模型的精细程度,不能要求太高,可以看到埃菲尔铁塔附件的很多花花草草,基本上都是一些不规则的多边形。
谷歌地图本身能看的3D地图,也能看到实际的贴图存在各种扭曲、模糊等等情况,质量本身也不是很好。
Summary
所以想要一键高清地图,还是必须得有对应的轮廓数据和高度数据,否则这种自动建模,意义不是很大,很多的地方基本都用不了,这种粗模还不如手动拉box呢
Quote
https://www.bilibili.com/video/BV1FQ4y1S7Fa/?spm_id_from=333.788.recommend_more_video.1&vd_source=fe2e37e9c6518671631012d39f18a581
https://www.youtube.com/watch?v=L8zuEJ0ADuQ&ab_channel=FreedomArts-3DAnimation%26GameDeveloper
https://www.youtube.com/watch?v=zjoRl1NZkgw&ab_channel=AshishJha