Enabling Cesium for Liquid Galaxy

Hello All,

I am Abhishek Potnis. I am working on a GSoC 2016 project for Liquid Galaxy. The project is titled as ‘Enabling Cesium for Liquid Galaxy’. My aim is to enable Cesium for use across multiple displays with the camera and content being synchronized across the displays. I also intend to work on implementing the Space Navigation Camera Control for Cesium.

GSoC Project Description: https://summerofcode.withgoogle.com/projects/#6055698639093760

Github Repository: https://github.com/abhishekvp/cesium-lg

Blog Post: https://abhishekvp.wordpress.com/2016/04/27/google-summer-of-code-2016-with-liquid-galaxy/

I have so far achieved camera cloning between a master and slave display. I am using web sockets for communication. I have been struggling to get the camera rotation right for quite sometime now. I intend to have the camera rotated - specifically the heading. So for a 3 display system, the center display looks straight, the display on the left has its camera rotated to look to the left and likewise for the right display. I first[1] tried out an approach that had been used with Google Earth before[2], but the desired rotation is not achieved with that approach.

I have been experimenting[3] with using |lookRight()| but I would want a variable angle depending on the extent and height of the camera. I would be very grateful, if someone here could point me in the right direction to achieve the desired camera rotation.


[1] https://github.com/abhishekvp/cesium-lg/blob/master/Apps/Slave-Client2.html#L42

[2] https://github.com/joshhendo/WonderamaQuickStart/blob/master/src/sample/slave.html

[3] https://github.com/abhishekvp/cesium-lg/blob/master/Apps/Slave-Client1.html


Abhishek Potnis,

Graduate Student,

CSRE, Indian Institute of Technology Bombay


Hi Abhishek,

This is an exciting project, thanks for sharing!

I believe this would work like Cesium’s WebVR support where each eye uses a different off-center view frustum. This will require some core Cesium changes, but the foundation has already been laid when we did WebVR so it shouldn’t be too hard. A good place to start is to search for “useWebVR” in Scene.js, e.g.,



Hi, we're about half-way thru Summer of Code 2016.

We have basic camera sync demo'able as a Cesium app.

See https://www.youtube.com/watch?v=P_OdDbV9lZE

By adding a small websocket relayer to Cesium's nodejs server.js we can share the camera pose from a master instance of Cesium to slave instances which are running in separate browsers or machines.

We've also added handling of the camera pose being broadcast from a Google Earth client. In Liquid Galaxy world we call this 'view sync', this is the primary feature that makes Earth work on multi-PC wraparound display walls. In the video above the camera control is coming from me using Google Earth with a Space Navigator 3D mouse. The camera pose is sent thru server.js relayer and syncs 7 separate Cesium's running on Intel NUC's attached to 55" LCD's

At the moment Abhishek's project is developing an "Cesium sync app", once that has a few more features we want to figure out what could be used in Cesium core.

Cheers, Andrew (Alf) Leahy
Western Sydney University && Google Summer of Code Liquid Galaxy Mentor

Hi Andrew,

Thanks for the update! The video looks great, nice progress so far!

Do you or Abhishek want to write a short guest post on the Cesium blog about your GSoC project?