All Projects

helio

Archived

Solar system renderer built on Three.js with accurate orbital mechanics, real ephemeris data, and a time-scrubbing UI.

Three.jsWebGLShadersPhysics
View on GitHub

helio renders the solar system in real time using actual NASA JPL ephemeris data for planetary positions. It was originally built to learn Three.js but ended up being a fairly complete implementation of the gravitational n-body problem.

Technical details

Orbital mechanics

Planetary positions are computed using the VSOP87 analytical series, giving sub-arcsecond accuracy for dates within a few thousand years of J2000.

Rendering

Each body is rendered with a physically-based material. The sun uses a custom shader with animated surface turbulence. Atmospheres are done with a scattering shader based on Sean O'Neil's GPU Gems 2 article.

Time scrubbing

The timeline UI lets you scrub through any date from 3000 BCE to 3000 CE. At real-time speed it tracks actual planetary positions.

Controls

  • Drag to orbit
  • Scroll to zoom
  • Click any body to lock the camera to it
  • T to open the time scrubber
  • L to toggle orbital path lines

Status

Feature-complete. Not actively developed but occasionally updated for dependency security.