Using a global terrain layer without height detail

I am just wondering, is there any way for me to use Cesium World Terrain but having it flat. Meaning, I do not want any height difference on the terrain. Thank you in advance.

-Ridhwan

Hi @RidhwanAziz,

There may be a way to do what you’re looking for, but some more information would be helpful.

Can you share a little more about your use case for such a thing? What kind of application are you building, and how would flat terrain enable it?

-Alex

HI @agallegos,

I have a set of 3d tiles containing buildings only and all of them are positioned on a same base height where the lowest points of all of the buildings are at z-axis = 0.

If I were to use Cesium World Terrain, due to the terrain’s heights/depth, the buildings will either float in the air or submerged into the ground. So I am wondering if is there a way where I am able to utilise the Cesium World Terrain, but without the terrain’s height/depth. It is just going to be a “flat” land.

Hope that explains of what I am trying to achieve. Thanks in advance Alex.

-Ridhwan

Hi Ridhwan,

Thank you for clarifying!

There is no way to really make Cesium World terrain flat. Even if height detail were to be removed, there would still be the slight curvature of the earth/ellipsoid. Depending on the scale of your project, that may or may not be an issue.

Also, Cesium World Terrain essentially IS the terrain height. The CWT tileset is just that terrain detail - the map imagery applied over is a totally separate component.
It sounds like what you’re mostly looking for is the bing maps imagery applied to a flat plane. One thing you could try is uploading a flat heightmap to Cesium ion. The heightmap would need to be geolocated to your area of interest. You can see a tutorial on uploading terrain here.

Once you create a flat terrain, you should be able to import it to Unreal and apply raster imagery of your choice to it.

I haven’t tested out this workflow myself, but I hope it can help get you started.

-Alex

Hi Alex,

Appreciate the explanation provided on my enquiry.

I believe the slight curvature of the earth/ellipsoid would not affect much on what I am intending to do. I’ll have a shot on your recommendation and see how it goes.

Thank you!

-Ridhwan

Hi @agallegos,

I have a tangent query and would appreciate if you could provide some advice on how to achieve this:
I am also looking to apply the bing maps imagery onto the CWT, but without the height detail, i.e. on a plain Earth-sized sphere, so the curvature of the Earth must actually remain as is.

I will be adding other layers, assets & tilesets on top of that in various regions globally, but I do not need the mountains / slopes / dips in terrain, as they interfere with these layers and worsen the visibility in my scenario.

If I understood your post correctly, uploading a flat heightmap would not work for me as I’d still need the Earth sphere and the ability to view relevant tiles anywhere around the globe (I don’t just need one particular area).

Is something like that possible at all?

1 Like

Hi @Dan,

Thanks for bringing this up. This is a feature we have in CesiumJS, but not yet in Cesium for Unreal. I’ve created an issue for it here - Generate MSL ellipsoid tiles as an alternative to Cesium World Terrain · Issue #817 · CesiumGS/cesium-unreal · GitHub. You can track the status of the feature on that page, hopefully we’ll have some updates soon.

As a workaround in the meantime, you could try uploading a global DEM file using 0 for all the elevation data. I’ll look in to the specifics of that workflow when I have a chance.

-Alex

2 Likes

Hi Alex,

Thank you for your response!

I will keep an eye on this issue and eagerly wait for updates in that area. :wink:

Dan

Hi @agallegos,

That’s great! Looking forward to that! Cheers!

-Ridhwan

Hi @RidhwanAziz and @Dan,

I tested out using a large DEM file to set the height to 0, and it seems to work fairly well for creating a basic ellipsoid. If you’d like to do the same while you wait for full support, you can use this file:
DEM0.zip (100.0 KB)

Unzip the file, and upload the DEM0.tif file to Cesium ion. Use the following settings:

  • Select the Raster Terrain option for “What kind of data is this?”
  • select Mean Sea Level as the base terrain
  • Height Unit and Height Reference can be left on Auto Detect

Once it’s uploaded and tiled, you can add it to your scene in Unreal. You’ll need to add an imagery overlay like Bing Maps Raster Overlay to it as well - you can copy the component from Cesium World Terrain, then delete Cesium World Terrain.

If you do this, just keep in mind that I haven’t tested it exhaustively and there may be unforeseen issues. Also, this approach may not be compatible with our future implementation of an MSL ellipsoid - so just use caution if you’re building an application using this.

As always, we love to see what the community creates! If you create anything cool that you’d like to share, you can always message me, post it on the forum, or tweet it @CesiumJS.

-Alex

3 Likes

Hi @agallegos,

Thank you for the update. While waiting for the implementation of an MSL ellipsoid, I will give a shot with the DEM file you’ve shared. I will share with you if there’re any errors during the process. Thank you once again for your help! Cheers!

-Ridhwan

1 Like

The proposed temporary solution works well so far and will help to produce a proof of concept application, thank you!

Having said that I can’t help but notice that the roundtrip from the app to Cesium ion to stream the 0-height terrain tiles seems somewhat redundant (since I suppose the basic ellipsoid could be created procedurally on the fly).
If in the future the ellipsoid generation becomes possible offline (so that only the map texture tiles are streamed) that would be absolutely amazing!

In any case, thank you very much for your time so far and the provided support; with a bit of luck we will indeed have something cool to share with you at some point in the future thanks to Cesium. :wink:

2 Likes

Glad to hear this approach is working!

You’re right, it is somewhat redundant to stream 0-height terrain tiles from ion. Our eventual implementation will involve procedural tile creation, so you’re definitely on the right path there!

1 Like