Skip to content

BlenderGIS: Vector to 3DModel

Tried different approaches to display vector files in CesiumJS, this is the one with less burden to Browser.

Preprocessing vector files

BlenderGIS 中导入的矢量数据不宜为经纬度坐标系,必须为单位为 m 的投影坐标系。一般推荐使用 CGCS2000 下的 3 度带高斯-克鲁格投影坐标系。

现存的 shp 矢量文件如存在坐标系为经纬度坐标系或墨卡托投影坐标系,以及其他与需要导入 BlenderGIS 的坐标系不一样的问题,可以在 QGIS 中将矢量文件坐标系转换后再导入 Blender。

将 shp 矢量模型文件导入 QGIS,可以通过简单的几种方式处理 shp 矢量文件并转换坐标系。

单个矢量文件直接转换

将 shp 矢量文件载入 QGIS,导出时选择目标坐标系即可。为了方便可以在右下角将项目坐标系设置成需要的目标坐标系。 alt textalt text

存在多个 shp 矢量文件需要同时转换坐标系并导出

可以安装 bulkvectoreexport 插件。在 QGIS 顶部,Plugins→Manage and Install Plugins 搜索安装。

安装完成后,同上,先设置需要的项目坐标系,再使用插件导出,注意选择 Project CRS。

DANGER

如果需要导出多个 shp 文件,每个文件图层名字不能一样,如果名字一样就会互相覆盖,只保留一个图层。

alt textalt text

需要处理 shp 矢量模型集合再导出

如果后期在 blender 中处理时需要选择 Separate objects,但又害怕模型集合数量太大 blender 崩掉,可以使用 dissolve(消融)来处理 shp 矢量文件,使模型集合中的数量减少。

在 Processing Toolbox 中搜索”dissolve“,根据属性来消融 shp 矢量文件。(可以提前在属性表中处理好属性)

dissolve 完成后,同上,先转换坐标系,选择需要导出的 shp 矢量文件导出即可。 alt text

Invalid Feature

Input layer options 中要选择 Do not filter,否则处理中出现错误时会中断。 alt textalt text

Installing BlenderGIS

GitHub - domlysz/BlenderGIS中下载 blenderGIS 压缩包,不用解压,在 Blender 中找到编辑->偏好设置->插件,安装即可。 alt text

Importing shapefiles

完成安装 BlenderGIS 后,在 Blender 中找到 GIS,导入(import)shp 矢量文件。 alt textalt text

Scene Georeferencing

第一次导入模型时没有下方的 Scene georeferencing 选项。会初始化一个项目原点,一般在导入的矢量文件的中心位置,并且会(通过 EPSG.io 的接口)转换到 EPSG:4326 的经纬度坐标,这个原点可以修改,但修改后需要删除之前导入的模型重新导入。

之后导入时在 Scene georeferencing 中就可以看到场景使用的参考坐标系,以及原点(Geo 是 WGS84 坐标系下场景原点的坐标,Proj 是选择的 CRS 投影坐标系下场景原点的坐标)。点击右上角可以删除重新生成(但之前导入的模型不会跟随改动移动)

建议同一个项目的模型使用同一个原点,可以通过在同一个 blend 项目中导入 shp 实现,在需要拆分 blend 文件时建议复制原项目,删除内部图形后再导入。

Altering materials, modifiers and more.

修改材质:

选中需要修改材质的物体,点击材质属性,新建材质,即可 diy 需要的材质。 alt text

已创建的材质在同一个项目中会自动保存,方便后期需要用同样材质的时候可以找到。 alt text

复制相同材质到多个模型上:

选择需要同一材质的多个模型中其中的一个,同上修改材质,修改完单个模型的材质后,选中已修改材质的模型和需要修改相同材质的剩余模型->Ctrl+L->关联材质即可。 alt text

添加修改器:

选中需要添加修改器的物体,点击修改器,添加修改器即可。 alt text 在该项目中主要添加的修改器是“实体化”(modify),目的是避免模型只有单面才看得到这种情况发生。

复制相同修改器到多个模型上:

选择需要同一修改器的多个模型中其中的一个,同上添加修改器,单个模型添加修改器后,选中已添加修改器的模型和需要添加相同修改器的剩余模型->Ctrl+L->复制修改器即可。

其他:

  • 线 → 柱体的办法:
    参考百度经验:在 blender2.92 中把线转为柱体怎么做
    理论上可以通过选中已转化柱体的模型和需要转化柱体的剩余模型->Ctrl+L→ 关联物体数据,将多个模型同时转化为柱体,但是这样容易把已转化柱体的全部模型数据同步到需要转化柱体的剩余模型上,导致位置发生变动,所以一般在最后一步(增加倒角深度),选中剩余需要修改的模型一个个手动修改。
    有待补充~

Output model files

文件->导出->FBX 文件,选择 Y 轴向前,Z 轴向上再导出。 alt textalt text

Credit @Wayne19980