Skip to content
Back to work

Team project, Luna-7 / SE-15A · 2025

LUNACY: 3D Solar System & Planetary Visualization System

A real-scale, interactive 3D simulator for the Solar System and near-Earth asteroids. Team project for NASA Space Apps 2025, selected as a Global Nominee.

  • Godot Engine 4
  • C#
  • Solar System Open Data API
  • ESA NEO API

The problem

Near-Earth objects are tracked continuously by NASA and ESA, but the public feeds land as dense JSON. Close-approach dates, orbital elements, miss distances: most people will never parse that. Awareness of what's zipping past Earth gets lost in tables. LUNACY exists to make the data legible. A live, free-fly 3D scene where every planet and asteroid sits on its real orbit, at real scale.

What I built

A scene-based Godot 4 structure with C# scripts rendering all eight planets with accurate orbital mechanics, alongside 30,000+ individual bodies (planetary satellites plus the near-Earth asteroid catalog). A free-fly camera with WASD plus mouse plus shift-to-sprint lets you travel anywhere in the system without loading screens.

Two live data feeds run the scene. The Solar System Open Data API for planetary orbital elements, and the ESA NEO API for asteroid trajectories and miss distances. Both get normalized into a common schema the renderer can consume, with a caching layer so the scene stays usable offline during demos.

The rendering pipeline is tuned for large-scale celestial data in real time. Pooled meshes for small bodies, LOD on planets, and per-orbit trajectory integration so scrubbing the time slider evaluates motion smoothly instead of snapping between samples.

Data flow: open astronomical APIs, normalization layer, Godot scene graph.

Key decisions

  1. Godot 4 + C# over Unity or Three.js

    alternative · Three.js in the browser

    Godot gave the team faster iteration on physics and a single executable that jurors could run offline. Browser WebGL would have hit memory ceilings long before we reached 30,000 bodies.

  2. Two upstream APIs instead of one

    alternative · Scrape everything from a single NASA feed

    The Solar System Open Data API has better planetary orbital elements. ESA NEO is authoritative on asteroid trajectories. Pulling each from its best source gave the scene consistent physics without hand-tuning.

  3. Real-scale orbital mechanics with a perception toggle

    alternative · Exaggerate every body so it's visible at default zoom

    Accurate scale is the whole point, but at true scale most asteroids are sub-pixel next to Earth. A perception toggle swaps between dramatic and true-scale modes so the demo communicates both intuition and honest numbers.

  4. Free-fly camera instead of on-rails tours

    alternative · Guided camera paths that auto-pan between planets

    Curiosity-first exploration matches how recruiters and students actually interact with a solar-system scene. A free-fly rig with shift-to-sprint lets anyone get where they want in seconds.

Outcomes

  • Bodies rendered

    30,000+

    Planets, satellites, and the near-Earth asteroid catalog

  • Live data sources

    2 APIs

    Solar System Open Data · ESA NEO

  • NASA Space Apps 2025

    Global Nominee

    Selected from 15,000+ teams across 160+ countries

  • Stack

    Godot 4 + C#

    100% C# codebase, GPL-3.0 licensed

Links