CESIUM

Changing how the world views 3D.

THIS DEMO IS DIVIDED INTO SEVERAL SECTIONS...
Project
Cesium
Demo
Documentation

Project

Cesium is frequently used to build demonstration apps for geospatial and defense use-cases. We would like you to create a simple showcase of the Cesium platform for geospatial data visualization and 3D operating picture for a DoD audience. To do this, build a CesiumJS app that visualizes whether a moving vehicle can see a flying drone/plane. You may assume the vehicle can see in any direction up to a fixed distance.

Some guidelines for the app are:
• You may choose to use Cesium's Getting Started tutorial (
https://cesium.com/docs/tutorials/getting-started/) as a starting point for your project, or set up from scratch and take your own approach. Alternatively you may use a Cesium Sandcastle.
• You can use this CZML file (a JSON-based format for describing scenes in Cesium) for this scenario (
https://drive.google.com/file/d/1pu9yDgyPbRvakGst7HXY1xsSkmd5Ga5x/view?usp=sharing)
• You are free to make your project open-source and publicly visible.
• You may use assets available on Cesium ion, including the from Asset Depot, Bing Maps Imagery, Cesium World Terrain, and assets from Vricon. You may also upload your own data to Cesium ion, or ingest any supported third-party data feeds into CesiumJS.
• You may use additional UI elements to help tell your story.

Reference documentation links:
• CesiumJS API Reference:
https://cesium.com/docs/cesiumjs-ref-doc.
• CesiumJS Sandcastles:
https://sandcastle.cesium.com.
• Cesium ion:
https://cesium.com/ion
• Code example for how to load a CZML scenario into CesiumJS: https://sandcastle.cesium.com/index.html?src=CZML.html
• All Cesium documentation and tutorials: https://cesium.com/docs/

Please write a 1-page document giving an overview of the demo you have created, and include a walk-through of how you would demo this to the audience and why.

The project should be completed in three hours. If you finish faster, that's great but we do ask that you don't spend any more time than three hours. Do not feel the need to make it an exhaustive demo.

What is Cesium?

Cesium is an end-to-end platform that unleashes the potential of 3D data by making it easy for developers to visualize, analyze, and share 3D content.

Cesium is a complete platform for 3D geospatial data—handling everything from optimization to visualization to analytics. At the heart of Cesium's platform is 3D tiling, which transforms massive and diverse 3D geospatial data into streamable 3D content ready to be used in applications and several other environments.

The Toyota Research Institute uses Cesium to create accurate simulations of road environments captured by sensors on its autonomous vehicles. Propellor uses Cesium to visualize ultra high resolution digital twins from drone data for remote site inspections, and each year NORAD, one of our earliest adopters, uses Cesium to track Santa's path around the world on Christmas Eve.

Learn more about Cesium here: 
https://cesium.com/

Demo

View the CesiumJS app that visualizes whether a moving vehicle can see a flying drone/plane.

Documentation

I started the project by following Cesium's Getting Started tutorial (https://cesium.com/docs/tutorials/getting-started/). After 30 minutes, I successfully embedded CesiumJS in my website and loaded the 3D objects provided in the project description as assets in my Cesium ion account.

Then, I tried to set up the scenario using the 3D objects I loaded to my ion account. I initially thought the objects automatically loaded with default tileset locations and tried to zoom into the objects using the viewer variable. After about 30 minutes of trying to troubleshoot the issue, I realized the tilesets needed to be set to a location in my ion account.

Therefore, I decided to use Cesium Sandcastle with the CZML file provided in the project description. I hosted the CZML file using GitHub and GitCDN and followed the code example for how to load a CZML scenario into CesiumJS (
https://sandcastle.cesium.com/index.html?src=CZML.html).

I would start my demo by explaining Cesium and its relevance to the DoD audience. There's a high probability that at least one person viewing the demo isn't familiar with Cesium, so I would take the first few minutes of the demo to explain what Cesium is. I'd say something like, "CesiumJS is a JavaScript library for 3D maps on the web. Cesium ion is your hub for discovering 3D content and tiling your own data for streaming. CesiumJS and ion work together to enable you to build world class 3D mapping applications."

Then, I'd show how simple it is to use a Cesium app by navigating through some pre-loaded tilesets in the demo section of this page. To keep the audience engaged, I'd ask them to give me a location and I'd use the given location in a search on the Cesium app to demonstrate the search functionality. This would also demonstrate that Cesium apps could be useful for mission planning in foreign territories.

Finally, I would show another example relevant to the DoD audience using the scenario provided in the project description. I'd navigate to Cesium Sandcastle and walk through the scenario showing the drone flying over the vehicle. I'd pause the scenario and zoom into the vehicle's perspective to demonstrate that the moving vehicle can see the drone flying.

Overall, I truly enjoyed this project and I learned a lot about Cesium. If I had more time I would've embedded the scenario in my website and added tracking to the vehicle to see the plane in real time.