blender建模系列——借助blenderGIS插件生成地形模型

我的建模生涯起始于一个项目的地形建模,之前学习ArcEngine,学了两个月没有用上。去了广州实习,回来之后,因为缺人所以要做建模,那就做。

模型的原始数据是一份DEM格式的数据,在Arcmap里面打开平平无奇,在之前的文章里面,我也对地形数据如何处理到blender里面进行了说明,本篇文章着重介绍如何在blender里面进行建模的操作。对地形数据如何处理成为tif,进入blender不熟悉的可以看我之前的文章《地形数据建模-将地形数据导入blender》。

首先,要想在blender里面导入tif格式的DEM,就要安装一个插件blenderGIS,这个插件可以从百度上找到资源,接着在blender里面设置中找到偏好设置,在插件的压缩包路径下安装插件就行了。

注意:不用解压,直接点击压缩包就能安装。

完成安装之后就可以在blender软件的工具栏找到一个GIS选项,就可以开始地形数据的导入了。

这里需要注意一个坑,安装的blender版本尽量不要选择最新的,要选择2.83版本,这个在官网可以找到相应的版本,Blender 2.83 LTS — blender.org我曾经安装过最新的版本,发现在进行一些操作的时候出现其他问题。

之后就是将tif数据导入到blender里面了,接下来就说将tif的格式参数设置成指定的参数DEM as displacement…,选择SubSurf就行了。

这里需要注意的是导入的tif要是经过QGIS 处理过的转换过坐标系的tif,要不然会出现一张平面或者上下不一的形状。就像这样:

如果不知道怎么在QGIS 中转换tif坐标系为指定的格式可以参考我前面的文章《地形数据建模-将地形数据导入blender》。一切顺利的话,你会得到类似于下图的形状,这就是DEM经过层层操作转换成功导入进入blender了:

之后你会发现在物体模式下这个tif是个地形模型,切换到编辑模式就会变成一个平面,这是因为还没有对物体的表面细分和置换的修改器进行修改,修改之后就可以在编辑们模式下对地形模型的点线面进行操作了。

首先要选中物体,找到修改器,接着在置换修改器下,可以调节模型形变的强度,简单的说就是拉伸模型,具体拉伸强度看你需求。

接着点击置换修改器的编辑状态可用,这时候切换到编辑模式,地形模型就不会是一个平面了,不过这时候的地形模型依然不能进行点线面的编辑,需要把修改器固定下来。

在修改器中我们需要点击应用,把修改器的参数在模型上固定下来,之后在编辑模式下就可以进行模型点线面的修改了。这里同样需要注意的是必须要先点击表面细分的修改器的应用,再点击置换修改器的应用,要不然修改器的效果还是不能永久应用到模型上。

最后,整个的地形模型就变成了blender里面可以编辑的点线面格式的模型。

至此,模型从插件的安装到数据的导入,再到数据如何经过修改器变成可以编辑的点线面的地形模型,这样的一整个流程就全部走通了。

版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。

### 使用Blender自动生成城市模型 #### 安装必要的插件 为了能够顺利处理地理信息系统(GIS)数据并生成城市模型,在Blender中需要安装特定的插件来支持SHAP文件和其他GIS格式的数据导入。例如,`BlenderGIS` 插件可以用来加载来自不同源的地图和矢量数据[^2]。 ```bash # 打开Blender偏好设置 -> 添加-ons -> 安装... 并选择下载好的BlenderGIS.zip文件完成安装。 ``` #### 导入地理空间数据 一旦安装好所需的插件之后,就可以通过它来读取.shp等类型的地理信息系统的文件了。这一步骤对于构建基于真实世界位置的城市布局至关重要。 ```python import bpy bpy.ops.importgis.shapefile(filepath="path_to_your_file.shp") ``` #### 创建或调整城市结构 利用上述方法获取到的基础地形以及建筑物轮廓后,可以根据需求进一步编辑和完善城市的细节部分。如果希望自动化这一过程,则可以通过编写Python脚本来实现更复杂的操作,比如批量创建多层住宅楼或是商业区内的高楼大厦。 ```python for obj in bpy.context.selected_objects: # 对每一个选中的对象执行某些变换或其他建模命令... pass ``` #### 解决大尺寸模型偏移问题 当面对较大范围内的场景时,可能会遇到由于坐标系转换而导致的位置偏差现象。为了避免这种情况影响最终效果,建议在导出前对所有物体应用一次全局坐标的重置,并确保它们围绕原点分布合理[^1]。 ```python def reset_origin(): """Reset the origin of all objects to their geometric center.""" for o in bpy.data.objects: if o.type == 'MESH': bpy.context.view_layer.objects.active = o bpy.ops.object.origin_set(type='ORIGIN_GEOMETRY', center='BOUNDS') reset_origin() ``` #### 准备用于WebGIS展示的内容 考虑到目标是在网络平台上呈现高质量三维视图的需求,因此还需要特别关注优化后的资源能否被在线地图服务良好解析和支持。这意味着应该遵循相应的技术标准进行最后阶段的准备工作,包括但不限于简化几何体、减少面数、压缩纹理贴图等方面的工作[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值