3D-tiles rendering optimization with imagery data

Hi everyone,

I am have some questions about how to improve 3D tiles visualization quality in Cesium. The 3d tile rendering works together with available imageryProvider and terrainProvider. The image doesn’t look consistent when there is no available lidar points but there is available imagery, e.g.:

Right now in our pipeline, the input data is colorized point cloud data in .laz format, and thanks to the prompts in this post. The maximumScreenSpaceError parameter is set as 1 to optimize rendering quality.

I was wondering if there are some other ways to improve the rendering performance to yield more ‘consistent’ results.

Thanks.

It looks like what’s happening there is that those parts of your 3D Tileset are underground, and that’s why the imagery is showing through?

If that is the case, there’s a couple ways you can resolve this. You could use clipping plane to clip out the terrain around the 3D Tileset, or disable depthTestAgainstTerrain to make the 3D Tileset show through even when parts are obscured by the terrain.

Thanks for your message. The problem is some parts of the 3D tileset is ‘higher’ than the imagery, which is draped over the terrain. Ideally, the terrain and the 3D tile shoud match. However, in our case, the uploaded raster terrain model doesn’t work (asset error), and the imagery layer is ancutally draped on the Cesium World Terrain, which is not very accurate in the area of interest.

I tried disabling depthTestAgainstTerrain and it didn’t help. Is there any way to simply disable the ‘imagery provider’?

Have you tried using clipping planes (see https://sandcastle.cesium.com/index.html?src=Terrain%20Clipping%20Planes.html) or disabling the globe (set globe: false in the Viewer constructor) ?

Hi Omar,

Thanks for your message. It seems that globe: false doesn’t work as it makes everything disappear… Fortunately, removing the imagery layer could work in this case! viewer.scene.imageryLayers.removeAll();.

B.T.W., I have another question about the 3D tile location editor tool. What exactly is the ‘position’ being adjusted there? Is it the center of the bounding box of 3D tileset or the mean center point of all the lidar points? We have a good-quality lidar point cloud with known geo-location, and later we want to match what’s rendered in Cesium with real camera image taken at the same pose. So, the alignment accuracy is also important to us.

Thanks,
Qi

It should be the mean center point. Although we are considering changing this so that the origin you move the tileset by is the same as the origin in the source data to make it easier to geolocate things. This is described a bit more here: How to correctly position 3D models when tiling with Cesium ion.

1 Like

Thanks for your help!