Not able to add a local terrain url?

Hello all,

Thank you for your time looking into this.

I am trying to load a tileset (.TERRAIN via URL). This was created from a geoTIFF to .Terrain tileset via CTB. It contains a layer.json file.

When i try to load that in UE4, i get the following:

LogCesium: Loading tileset from URL
LogCesium: Loading tileset from URL done
LogCesium: Warning: [2022-02-28 12:00:39.163] [warning] [TileContentFactory.cpp:77] No loader registered for tile with content type ‘application/octet-stream’ and magic value '?
LogCesium: Warning: [2022-02-28 12:00:39.163] [warning] [TileContentFactory.cpp:77] No loader registered for tile with content type ‘application/octet-stream’ and magic value '?

Similar issue reported here:

I have found the following post:

which describes that i might be missing a .metadata file, which describes the tileset availability?

I was able to load that same terrain (geoTIFF) file form Cesium ION.

I guess my question going forward is, it what Kevin describes wrt to the .metadata file @Kevin_Ring the case? how do we generate this? Please suggest?

Does anyone have a terrain tileset, that they are able to load locally without being connected to the internet? that i can learn from?

Please suggest, looking forward to your comments.

Kind Regards

Hi @vamsh.chittaluri,

You may very well run into an availability problem next, but the immediate problem here is different. Quantized-mesh tiles (.terrain files) must be served with a response header of Content-Type: application/vnd.quantized-mesh. Your web server is instead serving Content-Type: application/octet-stream. You should be able to modify the configuration for the web server running on to return the correct content type.

If that’s inconvenient, we recently merged a change that also allows cesium-native to identify quantized-mesh tiles by their file extension (.terrain). That change should also solve your problem, and it will be in the March release of Cesium for Unreal that will be available this week.

The availability/metadata problem is harder to solve. One solution is to use Cesium ion instead of CTB! :grinning: Another option is to extend CTB to use the metadata extension instead of availability in layer.json. And the last possibility is to implement cesium-native#292. This issue is on our list to be implemented, but I can’t commit to a time frame.


Hey Kevin,

Thank you for the informative response.

Was able to solve the response header issue.

Kind Regards

Hi Vamshi,

could you share some details on your solution? Are you using GitHub - geo-data/cesium-terrain-server: A basic server for serving up filesystem based tilesets representing Cesium.js terrain models and modified the response header? I had no success with this approach.


Hey Tim,

Sorry for the late response. I did not get any notifs about posts on my email…

for the issue with Terrain Models, i just switched over to CesiumLab to generate the mesh types, but i am serving up the files through a python local HTTP server. with a modified response header. Please see attached code for how i did that.

Not sure if you are cool with setting up a python solution but its what i did.

import http.server
import socketserver

PORT = 8088

Handler = http.server.SimpleHTTPRequestHandler
        '': 'application/vnd.quantized-mesh', # Default
        '.manifest': 'text/cache-manifest',
	'.html': 'text/html',
        '.png': 'image/png',
	'.jpg': 'image/jpg',
	'.svg':	'image/svg+xml',
	'.css':	'text/css',
	'.js':	'application/x-javascript',

with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("serving at port", PORT)

i would run this by going to the directory, running command prompt. and typing python

make sure to place the python file in the directory with the terrain filesets. If you have any questions, shoot me a message.

Kind Regards

Hi Vamsh,

Are you running the local server on linux? I am on a windows local server here, will try that and see.

Curiously enough, I was able to download the file you referenced up above (from another user) and was able to serve and load that into unreal and it displays fine. When I try to do the same thing with my generated mesh, however, I got the ‘unable to parse error’ - it says I’m trying to load extensions=octvertexnormals

I’ve managed to get your python script running and I can see that it’s serving the data correctly, but I am still getting this log error :frowning: Did you have to modify the layers.json file at all?

LogCesium: Error: [2022-04-10 12:25:34.664] [error] [QuantizedMeshContent.cpp:721] Unable to parse quantized-mesh-1.0 tile