当前位置: 首页 > news >正文

Cesium 入门教程(十二):时间动画实例

文章目录

  • 一,Cesium 实际示例(含源代码)
      • 1、vue+cesium: 使用CallbackProperty动态更改位置
      • 2、vue+cesium: 实现动态图片旋转
      • 3、vue+cesium: 加载czml文件,显示小汽车运行状态
      • 4、vue+cesium: 飞机根据经纬度高度数据,沿着轨迹飞行
      • 5、vue+cesium: 实现地球自转效果
  • 二,时间动画基础知识
      • 1. 时间系统基础
      • 2. 时间驱动的实体动画
      • 3. 时间动画控制
      • 4. 时间动态图层
      • 5. 关键概念
      • 6. 实际应用场景
  • 三,Cesium 入门教程 -系列文章列表

Cesium 提供了强大的时间动画功能,允许你基于时间维度动态展示场景中的实体、图层或其他元素。这在模拟时序数据(如卫星轨迹、天气变化、车辆移动等)时非常有用。

一,Cesium 实际示例(含源代码)

1、vue+cesium: 使用CallbackProperty动态更改位置

查看源代码:https://dajianshi.blog.csdn.net/article/details/145725150
在这里插入图片描述

2、vue+cesium: 实现动态图片旋转

查看源代码: https://dajianshi.blog.csdn.net/article/details/139420210

在这里插入图片描述

3、vue+cesium: 加载czml文件,显示小汽车运行状态

查看源代码:https://dajianshi.blog.csdn.net/article/details/130038751

4、vue+cesium: 飞机根据经纬度高度数据,沿着轨迹飞行

查看源代码:https://dajianshi.blog.csdn.net/article/details/145884863
在这里插入图片描述

5、vue+cesium: 实现地球自转效果

查看源代码:https://dajianshi.blog.csdn.net/article/details/129714282

二,时间动画基础知识

1. 时间系统基础

Cesium 使用 JulianDate 处理时间,它支持高精度的日期和时间计算,适合处理从过去到未来的时间序列数据。

// 创建一个特定时间(2023年1月1日)
const start = Cesium.JulianDate.fromIso8601("2023-01-01T00:00:00Z");// 创建结束时间(2023年1月2日)
const end = Cesium.JulianDate.addDays(start, 1, new Cesium.JulianDate());// 设置场景的时间范围
viewer.clock.startTime = start.clone();
viewer.clock.stopTime = end.clone();
viewer.clock.currentTime = start.clone();
viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP; // 循环播放到结束时间
viewer.clock.clockStep = Cesium.ClockStep.SYSTEM_CLOCK_MULTIPLIER; // 按倍数播放
viewer.clock.multiplier = 1000; // 时间流逝速度(1000倍实时速度)

2. 时间驱动的实体动画

通过给实体(Entity)的属性设置时间变化规律(SampledProperty),可实现随时间动态变化的效果。

