Inner Solar System in VR

This site is a set of WebXR experiments to show Inner Solar System in a VR Headset for informative purposes. Click on the images below to open corresponding experiment page. See below for more information.


Inner Solar System at the moment Inner Solar System last 365 days
Actual sizes of Inner Solar System (+Jupiter) objects

The aim of these experiments is to show the positions and the sizes of the planets and their orbits as close to reality as possible while being easily observable within a VR headset. This is particularly difficult because space is mostly empty so it is impossible to show and give a true feeling of everything in a single frame, so the scale of length used to draw the planets and the scale of length used to represent distances among them should be different or navigation has to be used to travel large distances.

Although it is possible to view the pages in a non-VR environment, the experience will be far from what is intended.

More information is given in the pages of individual experiments.


Technical Information

The whole application is actually pretty simple but not very easy to understand quickly without a little bit of astronomy background. The backend (api) provides the current and past/future positions of the planes and other space objects using Skyfield and SpicePy (py interface to SPICE) astronomy packages using real astronomical data (Ephemeris) made publicly available from places like NASA Jet Propulsion Laboratory. Particularly, DE421 Ephemeris is currently being used.

Different coordinate systems (reference frames) can be used for these calculations to result positions in specific reference frames, and ECLIPJ2000 is used in this application. In ECLIPJ2000, the center is Solar System Barycenter and one of the planes defined by primary axes (XY) is Earth's ecliptic plane (the plane Earth orbits around Sun). The positions in ECLIPJ2000 is given in kilometers.

The backend (api) is coded in Python and hosted at Google AppEngine.

The VR 3D environment in frontend (web pages) is coded using A-Frame web framework. The positions in ECLIPJ2000 is set directly to the 3D objects and a single rotation is used to turn ECLIPJ2000 to the coordinate system used in A-Frame.

There are always two scaling factors used; one is to scale the planets and the sun, other is to scale the distances between them (so the actual positions). They normally differ by a factor in the range of 1000x, but different scaling factors can be used in different experiments to give a particular feeling. Also, Sun is much bigger than the planets, and normally it is shown smaller (~10x) than what it should be comparing to the planets.

The frontend app is hosted at Netlify and tested on Oculus Go and Quest. I use Glitch during development, and export it to Github and when merged to master this is deployed to Netlify.

Privacy Notice

This site uses Google Analytics with IP Anonymization without Remarketing and Advertising Reporting Features. If you do not wish your data to be collected by Google Analytics, you can use Google Analytics Opt-out Browser Add-on.


Please send an email to: info at


Creative Commons License
This work by Mete Balci is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.