建筑模型制作流程
一、前期准备
1、软件工具
(1) QGIS:本文档基于3.18 编写
(2) Blender:本文档基于3.1.0 编写
(3) BlenderGIS:为Blender 插件,下载地址 (安装 BlenderGIS 方法自行百度)
2、数据要求
(1) 数据格式:ESRI Shapefile
(2) 坐标系:WGS84 WebMercator(EPSG: 3857)
(3) 数据类型:面数据
(4) 数据属性:必须含有建筑高度的属性,属性名必须为英文
3、数据预处理【可选】
(1) 如建筑数据较多,可选择通过属性过滤切分成多个文件;
(2) 尽量预先删除无geometry 的数据,在QGIS 中选用工具【Remove null geometries】,选择对应图层,勾选【Also remove empty geometries】

(3)对建筑数据中存在的孔洞可进行处理,在QGIS 中选用【Delete holes】,选择对应图层,设定需要删除孔洞的最大面积,默认值"0"即删除所有孔洞。

4、Blender 环境准备
(1)删除场景默认内容:空白处点击-【A】-【Delete】

(2)设置场景相机:【N】-【View】-扩大"End"数值,以防场景中物体无法全部显示。

(3)切换渲染模式:默认为第二种"实体模式显示",加上贴图后,可切换至"材质预览模式显示"。

二、模型构建流程
1、自动生成模型
(1)导入 shp 文件
【GIS】-【Import】-【Shapefile】,选择本地的shp 文件,确认导入。

(2)设置构建参数
在"Import SHP"对话框中,勾选【Extrusion from field】,"Field"选择建筑高度 对应的属性;"CRS"选择【Web Mercator】,点击【OK】,将自动构建建筑模型。

2、处理模型孔洞
(1)选择孔洞顶面
i. 选择编辑模式,选择面拾取

ii. 在模型上点选孔洞的顶面,如下图:

(2)选取所有孔洞顶面
【Select】-【Select Similar】-【Normal】

(3)选取孔洞模型
i. 【Select】-【Select Linked】-【Linked】

ii. 【Mesh】-【Normals】-【Flip】

iii. 【Mesh】-【Separate】-【Selection】,会完成孔洞模型分离,名称为"XXXX.001"


(4)去除孔洞模型
i. 保持"XXXX.001"选中状态,然后切换到【Object Mode】,在模型显示区域右击,【Set Origin】-【Origin to 3D Cursor】


ii. 切换到缩放模式,沿着z 轴向上拉伸(蓝轴)

iii. 在大纲视图中,选中自动生成的模型,点击【Modifier Properties】-【Add Modifier】-【Boolean】

iv. "Object"选择孔洞模型"XXXX.001",【Apply】,此时已完成孔洞处理。

v. 在大纲视图中,右击"XXXX.001",选择【Delete】,删除"XXXX.001",仅保留需要的建筑模型。


3、处理顶部材质
(1)创建顶部材质
i. 保持建筑模型选中状态,点击【Material Properties】-【+】-【New】

ii. 设置建筑顶部材质名称,设置为【Material_TOP】

(2)应用顶部材质
i. 切换到编辑模式,进入面选择模式,单击选择某一个建筑顶面,然后通过【Select】-【Select Similar】-【Normal】选择所有建筑顶面。

ii. 点击【Assign】,将材质应用到建筑顶面

4、处理墙体材质
(1)创建墙体材质
i. 点击【Material Properties 】中的【+ 】-【New】,设置墙体材质名称【Material_WALL】(材质名称中必须带WALL)

ii. 调整为着色器编辑模式,选择【Shader Editor】

iii.将本地图片(wall1.png)拖入窗口中,形成节点,将此节点输出的【Color】连接到【Base Color】

(2)应用墙体材质
i. 切换回3D 视图,选择【3D Viewport】

ii. 延续步骤3中,处于选择顶面的状态,【Select】-【Invert】,通过反选,选中所有建筑墙体。

iii. 点击【Assign】,将材质应用到建筑墙体

iv. 进行墙体UV 设置,【UV】-【Reset】

5、调整模型原点
i. 退出编辑模式,回到【Object Mode】
ii. 在模型显示区域右击,【Set Origin】-【Origin to 3D Cursor】

6、导出模型
i. 【File】-【Export】-【glTF 2.0 (.glb/.gltf)】

ii. 如果仅导出选中的图层,则勾选【Selected Objects】

7、多份数据处理
如果有多个数据,添加过程重复步骤1-6,其中创建材质时,复用之前创建的材质,操作如下:

8、原点查看
提供给前端时需要知道模型的中心点,点击【Scene Properties】 -【Custom Properties】,查看"longitude"和"latitude"值。
