siggraph_demo_esri_terrain testing questions

When I run the siggraph_demo_esri_terrain branches, I get an error on the Sandbox, CesiumViewer, and Skeleton. Do I need a different token id? I can log manually to but I get the errors as seen below. Any tips?

TypeError: require.toUrl is not a function

var uri = require.toUrl('Workers/' + workerName + '.js');

uncaught exception: DeveloperError: description.terrainProvider is required.

Gateway timeout

Hi Ashley,

Unfortunately, the ESRI tokens are only good for 24 hours, so the token needs to be updated daily. If you have an ArcGIS Online account, you can generate a new token using this page:

Enter your ESRI username and password, and select “Domain Name”, enter “http://localhost:8080”, and click Get API Key. Then, edit Skeleton.js and change the ‘token’ parameter passed to the ArcGisImageServerTerrainProvider constructor to your new token.

You’ll also need to use the jetty-based web server that can be launched from Eclipse using the “runServer” task, if you’re not already.

Let me know if that works for you.


I also should have mentioned that only the Skeleton application works, currently.

Ok, thanks for the tip. Is the Geoserver branch working at this time?

The code in the Geoserver branch depends on the ‘dds’ community plugin for Geoserver in order to export terrain data in BIL format. BIL is just a simple array of 16-bit integer heights and is used by World Wind. This is necessary because the built-in formats supported via WMS, even GeoTIFF, all return 8-bits per channel, which is not enough for terrain data. We also made some modifications to that plugin, so you may need those modifications as well. And you’ll need to configure Geoserver to serve CORS requests as well.

So I guess given the above, the short answer is, no, the Geoserver branch is unlikely to work for anyone but me. I plan to commit our BIL plugin modifications to our public fork of Geoserver, send a pull request to get it into the official Geoserver, and write up some directions for folks who want to get it up and running, soon.

In the meantime, if you have an ArcGIS Server, you’ll probably have more luck going that route. The code in the esri_terrain branch should work with just about any ImageServer, not just If you try it, let me know how it goes.



Is there currently any way to use GeoServer to serve terrain using the WebMapServiceTerrainProvider? I just have some DTED loaded as an ImageMosaic and have the DDS/BIL plugin installed from.

I get the following error:
Uncaught TypeError: Object # has no method ‘getLevelMaximumGeometricError’ (on line 277 of http://localhost:8080/Source/Scene/ImageryLayer.js)
failed to load tile geometry: [object XMLHttpRequestProgressEvent]
failed to load tile geometry: [object XMLHttpRequestProgressEvent]

var terrainProvider = new Cesium.WebMapServiceTerrainProvider({

url : ‘http://localhost:8081/geoserver/cite/wms’,

layerName : ‘cite:dted1’,

proxy : new Cesium.DefaultProxy(’/terrain/’)


Hi Ashley,

The WebMapServiceTerrainProvider hasn’t kept pace with changes happening in the other providers, so it is broken at the moment. You should be able to fix it by comparing it to one of the other providers - CesiumTerrainProvider is a good choice - and applying the differences you see there. I’d like to do it for you but I probably won’t be able to find the time for a couple of weeks, at least.