首页 / 浏览问题 / 三维GIS / 问题详情
轨迹回放模型方向问题
4EXP 2023年03月20日

使用产品:iClient3D for Cesium 11i

下面是在Projection - Cesium Sandcastle中能运行的代码,改变目标坐标l2的维度37.594795 ->37.596795 ,车头会改变,

我把这段代码复制到我的用supermap的项目里,只有模型的地址不一样,车头不会随移动改变,把now2 的小时改成11, 车头会变


const viewer = new Cesium.Viewer("cesiumContainer", {

});

const property2 = new Cesium.SampledPositionProperty();


let now1 = Cesium.JulianDate.fromDate(new Date( "2023-03-15 11:13:37"));
let now2 = Cesium.JulianDate.fromDate(new Date("2023-03-15 18:15:08"));

let l1 =Cesium.Cartesian3.fromDegrees(114.739534, 37.595127, 10) ;
let l2 =Cesium.Cartesian3.fromDegrees(114.739081, 37.594795, 10) ;

viewer.clock.startTime = now1.clone();
viewer.clock.currentTime = now1.clone();

viewer.clock.stopTime = Cesium.JulianDate.fromDate(new Date( "2023-03-19 11:13:37"));
viewer.clock.clockRange = Cesium.ClockRange.CLAMPED;
 viewer.clock.multiplier = 1;


property2.addSample(now1, l1);
property2.addSample(now2, l2);


const entity = viewer.entities.add({
  position: property2,
  orientation:  new Cesium.VelocityOrientationProperty(property2),
  model: {
    uri: "../SampleData/models/CesiumMilkTruck/CesiumMilkTruck.glb",
    minimumPixelSize: 128,
    maximumScale: 20000,
  },
});
viewer.trackedEntity = entity;


1个回答

您好,您的意思是,修改模型的位置不生效?但是修改时间之后,模型就改变了朝向?
但是源生中,修改模型的坐标,模型的朝向也会跟着改变?
另外,您这边有什么特殊需求吗,前端是有专门的接口,在加载模型的时候修改模型的朝向的。
4,151EXP 2023年03月20日
orientation:  new Cesium.VelocityOrientationProperty(property2),是用这个api来修改移动中的模型方向,结束时间是11点和18点(时间跨度),模型方向是不一样的,11点会指向下一个点,而18点模型方向一直是初始方向

VelocityOrientationProperty接口是( 根据position的位置变化,来计算出移动的方向,最后把速度方向输出成Orientation ),我们的包和源生的包是一致的,没有做改动。

该接口在Cesium自带的示例中有一个Interpolation中有它的用法。示例:

var position = new Cesium.SampledProperty();
position.addSamples(...);
var entity = viewer.entities.add({position : position,orientation : new Cesium.VelocityOrientationProperty(position)
}));

实际应用时示例代码:

entity.orientation = new Cesium.VelocityOrientationProperty(entity.position);
 ceshi1(){


      const property2 = new Cesium.SampledPositionProperty();


      let now1 = Cesium.JulianDate.fromDate(new Date( "2023-03-15 11:13:37"));
      let now2 = Cesium.JulianDate.fromDate(new Date("2023-03-15 11:15:08"));

      let l1 =Cesium.Cartesian3.fromDegrees(114.739534, 37.595127, 10) ;
      let l2 =Cesium.Cartesian3.fromDegrees(114.739081, 37.596795, 10) ;

      viewer.clock.startTime = now1.clone();
      viewer.clock.currentTime = now1.clone();

      viewer.clock.stopTime = Cesium.JulianDate.fromDate(new Date( "2023-03-19 11:13:37"));
      viewer.clock.clockRange = Cesium.ClockRange.CLAMPED;
      viewer.clock.multiplier = 1;


      property2.addSample(now1, l1);
      property2.addSample(now2, l2);



      const entity = viewer.entities.add({
        position: property2,
        orientation:  new Cesium.VelocityOrientationProperty(property2),
        model: {
          uri: "./model/wjj/a2/xiaobi2.gltf",
          minimumPixelSize: 128,
          maximumScale: 20000,
        },
      });
      viewer.trackedEntity = entity;

    },
    ceshi2(){



      const property2 = new Cesium.SampledPositionProperty();


      let now1 = Cesium.JulianDate.fromDate(new Date( "2023-03-15 11:13:37"));
      let now2 = Cesium.JulianDate.fromDate(new Date("2023-03-15 13:15:08"));   // 只有这里不同

      let l1 =Cesium.Cartesian3.fromDegrees(114.739534, 37.595127, 10) ;
      let l2 =Cesium.Cartesian3.fromDegrees(114.739081, 37.596795, 10) ;

      viewer.clock.startTime = now1.clone();
      viewer.clock.currentTime = now1.clone();

      viewer.clock.stopTime = Cesium.JulianDate.fromDate(new Date( "2023-03-19 11:13:37"));
      viewer.clock.clockRange = Cesium.ClockRange.CLAMPED;
      viewer.clock.multiplier = 1;


      property2.addSample(now1, l1);
      property2.addSample(now2, l2);



      const entity = viewer.entities.add({
        position: property2,
        orientation:  new Cesium.VelocityOrientationProperty(property2),
        model: {
          uri: "./model/wjj/a2/xiaobi2.gltf",
          minimumPixelSize: 128,
          maximumScale: 20000,
        },
      });
      viewer.trackedEntity = entity;


    }

你可以测试一下这个代码,只修改now2的时间,模型的朝向就不一样了

经过测试,确实和源生的不是一样的情况,我这边上报一个缺陷,缺陷号稍后私信您,若该缺陷解决,我第一时间联系您这边。
...