# Some tiles looks afterimage after adjusting height

**URL:** <https://community.cesium.com/t/some-tiles-looks-afterimage-after-adjusting-height/19404>\
**Category:** CesiumJS\
**Created:** [July 5, 2022, 8:47am UTC](https://community.cesium.com/t/some-tiles-looks-afterimage-after-adjusting-height/19404 "2022-07-05T08:47:56Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Hiroshi\_Yaginuma](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/hiroshi_yaginuma/32/10887_2.png) [@Hiroshi\_Yaginuma](https://community.cesium.com/u/Hiroshi_Yaginuma)\
**Post date:** [July 5, 2022, 8:47am UTC](https://community.cesium.com/t/some-tiles-looks-afterimage-after-adjusting-height/19404/1 "2022-07-05T08:47:56Z")

</div>

Hi there,

I tried to adjust the height of point cloud (MSL) to consider the vertical reference(WGS84) in Cesium.

However, I confront an weird afterimage like some tiles are not transferred along with the other tiles.

 ![image](https://global.discourse-cdn.com/cesium/original/3X/9/8/98002f2c1bb415e4d25d300d35178dd0b1ac9401.jpeg)

```auto
  this.tileset = this.viewer.scene.primitives.add(
      new Cesium.Cesium3DTileset({
          url: this.tile_path + file.publish_url
      })
  );

  this.tileset.allTilesLoaded.addEventListener(()=>{
      const centerCoor = this.tileset.boundingSphere.center;
      const latlon = Cesium.Cartographic.fromCartesian(centerCoor);
      let gsi = new Geoid();
      const lat = Cesium.Math.toDegrees(latlon.latitude);
      const lon = Cesium.Math.toDegrees(latlon.longitude);
      const geoid = gsi.getGeoid(lat, lon);

      const heightOffset = geoid;
      const cartographic = Cesium.Cartographic.fromCartesian(centerCoor);
      const surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0);
      const offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, heightOffset);
      const translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());
      this.tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
  });

```

---

<div class="post-metadata">

**Author:** ![Gabby\_Getz](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/gabby_getz/32/7838_2.png) [@Gabby\_Getz](https://community.cesium.com/u/Gabby_Getz)\
**Post date:** [July 8, 2022, 8:07pm UTC](https://community.cesium.com/t/some-tiles-looks-afterimage-after-adjusting-height/19404/2 "2022-07-08T20:07:50Z")

</div>

Hello there,

You correctly adjusted the height of the tiles, but that adjustment is happening multiple times each time a frame is rendered. When you pan or zoom the camera, I think the adjustment is being applied again.

I would suggest using the [`initialTilesLoaded`](https://cesium.com/learn/cesiumjs/ref-doc/Cesium3DTileset.html?classFilter=cesium3d#initialTilesLoaded) event instead.

---

<div class="post-metadata">

**Author:** ![Hiroshi\_Yaginuma](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/hiroshi_yaginuma/32/10887_2.png) [@Hiroshi\_Yaginuma](https://community.cesium.com/u/Hiroshi_Yaginuma)\
**Post date:** [July 11, 2022, 1:30pm UTC](https://community.cesium.com/t/some-tiles-looks-afterimage-after-adjusting-height/19404/3 "2022-07-11T13:30:35Z")

</div>

I tried it but it still the same…

 ![image](https://global.discourse-cdn.com/cesium/original/2X/7/70e6b2175fb3f6ca7cc143a3ff87744668828cb8.jpeg)

I even tried this one but no change. I thought it would be rendering issue so I added this.viewer.render() but no change.

```auto
this.tileset.initialTilesLoaded.addEventListener( () => {
    setTimeout(()=> {
        console.log('tileset')
        const centerCoor = this.tileset.boundingSphere.center;
        const latlon = Cesium.Cartographic.fromCartesian(centerCoor);
        let gsi = new GsiGeoid();
        const lat = Cesium.Math.toDegrees(latlon.latitude);
        const lon = Cesium.Math.toDegrees(latlon.longitude);
        const geoid = gsi.getGeoid(lat, lon);
        console.log(geoid);
        const heightOffset = geoid;
        const cartographic = Cesium.Cartographic.fromCartesian(centerCoor);
        const surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0);
        const offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, heightOffset);
        const translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());
        this.tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
        this.viewer.render();

    }, 500);
});

```

---

<div class="post-metadata">

**Author:** ![Gabby\_Getz](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/gabby_getz/32/7838_2.png) [@Gabby\_Getz](https://community.cesium.com/u/Gabby_Getz)\
**Post date:** [July 15, 2022, 7:06pm UTC](https://community.cesium.com/t/some-tiles-looks-afterimage-after-adjusting-height/19404/4 "2022-07-15T19:06:34Z")

</div>

> [@Hiroshi\_Yaginuma](#):
>
> `this.viewer.render();`

Is there a reason you are manually calling `render`? That’s typically not called by the user an is a internal function handled by Cesium when needed.
