“Enabling Cesium for Liquid Galaxy” is a Google Summer of Code 2016 (GSoC) project for the Liquid Galaxy Project developed by Abhishek V. Potnis, a PhD student at Indian Institute of Technology Bombay under the mentorship of Andrew Leahy from Western Sydney University.
The Liquid Galaxy Project is dedicated to developing immersive panoramic systems. A typical Liquid Galaxy System is composed of one or multiple CPUs driving multiple displays. Liquid Galaxy applications adhere to the Master-Slave architecture. The master display is used for navigation, while the slave displays follow and orient themselves in reference to the master.
Liquid Galaxy started off using Google Earth. This GSoC project enabled Cesium to run across multiple displays, providing a panoramic experience to the users. It focused on endowing Cesium with features such as camera synchronization and state synchronization across displays.
The primary features that have been implemented for this project are
- Master Cesium to slave Cesium camera synchronization across displays
- Master Cesium to slave Cesium state synchronization across displays
- Master Google Earth to slave Cesium camera synchronization across displays
- Master Cesium to slave Cesium timeline synchronization across displays
- Lighting, fog, and FPS toggle functionality at master Cesium
- Terrain provider selection functionality at master Cesium
- Imagery provider selection functionality at master Cesium
- Scene mode selection functionality at master Cesium
- Reload all slaves functionality at master Cesium
During the course of this project, camera and state synchronization features were implemented and tested as a Cesium application. Cesium’s server.js has been modified to relay protobuf-based sync messages over websocket for the browsers, and over UDP for Google Earth ViewSync messages for synchronization across the displays. The application has thus been designed to work with both Cesium and Google Earth as the master instance. The future work of this project would involve extending the Cesium core to support camera and state synchronization. The source code of the project can be found on Github.
The following video demonstrates the developed application. The master instance in this case is Google Earth running on MacBook Pro with the SpaceNav Controller for navigation, while the slave instances are Cesium displays that synchronize and orient themselves in reference to the Master over UDP.