In the beginning there was Earth...
We like Google Earth 3D visualisation of GIS data sets, terrain, buildings, etc, however it can be difficult to deploy in a web or mobile app.
Cesium provides a Virtual Globe using WebGL which will currently run in the latest versions of several popular web browsers: Internet Explorer (Windows desktop / mobile), Chrome (Windows / Linix / Android), and Safari (Mac / Windows) .
nodejs and Azure
We initially tried deploying a web app running node.js however had some trouble configuring Microsoft Azure to deploy that. Azure java placeholder site
Java JEE and IBM Bluemix Liberty for Java
Our team has a lot of Java web development experience, so we tried building a deploying a standard JEE Web Application. We had quite a few difficulties deploying this to Azure, but managed to deploy to the IBM Bluemix using their Liberty for Java container. Bluemix deployed app
Bert expertly set up a Java-backed Cesium web app complete with Maven config and also brought the rest of the team up to speed. Time to stretch our legs whilst
mvn install proceeded to download half the Internet.
WebGL and Ubuntu
Bert and Greg were running Windows laptops (versions 8 and 7) having no problems rendering WebGL in Internet Explorer and Google Chrome, whilst Mikey took forever to find a way to get WebGL rendered on his Ubuntu laptop. He tried running Windows inside a VirtualBox VM, however WebGL refused to work, even after enabling 3D acceleration in the guest OS. Finally he consulted the great oracle, google search and found a stackexchange article on how to get Chrome rendering WebGL under Ubuntu. This was another well-deserved high-five moment.
3D Model Formats
WebGl supports a new JSON-based standard format for 3D assets, glTF. The Adelaide City Council 3D Model is all in 3D-Studio Max (3DS) meshes with JPEG textures.
To convert the 3DS meshes to glTF there are no known tools for doing this in a single step. Instead we need to convert the models in 2 steps:
- 3DS -> COLLADA (.DAE) using either Blender, SketchUp, or jME3
- COLLADA (.DAE) -> glTF using COLLADA2GLTF or the drag-n-drop converter
Web Feature Data Format
The native GIS feature format for Cesium is CZML. The master branch of Cesium does not natively support KML. Since the Adelaide City Council data sets are mostly KML or KMZ we need to either convert KML->CZML somehow or get Cesium to parse and render KML. Someone started an open-source branch of Cesium as a Google Summer of Code project. Apparently it is a work in progress. We will need to check out this branch of Cesium and see if it works for the KML data from the council. Hopefully the KML support just works enough for our purposes, otherwise one of us will need to find or write the KML->CZML file converter (14 more hours to go, plenty of time!)
- Update: there is a CesiumLanguageConverter project here
Saturday Night: Stay Tuned!
We plan to update this draft submission as we progress through the night. In the meantime:
- Greg is supposed to be hacking the Cesium frontend viz but is writing this submission first before sleep deprivation makes me too delirious to put sentences together.
- Bert is busy trying to get our Java JEE deploying to Azure.
- Mikey is diving deep into the Cesium js learning how we can get the frontend to display what we need.
Update 0643 Sunday
Greg trying to wake up and then head in to fix stuff or add polish...
Update 1126 Sunday
Finally managed to get a web app deployed to Azure: http://adelive.azurewebsites.net/ Developed the azure site in a separate branch "azure" of the git repo. Seems like default Azure deployment handling for git projects is very sensitive to what it happens to find in the root folder, and is easily confused. Also needed a customised web.config file to set up correct mime types for GIS data formats used by Cesium.
The screenshots here have been collected throughout the 24 hours, and attempt to show different stages of development. Also show both Azure and Bluemix deployments, plus a screenshot off my Android smartphone. If Charlie wasn't so busy I'd ask him to test our app out on his Windows phone too, but that will just have to be a bonus surprise if it works. (Cesium is meant to work in IE on Windows 8 mobile devices).
That's All Folks!
We're madly trying to add last-minute extras for our app demo, things like:
- Different coloured markers for different data features (currently they're all yellow).
- Events popup for upcoming events..
- Fly-to zoom in for a closer look at placemarks when the user clicks on them.
We're also preparing for our demo-pitch. Good luck to all teams!