首页 / 浏览问题 / 三维GIS / 问题详情
跟踪entity后水面特效异常
13EXP 2020年07月17日

各位好,我加载了一个三维水面,一般情况下显示正常,但当我通过设置viewer.trackedEntity跟踪对象后,水面特效就发生了异常。请问有谁知道该如何解决这个问题吗?

跟踪前水面正常,如下图

跟踪后水面异常(即使entity静止不动,相机也静止,依然异常),如下图

1个回答

您好,请问您跟踪的实体是水面上这个船是吗,方便贴一下代码我复现一下问题吗?
jjz
1
4,720EXP 2020年07月17日
let czmlData = [
        {
          id: "document",
          name: "",
          version: "1.0",
          clock: {
            interval: "2020-07-10T09:00:00/2020-07-10T09:10:00",
            currentTime: "2020-07-10T09:00:00",
            multiplier: 1
          }
        },
        {
          id: "path",
          name: "",
          availability: "2020-07-10T09:00:00/2020-07-10T09:10:00",
          path: {
            material: {
              polylineGlow: {
                color: {
                  rgba: [128, 60, 190, 255]
                },
                glowPower: 0.25,
              }
            },
            width: 30,
            leadTime: 0,
            trailTime: 86400,
            resolution: 5
          },
          model: {
            gltf: "/bargeBoat.glb",
            scale: 1
          },
          position: {
            epoch: "2020-07-10T09:00:00",
            cartographicDegrees: [
              0,
              120.349278,
              31.989268,
              0.1,
              300,
              120.420199,
              32.033906,
              0.1,
              600,
              120.49429,
              32.033739,
              0.1
            ]
          }
        }
      ];

this.viewer.dataSources.add(Cesium.CzmlDataSource.load(czmlData)).then(ds => {

            me.czmlDS = ds;

            me.viewer.trackedEntity = ds.entities.getById("path"); //跟踪

            // me.viewer.trackedEntity = undefined; //取消跟踪

        })

您好,现在水面是由于写了

     me.viewer.trackedEntity = ds.entities.getById("path"); //跟踪

这一句而造成了变化,除此之外跟之前比没有其他调整是吗,包括对水面特效做除了透明度以外的其他设置。如果是这样,推测可能是因为添加跟踪对象的代码问题,我这里找了一个有跟踪点击对象功能的示例,它的实现思路是先判断跟踪实体是否为空,然后添加被点击实体(id,位置等),设置好后设置viewer.trackedEntity,跟您写法一致。代码如下:

        //鼠标左键选中小车实现跟踪
        var pickedObject = null; // 选中的图元
        var trackedEntity = null; // 被跟踪的Entity
        var screenSpaceEventHandler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
        screenSpaceEventHandler.setInputAction(function (e) {
            pickedObject = scene.pick(e.position);
            if (pickedObject) {
                var selectedPrimitive = pickedObject.primitive; // 选中的图元
                var ownerGroup = selectedPrimitive._ownerGroup; // 图元所在的组信息
                var stateList = ownerGroup.stateList; // 状态信息列表
                var state = stateList.get(pickedObject.id);

                if (!trackedEntity) {
                    trackedEntity = viewer.entities.add({
                        id: 'tracked-entity',
                        position: state.position,
                        point: {
                            pixelSize: 1,
                            show: true // 不能设为false
                        },
                        viewFrom: new Cesium.Cartesian3(-100, -150, 100) // 观察位置的偏移量
                    });
                } else {
                    trackedEntity.position = state.position;
                }
                viewer.trackedEntity = trackedEntity;
            } else {
                viewer.trackedEntity = null;
            }
        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);

点击小车相机跟踪示例:

http://support.supermap.com.cn:8090/webgl/examples/editor.html#trafficSimulation

这个例子里面跟踪小车后水面也出现了异常

正常的水面应该是下图

确实有这个情况,一跟踪小车水面效果就消失了,这个情况马上上报研发,如果修复,给您私信。

好的,谢谢
没问题,感谢反馈。
您好,该问题已经正式修复,请您关注近期即将发布的新版本WebGL.
...