SuperMap iClient3D for Cesium动态修改水面高度实现水面涨跌效果

作者:xkf

前言

在水利相关项目中一般都会有这样一个场景,那就是水面的涨跌.但是由于水面是高低不平,没法使用淹没分析去实现这个涨跌.那么如何做呢?分两种情况,一种情况是前端构建的水面,需要通过修改水面的ModelView 矩阵来实现水面的上下移动,近似实现水面涨跌;另一种情况是桌面构建的水面,通过修改图层的bottomAltitude实现

一、通过实体添加的水面
1. 修改矩阵

构建primitive水面符号参考上篇博客: https://blog.csdn.net/weixin_45486229/article/details/134401837
主要代码:

 // 定义要平移的高度偏移值
 const heightOffset = 5000.0; // 以米为单位

 // 获取原始的 ModelView 矩阵
 const originalModelViewMatrix = tmp.modelMatrix;
 // 创建一个平移矩阵来将 Primitive 上下移动
 const translationMatrix = Cesium.Matrix4.fromTranslation(new Cesium.Cartesian3(0, 0, heightOffset));

 // 将平移矩阵应用到原始 ModelView 矩阵上
 const newModelViewMatrix = Cesium.Matrix4.multiply(originalModelViewMatrix, translationMatrix, new Cesium.Matrix4());
 // 更新 Primitive 的 ModelView 矩阵,从而将其整体上下移动
 tmp.modelMatrix = newModelViewMatrix;

最终效果如下:

水位涨跌

二、通过桌面创建的水面.
1. 桌面制作水面.

在图层风格中设置风格为三维水面符号后保存场景,对场景切缓存。发布三维服务。在这里插入图片描述

2. 前端加载并修改水面符号高度

主要代码

var layer = scene.layers.find('heliu_ZR@DataSource');
setInterval(() => {
    layer.style3D.bottomAltitude += 1;
}, 100);

效果如下:

水面效果1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值