Cesium快速入门30:CMZL动画

这一节课,我们用 CZML 让物体真正"动"起来------

给它一个时间轴 ,让它按时走路、按时变色、按时消失,全程只靠 JSON,不写半行动画代码。


一、时间四维:时间 + 经度 + 纬度 + 高度

CZML 把"时间"当成第一维度,后面紧跟经典三维:
[ 0秒, 经度°, 纬度°, 高度米, 200秒, 经度°, 纬度°, 高度米 ... ]

数组里每 4 个数算一个"关键帧",Cesium 会自动插值,物体就能平滑移动。


二、最小动画 CZML:盒子 从 A 飞到 B

复制代码
const czml = [
  {
    id: "document",
    name: "box",
    version: "1.0", // 文档头,必须
  },
  {
    id: "shape1",
    name: "Blue box",
    availability: "2023-01-01T00:00:00Z/2023-01-01T00:00:01Z", // 可见时间段
    position: {
      epoch: "2023-01-01T00:00:00Z", // 0 秒起点
      cartographicDegrees: [
        0, -114.0, 40.0, 30000.0, // 0 秒时的经纬高
        200, -100.0, 0.0, 30000.0, // 200 秒时的经纬高
      ],
    },
    box: {
      dimensions: { cartesian: [40000, 30000, 50000] }, // 长 宽 高(米)
      material: {
        solidColor: { color: { rgba: [0, 0, 255, 255] } }, // 纯蓝
      },
    },
  },
];

现在画面是静止的,因为我们还没让"时间齿轮"转起来。


三、让时间跑起来:打开动画 + 时间轴

  1. 先把动画条放出来

    const viewer = new Cesium.Viewer("container", {
    animation: true, // 左下角播放按钮
    timeline: true, // 底部时间轴
    });

  2. 设定播放速度

    viewer.clock.multiplier = 1.0; // 1 倍现实速度
    viewer.animation.viewModel.playbackRate = 1.0;

  3. 如果想一进页面就自动跑,再加一行:

    viewer.shouldAnimate = true;

刷新后,点击播放键或拖动时间轴,蓝色盒子会沿着刚才给定的两个关键帧平稳飞行,全程自动插值、自动朝向、自动旋转,零代码干预。


四、小结与扩展

  • CZML 把时间当"第一维度",后面紧跟经度、纬度、高度即可四维插值。

  • availability 控制"生命周期",时间轴外物体自动隐藏。

  • 打开 animation + timeline + shouldAnimate,一条 JSON 就能让场景"活"起来。

相关推荐
程序员大阳5 小时前
副队长JavaScript教程(49)-主动抛出异常与错误类型
javascript·异常处理·error·throw·错误类型
hhhjhl5 小时前
Protobuf.js 跨端三方库仓颉适配全流程
javascript·网络·udp
Software攻城狮8 小时前
8 【 entity ,primitive,3D tiles 3者的含义和区别】
数码相机·3d
Flynt9 小时前
我把热榜那篇"禁用 axios"逐条实测了一遍:结论大体对,坑在它没讲的地方
前端·javascript·axios
slongzhang_10 小时前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
Solange__12 小时前
航天科普怎么用AI生成3D场景?从科学约束、尺度分层到网页展示的完整方案
图像处理·人工智能·游戏·3d·ai·自然语言处理·关卡设计
liyi_hz200812 小时前
O2OA(翱途) V10.1 即将发布|功能再升级,安全再加固,协同更高效!
java·javascript·windows·开源软件
志尊宝13 小时前
AI原生前端开发(029):AI辅助的文档自动生成
javascript·人工智能·ai-native
Carl_奕然14 小时前
【机器视觉】最强算法之:3D高斯泼溅(3D Gaussian Splatting)
人工智能·python·算法·目标检测·计算机视觉·3d
一个游离的指针14 小时前
ES6新特性:let、const、块级作用域
开发语言·javascript·es6