cesium粒子效果——飞机喷口火焰效果

效果:


实现思路(最后有完整代码):

1.用clock组件创建时间线

2.时间轴和飞机的位置信息绑定

3.添加模型让模型按照绑定的位置飞行

4.创建粒子系统就是飞机的两个喷口

粒子所需图片地址链接:https://pan.baidu.com/s/12fUyDn6M_uyna5bGHTOvSQ 
提取码:1234

5.让粒子实时跟随模型移动


1.用clock组件创建时间线 代码:

 // 创建时间线
  var start = Cesium.JulianDate.fromDate(new Date()); // 设置时间轴当前时间为开始时间
  var start = Cesium.JulianDate.addHours(start, 8, new Cesium.JulianDate()); // 开始时间加8小时改为北京时间
  var stop = Cesium.JulianDate.addSeconds(start, 400, new Cesium.JulianDate()); // 设置结束时间为开始时间加400秒
  // 设置时钟开始时间
  viewer.clock.startTime = start.clone();
  // 设置时钟当前时间
  viewer.clock.currentTime = start.clone();
  // 设置时钟结束时间
  viewer.clock.stopTime = stop.clone();
  // 时间速率,数字越大时间过的越快,设置1好像是和实际时间一样
  viewer.clock.multiplier = 0.8;
  // 时间轴绑定到viewer上去
  //   viewer.timeline.zoomTo(start, stop);
  // 循环执行,到达终止时间,重新从起点时间开始
  viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP;

2.时间轴和飞机的位置信息绑定 代码:

//设置飞行轨迹  
var data = [
    {
      long: 111.110693,
      lat: 36.0994841,
      height: 10000,
      time: 0,
    },
    {
      long: 111.112693,
      lat: 35.0994841,
      height: 10000,
      time: 180,
    },
    {
      longe: 112.310693,
      lat: 34.0994841,
      height: 50000,
      time: 400,
    },
  ];

  let property = computeFlight(data); // 这是通过一个方法把时间轴和飞机的位置信息绑定了
  //   时间轴和飞机的位置信息绑定
  function computeFlight(source) {
    let property = new Cesium.SampledPositionProperty();
    for (let i = 0; i < source.length; i++) {
      let time = Cesium.JulianDate.addSeconds(
        start,
        source[i].time,
        new Cesium.JulianDate()
      );
      let position = Cesium.Cartesian3.fromDegrees(
        source[i].long,
        source[i].lat,
        source[i].height
      );
      // 添加位置,和时间对应
      property.addSample(time, position);
    }
    return property;
  }

3.添加模型让模型按照绑定的位置飞行 代码:

 //   添加并移动飞机
  var entity2 = viewer.entities.add({
    availability: new Cesium.TimeIntervalCollection([
      new Cesium.TimeInterval({
        start: start,
        stop: stop,
      }),
    ]),
    position: property,
    // 基于位置计算方向角
    orientation: new Cesium.VelocityOrientationProperty(property),
    model: {
      uri: "./model/j11.gltf",
      scale: 100.05, //放大倍数
    },
    /
PyTorch实现GCN的步骤如下: 1. 导入相关库:首先需要导入PyTorch及其相关的库,如torch、torch.nn.functional、torch.nn和torch_geometric.nn等。\[1\] 2. 构建GCN图学习架构:可以使用自己实现GCN模型,也可以使用PyG库中的GCNConv图层。如果选择自己实现GCN模型,需要导入numpy、torch和torch.nn等库,并根据GCN的原理进行实现。如果选择使用PyG库,可以直接调用GCNConv图层。\[2\] 3. 加载数据集:可以使用PyG库中的内置数据集,如Planetoid中的Cora数据集。加载Cora数据集时,需要手动实现获取该图对应的邻接矩阵。可以使用scipy.sparse库中的coo_matrix函数将边的索引和权重转换为邻接矩阵的稀疏表示,然后将其转换为稠密矩阵。\[3\] 4. 构建度矩阵D:可以使用邻接矩阵计算度矩阵D,度矩阵是一个对角矩阵,对角线上的元素表示每个节点的度数。可以使用torch.diag函数将度矩阵的对角线设置为每个节点的度数。\[3\] 以上是PyTorch实现GCN的基本步骤,具体的实现细节可以根据需要进行调整和优化。 #### 引用[.reference_title] - *1* [[图神经网络]PyTorch简单实现一个GCN](https://blog.csdn.net/weixin_37878740/article/details/130114750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Pytorch实现GCN(基于PyTorch实现)](https://blog.csdn.net/m0_47256162/article/details/128739905)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_63701303

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值