// 创建一个随时间移动的点
const position = new Cesium.SampledPositionProperty();// 添加时间点和对应的位置(经纬度)
position.addSample(Cesium.JulianDate.fromIso8601("2023-01-01T00:00:00Z"),Cesium.Cartesian3.fromDegrees(116, 40, 1000) // 起点:北京附近
);position.addSample(Cesium.JulianDate.fromIso8601("2023-01-01T01:00:00Z"),Cesium.Cartesian3.fromDegrees(117, 40, 1000) // 1小时后移动到东边
);position.addSample(Cesium.JulianDate.fromIso8601("2023-01-01T02:00:00Z"),Cesium.Cartesian3.fromDegrees(118, 41, 1000) // 2小时后继续移动
);// 创建实体
viewer.entities.add({position: position,point: {pixelSize: 10,color: Cesium.Color.RED},path: { // 显示移动轨迹resolution: 1,material: new Cesium.PolylineGlowMaterialProperty({glowPower: 0.1,color: Cesium.Color.YELLOW}),width: 5}
});

3. 时间动画控制

Cesium 提供了默认的时间控制组件(播放/暂停、速度调节),也可通过代码手动控制:

// 播放动画
viewer.clock.shouldAnimate = true;// 暂停动画
viewer.clock.shouldAnimate = false;// 跳转到指定时间
const targetTime = Cesium.JulianDate.fromIso8601("2023-01-01T00:30:00Z");
viewer.clock.currentTime = targetTime;// 调整播放速度
viewer.clock.multiplier = 2000; // 加快到2000倍// 监听时间变化事件
viewer.clock.onTick.addEventListener((clock) => {const currentTime = clock.currentTime;console.log("当前时间:", Cesium.JulianDate.toIso8601(currentTime));
});

4. 时间动态图层

除了实体,Cesium 中的图层也可随时间变化,例如时序影像图层:

// 创建时序影像图层(示例:假设已有多个不同时间的影像)
const timeDynamicImagery = new Cesium.TimeDynamicImagery({clock: viewer.clock,imageryProvider: new Cesium.WebMapTileServiceImageryProvider({url: "https://example.com/tdt/{Time}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png",// 时间格式化模板timeInterval: new Cesium.TimeIntervalCollection([new Cesium.TimeInterval({start: start,stop: end,data: { Time: "${year}-${month}-${day}" } // 动态替换URL中的时间参数})])})
});// 添加到图层
viewer.imageryLayers.add(timeDynamicImagery);

5. 关键概念

  • Clock:场景的时间控制器,管理当前时间、播放状态、速度等。
  • SampledProperty:存储随时间变化的属性值(如位置、颜色、大小),支持插值计算。
  • TimeInterval:定义时间区间,用于关联数据与时间范围。
  • ClockRange:控制时间到达结束点后的行为(LOOP_STOP 循环,CLAMPED 停止)。

6. 实际应用场景

  • 模拟车辆、船舶、飞机的历史轨迹或预测路径。
  • 展示卫星的轨道运行和覆盖范围变化。
  • 可视化气象数据(如云层移动、温度变化)随时间的演变。
  • 播放城市建设的时序过程(如建筑施工进度)。

通过结合时间动画与 Cesium 的 3D 场景能力,可以创建极具沉浸感的动态可视化效果。

三,Cesium 入门教程 -系列文章列表

  • Cesium 入门教程(一):应该如何学习Cesium
  • Cesium 入门教程(二):界面的基础配置
  • Cesium 入门教程(三):加载不同的地图底图
  • Cesium 入门教程(四):利用entity显示图形
  • Cesium 入门教程(五):利用Primitive生成图形
  • Cesium 入门教程(六):不同的材质设置
  • Cesium 入门教程(七):加载、导出2D文件数据
  • Cesium 入门教程(八):加载3D瓦片及模型
  • Cesium 入门教程(九):通过鼠标绘制图形
  • Cesium 入门教程(十):利用shader、后处理重构图形
  • Cesium 入门教程(十一):camera相机功能展示
  • Cesium 入门教程(十二):时间动画实例
  • Cesium 入门教程(十三):粒子系统实例
  • Cesium 入门教程(十四):鼠标键盘交互
http://www.xdnf.cn/news/1386487.html

相关文章:

  • AI共链·智存未来 | 绿算技术受邀出席华为AI SSD发布会
  • 预测模型及超参数:3.集成学习:[1]LightGBM
  • TDengine 3.3.7.0 新增性能基准工具 taosgen
  • Django开发规范:构建可维护的AWS资源管理应用
  • LRU 内存淘汰策略
  • 扩展中国剩余定理脚本(恢复密文c)
  • 匠心传承,古韵新生——记木雕名家龙巍的艺术人生
  • Android 打包适配15 版本(api 35)问题处理
  • 【观成科技】蔓灵花User下载者加密通信分析
  • 微硕WINSOK高性能NP沟道MOS管WSP4067在Type-C双向快充电源管理系统中的应用
  • 美摄科技受邀参加2025中关村论坛年会,以超高清车载影像技术赋能智慧出行新体验!
  • 4x12G-SDI(四链接12G-SDI)
  • Lambda 表达式在 PyQt/PySide 中的应用
  • 突破传统企业组网瓶颈:某科技公司智能组网服务项目深度解析
  • Docker部署单节点使用KRaft存储数据的Kafka与可视化界面Kafka-Map
  • 解决多种类潮湿敏感元器件的多温度、多时长的排潮烘干
  • 网络编程 04:TCP连接,客户端与服务器的区别,实现 TCP 聊天及文件上传,Tomcat 的简单使用
  • CVPR 强化学习模块深度分析:连多项式不等式+自驾规划
  • 判断语句中std::cin隐式转换为bool--重载operator bool()
  • 外卖大战之后,再看美团的护城河
  • autojs RSA加密(使用public.pem、private.pem)
  • IAR工程如何生成compile_commands.json文件(能生成但是clangd不能生成“.cache文件”)
  • 水质溶解氧检测仪:用于测量水体中溶解氧浓度的专业设备
  • Partner 类开发:会议参与者可视化控件
  • Excel Word Pdf 格式转换
  • 深入解析Qt节点编辑器框架:高级特性与性能优化(四)
  • Kafka 副本同步异常与 ISR 收缩故障排查实录
  • 自动化Reddit 效率已ready
  • Linux(0)|梦开始的地方:xshell下载
  • 表达式语言EL