【超图】iDesktop中如何基于地形数据制作一份水体模型

27 篇文章 8 订阅
13 篇文章 1 订阅

作者:taco

        常规的水面效果,都是通过三维面数据的风格设置制作的。当然这样的水面有一个好处,在于它可以反射水面上的物体,倒影之类的相对来说比较真实。但是如果我视角调整到水面以下就会出现水面下面并无水的效果,更像是一个表面的模型。

        本篇文章基于一个真实的地形数据,制作一份可以在前端流动的水体模型。


一、导入一份地形数据

我们新建一份数据源,右键数据源【导入数据集】导入我们已经准备好的栅格数据集。注意数据集类型此时选择栅格类型,不要选择影像哦。

二、栅格矢量转化

使用【空间分析】=>【栅格矢量化】工具,将栅格转换为矢量点数据集。

 三、属性更新

为了避免修改原始数据,我们新建一个字段为底部高程字段,字段名为【height】。用来存储河流底面高度。并通过更新列的方式将value更新至改字段。

新建河流顶部高度字段【height_ding】,该字段存储河流顶部位置信息。

右键【height】字段选择降序排列,找到栅格的最大值为当前地形最高点值。示例以最大值+100的值为水体高度的整体高度。根据实际河流情况可直接赋值修改。通过更新列的方式修改【height_ding】字段即可。

四、绘制水体范围

将点数据集添加至场景中,新建面数据集绘制所需范围。进行裁剪

面数据需要绘制两份,其中一份范围较大用于裁剪出点数据集,一份为实际所需面数据集,此数据集根据实际河流面即可,可为条带状面数据集。此处采用矩形面便于展示。

五、构建水体

使用【数据】模块下【类型转换】中的【二维】=>【三维】将二维点转换为三维点数据集,分别转为顶点和底点

【三维数据】模块中使用地质体中的【构建地质体】功能进行构建,范围选择实际面范围。

构建出的水体为两层的数据,将模型添加至场景中。将需要的数据集(上层水面)找到另存为新的模型数据集。

右键模型进行【材质编辑】,新建材质,材质可以自行找图片或者使用提供图片进行贴图,按照下图中【重新计算纹理坐标】,设置贴图方式,后并【保存到模型】上。

 右键模型数据集生成缓存即可,将缓存后的数据发布为三维服务,前端进行调用。

 六、前端代码

为了让水流能正常运动起来,按照下面代码设置为例坐标运动即可

var modellayer = viewer.scene.layers.find("test2caizhi");
var style3D = new Cesium.Style3D();
var color = new Cesium.Color(0.0, 0.4, 0.2, 0.6);
modellayer.style3D.fillForeColor = color;
modellayer.textureUVSpeed = new Cesium.Cartesian2(-0.1, -0.1);

水体模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老孟爱吃Taco

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值