WebVR Cesium test

Just for fun, I've created a WebVR test using Cesium (1.25) and milsymbol.js.

at: https://github.com/workingDog/webvrtest

I don't have a VR device, so the question is, does it work?

Anyone with a VR device willing to try?

We are really interested to see how people get on with this. We do not have a VR device in-house, but are close to making the investment!


i just tried the code with my HTC Vive and the latest Chrome WebVR Version, see https://webvr.info/get-chrome/.

Unfortunately the code isn’t just working. If i just use the provided code, the headset doesn’t show anything. But the browser reacts to movement of the headset and cesium moves around, but it still seems to have a problem with the directions…

After some research, i changed the cesium code to do the following thinks

  • use vrDisplay.requestPresent

  • use vrDisplay.requestAnimationFramework

  • call vrDisplay.submitFrame to show the content on the vrDevice.

You can find my code here :


just clone, npm install, node server.js and call http://localhost:8080/Apps/Sandcastle/gallery/VR.html

This example just shows the globe on the vrDisplay, the next steps are to use the vrDisplay movement and fix the at the moment missing stereo effect.

Maybe someone has an idea how to change the Cesium Code to use the provided projectionMatrix and ViewMatrix for both eyes from the vrDevice, as described in the newest WebVR Specification update.

Hi jbo023,

I wonder if you can give some details about your Vive experience with https://github.com/jbo023/cesium/tree/vr. What was your Chromium and WebVR version?

You mentioned "... the browser reacts to movement of the headset and cesium moves around". I tried the code on my Vive set up and the movement was not registered at all. Keyboard and mouse still work as usual.

I am using Chromium 56.0.2910.0 with WebVR enabled and an HTC Vive. I am only trying to capture some movement input from the headset, not dealing with the display issues yet.

Thanks and cheers,

Hi Jannes,

Thanks for the info! The Cesium issue to watch is #4311. A pull request - even a partially complete one - is also very welcomed!


Hi I was just wondering if you ever implemented the vrDisplay movement.

I am currently trying to connect the Vive to our existing cesium project, but it seems that cesium natively only supports Google cardboard.

Is there a way around this restriction?


Hi there,

Unfortunately, we haven’t worked with vrDisplay movement, just the cardboard. However, we encourage you to try it and keep us updated if you make any progress!


  • Rachel

I was able to get the movement to work (sort of) by adjusting the DeviceOrientationController.js in /Source/Scene/ to use the sensor Data (pose = frameData.pose; ori= pose.orientation;) and convert the value ranges to the intended Alpha(180->-180) Beta(0->360) and Gamma(90->-90) values that Cesium would normally get if a cardboard device was used.
This works relatively well. My only Problem is, that the stereo effect that is used by Cesium for cardboard devices is totally off for high-end HMDs like the Vive. (Steroscopic Rendering can be found in Scene.js at about line 2145). Das anyone have any idea how to adjust that to webVR Standards? If so, I could make a pull request and maybe Cesium will have proper webVR integrated in the near future.

Hi there,

Sounds awesome!

Unfortunately the team isn’t very familiar with WebVR standards, but if you can pose more specific rendering questions we’ll probably be able to help. What are you trying to do next?

In any case, thank you for your work on this front! Many community members are excited about the prospect of proper webVR for Cesium – we just haven’t had the bandwidth to tackle it yet. Getting a PR in for this would definitely make you a community hero! Please keep us updated on how we can help.


  • Rachel

Hi guys,
We would also love to have WebVR support in Cesium - right now WebVR is becoming really stable especially on Oculus (GearVR) and HTC Vive.

Maybe we (all interested parties) can do some fundraising to fund development Open Source Cesium WebVR components?

peacema... - do you mind sharing your code or snippets?

don't forget, there is also the NICTA plugin code at:


We definitely want to support VR in Cesium (see GitHub Issue #4311)! The team is spread thin right now, but we’d be more than happy to provide guidance and review contributions!



@sharemaporg if you or other organizations are able to share the development cost of WebVR improvements, we could certainty get it prioritized. Feel free to email me to discuss at pcozzi@agi.com