用于CFD的国内3D城市模型获取方法

摘要

直接获取指定城市3D模型的方法至少有以下几种,方法不同模型尺寸,外观精度不同:

1.Blender3.3+BlenderGIS【blender插件】 + [ TOPOgraphy获取高程(VPN)]

#评价是楼宇尺寸,外观精度低;

2.Cadmapper

#国内大规模建筑群信息少,免费的只有一平方公里,国内建筑群完整性低于百度地图;

3.Renderdoc19.0耦合chrome(修改属性)+blender3.1+Mapsmodelimporter【blender插件】;

#由于Mapsmodelimporter是专为Googleearth设计的,所以此方法只能用于爬取Googleearth地图模型;Google_earth 缺少部分欧洲国家,大部分中东国家,以及我国大陆的建筑;

#或许需要高速VPN才能实现个人抓取到教程中那么精细的模型,需要配合3D模型编辑软件修缮才能用于CFD(但是我没有编辑成功过);

4.Renderdoc任意版本耦合微软Edge浏览器(修改属性)+百度地图(任意看得出SD建筑的地图)+CSVConverter;

#能够获取百度地图中的3D城市建筑群,模型比较适合于CFD计算,但是需要手动把瓦片拼接起来;

正文

由于前三种B站,知乎,CSDN上可以找到教程,这里只介绍第四种

第四种需要用到Renderdoc(19.0测试可行),CSVConverter 两个软件

第四种实际上是对第三种的本土化,目的是获得百度地图上的国内模型,所以renderdoc和浏览器的耦合工作和第三种操作相同,方法可参照以下链接

Google地图3D城市模型下载最新实践_Apple_Coco的博客-CSDN博客_谷歌地图下载模型

Release Maps Models Importer v0.5.0 · eliemichel/MapsModelsImporter · GitHub

以下是第四种方法从renderdoc(19.0)与Chrome耦合到爬取成功第一个百度地图模型的流程:

1.下载最新的Chrome后,打开属性,用这行字符串覆盖原来“目标”中的内容:

C:\Windows\System32\cmd.exe /c "SET RENDERDOC_HOOK_EGL=0 && START "" ^"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe^" --disable-gpu-sandbox --gpu-startup-dialog"

用于CFD的国内3D城市模型获取方法_第1张图片

2.然后利用以下两篇文章学习renderdoc截帧方法,并安装CSV转换软件

吴彦祖的祖https://zhuanlan.zhihu.com/p/428655330

童广https://zhuanlan.zhihu.com/p/80704313

3.将上述方法应用于爬取百度地图模型

(1)打开Chrome,看到小窗号码,先点击确定

用于CFD的国内3D城市模型获取方法_第2张图片

 (2)打开renderdoc19.0 ,点击File,点击inject into process,进入inject into process界面,并在Filter process 框中输入chrome的小窗中的数字7316

用于CFD的国内3D城市模型获取方法_第3张图片

 如果没有出现chrome.exe那行就点击refresh

 (3)然后点中chrome.exe那行使他变蓝色,然后点击inject【注意!inject前一定不要有已经打开的chrome浏览器,否则会Inject失败,要确保(1)是打开的第一个chrome浏览器页面】

用于CFD的国内3D城市模型获取方法_第4张图片

(4)点击inject后出现如下界面,然后再点击小窗的确定

用于CFD的国内3D城市模型获取方法_第5张图片

用于CFD的国内3D城市模型获取方法_第6张图片

点击确定后chrome界面中就出现画面了,如果左上角出现了蓝线标记的内容说明可以进行后续截帧了

用于CFD的国内3D城市模型获取方法_第7张图片

(5)搜索进入百度地图,我们以香港金紫荆广场建筑群(百度地图上少见的精细建筑群)为例

 用于CFD的国内3D城市模型获取方法_第8张图片

 看到金紫荆广场建筑群后,鼠标滚轮调整页面大小,截取到的内容由看到的决定(会比我们看到的范围略大)

(6)用renderdoc截取所见画面

根据上述步骤后renderdoc应该进入了这个界面

用于CFD的国内3D城市模型获取方法_第9张图片

我们把延迟截取时间调成5s,然后点击Capture After Delay,然后迅速转到金紫荆广场界面,用鼠标拖拽抖动画面,5s后renderdoc中就有我们的截取结果了。

抖动画面演示

(7)然后双击截取结果,加载出左栏目信息

用于CFD的国内3D城市模型获取方法_第10张图片

(8)左栏中找到3D建筑群碎片,并导出CSV文件

以我抓取到的为例,建筑的碎片信息在Colour Pass #1 中,我们需要点击其中子项,在Texture Viewer或mesh Viewer中观察碎片是否是建筑模型

用于CFD的国内3D城市模型获取方法_第11张图片

 这里我找到DrawIndexed(2979)是香港会展中心,我们以这个碎片为例演示如何从renderdoc中导出建筑的CSV文件然后用CSVconverter转换为格式的模型。用于CFD的国内3D城市模型获取方法_第12张图片用于CFD的国内3D城市模型获取方法_第13张图片

 在meshviewer中的如下框中点击右键后点击Export to csv

用于CFD的国内3D城市模型获取方法_第14张图片

 (9)然后我们利用在前面提到的文章中下载的CSVConverter将香港会展中心的CSV文件转换成OBJ格式的文件

用于CFD的国内3D城市模型获取方法_第15张图片

用于CFD的国内3D城市模型获取方法_第16张图片

其他参数选择如下(更详细的描述可见吴彦祖的祖)

用于CFD的国内3D城市模型获取方法_第17张图片

然后我们可以在CSV文件所在目录中看到转换成功的obj文件,我们把他导入到paraview里面看看

用于CFD的国内3D城市模型获取方法_第18张图片

看上去还是很不错的

用于CFD的国内3D城市模型获取方法_第19张图片 如果希望获取STL格式的,可以导入rhino中进行转换

(10) 获取整个紫荆广场画面中的模型

目前我采用的方法就是把所有obj格式的碎片在rhino中根据他们的位置手动拼接起来,这个拼接过程就像拼图一样,(碎片的边缘可以发现拼接线索,所以在rhino中手动拼接这些碎片并不难)

我拼接的结果如下

用于CFD的国内3D城市模型获取方法_第20张图片

你可能感兴趣的:(chrome,前端)