GODSIGH/SPEC4.md
type-two 07993c77ff feat: Solar System mode — 'Travel to' the planets (Wave 4)
New '◉ Solar System' mode: leaves the Earth OSINT globe and renders a
heliocentric orrery — Sun + 8 planets as spheres textured with real (CC BY 4.0,
self-hosted) imagery, at their TRUE current positions (Schlyter series, incl.
Uranus/Neptune), with orbits. A 'Travel to…' panel flies the camera to any body;
'Return to Earth' restores the full OSINT view (globe, all layers, clock, camera,
frustum, lighting — all saved/restored). Planets exaggerated + distances
compressed for a readable orrery; Saturn ring; camera headlight for even lighting;
far plane widened to 8e9 (default 5e8 would clip the whole system).

Textures harvested from Solar System Scope (CC BY 4.0), self-hosted in textures/
(WebGL taints cross-origin), credited in-app + README + textures/TEXTURES_CREDIT.md.

Components verified in-browser (ellipsoids render, positions correct, mode
enter/exit, UI, textures). Full-orrery screenshot pending a real GPU frame — the
headless preview can't complete async worker geometry (backgrounded tab clamps).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 10:19:21 +10:00

4.5 KiB
Raw Blame History

GODSIGH — Wave 4 Spec: Solar System mode ("Travel to…")

Author: Claude Fable 5, 2026-07-14, on John's request. Built by Fable in the same session. Prereq: Waves 13.2 live at partly.party/godsigh. This is additive — a new mode, not a layer.

0. Mission

A "Travel to…" experience: leave Earth and fly out to a Sun-centred solar system rendered from free/public data — the 8 planets (+ Sun, Moon) as spheres textured with real imagery, at their true current positions, with orbits, and smooth camera flights between them. Everything computed or harvested from free/CC/public-domain sources (the "harvest it all" ethos, applied to the sky).

1. Ground truth — verified 2026-07-14 (CORS-probed)

  • Planet textures: solarsystemscope.com /textures/download/2k_*.jpg (CC BY 4.0) — 200. No ACAO ⇒ self-host (WebGL taints cross-origin textures). Download the 2k set into textures/.
  • Real surface tiles (Phase 2): NASA Moon Trek WMTS (trek.nasa.gov/tiles/Moon/…) and USGS/OpenPlanetaryMap Mars tiles — both 200 with ACAO: *. Usable as Cesium imagery providers.
  • Positions: computed (Schlyter low-precision series, already proven in js/layers/celestial.js).

2. Architecture decision (locked)

Cesium's globe is Earth-at-origin, so a Sun-centred scene can't move the globe. Therefore Solar System mode HIDES the Earth globe (scene.globe.show = false, hide all Earth OSINT layers) and renders a heliocentric orrery with entities; exiting restores the Earth OSINT view. The detailed Earth globe stays the "home" view; the orrery is a distinct mode.

  • Bodies: Sun + Mercury·Venus·Earth·Mars·Jupiter·Saturn·Uranus·Neptune (+ Moon near Earth) as ellipsoid entities with ImageMaterialProperty (self-hosted textures). Saturn gets a ring (2k_saturn_ring_alpha.png on a flat disc / ring geometry). Real axial tilt applied via entity orientation.
  • Positions: heliocentric xyz from Schlyter (extend the celestial ELEM table with Uranus & Neptune; Earth = sunRect). Compressed distance scale (tune in-browser) + exaggerated body sizes so it reads (true scale is unviewable — Sun↔Neptune is 30 AU vs Sun radius 0.005 AU). Directions/relative order stay true.
  • Orbits: faint polyline ellipses per planet (sample the orbit over one period).
  • Travel-to: a mode panel with a destination per body; clicking camera.flyTo the body with a sensible offset. "Return to Earth" exits the mode.
  • Skybox/Sun light: keep Cesium starfield; a point of light at the Sun optional.

3. Phases

  • P1 (core, must-ship): mode toggle + orrery (all 8 planets + Sun + Moon textured, true positions, orbits) + travel-to camera flights + return-to-Earth. Self-hosted 2k textures. Attribution in-app + README.
  • P2 (stretch): "Land" on Mars and the Moon with real NASA/USGS tile imagery. Cleanest path that avoids fragile globe-ellipsoid swapping: when travelling to Mars/Moon, load an 8k real-imagery texture (still real, harvested) OR, if a runtime globe swap proves stable, a true tile-imagery explorable body. Attempt the swap; fall back to hi-res texture if fragile.
  • P3 (later, noted): OSINT-on-other-worlds — Mars rover positions (NASA public APIs), Apollo landing sites, active orbiters.

4. Files

  • textures/ — self-hosted CC planet maps (2k set) + TEXTURES_CREDIT.md (CC BY 4.0 attribution to solarsystemscope.com).
  • js/solarsystem.js — the mode: build bodies, orbits, travel-to menu, enter/exit.
  • HUD: a "◉ Solar System" toggle (top of the HUD, near the Data/Photo buttons) that enters/exits the mode; a destination panel while inside.
  • main.js — wire the mode (hide/restore globe + Earth layers + timeline; the mode owns its own render/positions).

5. Verify (browser, per phase)

Zero console errors; textures load (self-hosted, same-origin); planets at plausible positions (inner planets near Sun, gas giants far, correct order); travel-to flies smoothly and arrives framed; return-to-Earth restores every layer + the globe exactly. Screenshot the orrery and an arrival. Subpath-safe (textures/…, relative). Commit per phase; deploy = rsync js/ + textures/ (no nginx change — all static/CORS-open).

6. Attribution (license compliance)

Planet textures © solarsystemscope.com, CC BY 4.0 — credit in-app footer + README + textures/TEXTURES_CREDIT.md. Mars/Moon tiles: NASA/USGS/OpenPlanetaryMap (public domain / open) — credit when P2 lands.

7. Out of scope (Wave 4)

Comets, asteroids, moons beyond Earth's, true-scale mode, VR. Roadmap.