当前位置: 首页 > 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.dtcms.com/a/356201.html

相关文章:

  • undefined和null
  • MySQL數據庫開發教學(三) 子查詢、基礎SQL注入
  • Maven安装、IDEA集成Maven、依赖管理、单元测试
  • 《开发避坑指南:从异常中读懂系统的“求救信号”》
  • 自动化Reddit 效率已ready
  • 使用 Dify 和 LangBot 搭建飞书通信机器人
  • Webrtc支持FFMPEG硬解码之Intel
  • 2025五天申请邓白氏编码成功
  • Python 轻量级 HTML 解析器 - lxml入门教程
  • Java研学-SpringCloud(十)
  • Android14 init.qcom.usb.rc详解
  • 设计模式之状态机模式
  • hive udf函数实现在sql查询网站价格
  • Vue3 中的 v-model 语法糖
  • (Nginx)基于Nginx+PHP 驱动 Web 应用(上):配置文件与虚拟主机篇
  • 基于SQL大型数据库的智能问答系统优化
  • 安卓开发---SimpleAdapter
  • 不同卷积不同的滤波效果
  • 如何将OFD文件转换为PDF?总结在线OFD转PDF方法
  • QT5.14.2、CMake 扩展openCV
  • GPT-5原理
  • 第二章 Vue + Three.js 实现鼠标拖拽旋转 3D 立方体交互实践
  • Python- Visual Studio Code配置Anaconda
  • WebIDEPLOY 赋能数字校园建设:智慧管理系统的效能升级与实践路径 —— 以校园资源协同优化构建高效教育生态的探索
  • 洞悉核心,驭数而行:深入理解 Oracle SQL 优化器(RBO 与 CBO)的性能调优哲学
  • C# 一个投资跟踪程序的设计与实现:面向对象与设计模式的深度解析
  • ros、slam、激光雷达、自动驾驶相关学习内容和计划
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day15
  • PyTorch 机器学习基础(选择合适优化器)
  • 【Big Data】Alluxio 首个基于云的数据分析和开源AI数据编排技术