Cesium卫星轨道展示-模型法

cesium针对模拟动画的解决方案-模型法。

Cesium卫星轨道展示-模型法

cesium在进行动画展示这一块的功能比较完善。最近有一个需求,需要进行模拟卫星的飞行轨迹,如果可以实现,针对扫描卫星需要添加模拟扫描光波。

3D模型在线预览提供多种低代码平台3D模型在线预览解决方案,实现了将多种3D模型格式无缝集成到低代码业务表单中。这意味着用户可以在不离开低代码平台的情况下,直接查看和操作3D模型,极大地提升了数据可视化的效果和用户交互体验。

模型法

首先,我认为既然要实现卫星扫描轨迹,那么肯定需要两个模型:卫星模型和扫描模型。卫星模型网上有,glb或者gltf的都行,而扫描模型我直接使用Cesium的几何模型去实现圆锥即可。

1.初始化Vierer

2. 时间定义

动画的执行都是与时间有关的,从什么时间开始,到什么时间结束。而Cesium使用了不同于我们js常用的时间规范,需要用到Cesium.JulianDateCesium.JulianDate 是指示在 Cesium 中添加或描述对象动画时使用的 Julian Date 格式的时间标签。Julian Date 是以天为单位计数的相对格林尼治标准时间的一种计时法。

所以以下代码意思我们以当前时间为基准,6分钟内执行动画。但是速率是10。

Cesium.JulianDate.addHours() :是一种可以在 Julian 时间戳上增加指定小时数的方法。Cesium.JulianDate.addSeconds()同理增加秒。

  • julianDate - Julian 日期时刻,可以是 JulianDate 对象或 secondsSinceEpoch 值。
  • hours - 要添加的小时数,可以为负值表示减小。
  • result - 可选,用于存储结果的 JulianDate 对象。

Cesium.JulianDate.clone():用于克隆一个 JulianDate 对象。

viewer.timeline.zoomTo(start, stop)方法可以用来在时间轴控件中设置一个时间窗口并自动居中和缩放。

  • start - 时间窗口起始时间,可以是Date对象或JulianDate对象。
  • stop - 时间窗口结束时间。

3.轨迹处理方法

上面定义好了播放时间以及时间间隔等等,那么准备工作做完了,可以开始构建模型了。

先定义一些存储路径变量的方法:

定义轨迹方法:

可以看出这个方法利用传进去的是否纬度标识,如果是就构造了一个固定纬度degree,经度360度分段的循环数组,反之一样。所以这些变量其实可以根据自己需要定义初始化或者调整。

经纬度转换为Cesium模型使用的position

4. 模型构建

定义好上一步方法,定义模型即可。这边三个参数ifLat, degree, hen含义上面方法也需要使用,含义分别就是是否纬度,角度以及卫星高度。

5. 开始执行

我们给第四步添加好ifLat, degree, hen三个参数就可以看到一颗卫星运行起来。我们可以把上一步继续封装来实现多个卫星运行。

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号