File size: 5,189 Bytes
4abe34c
 
d2226ad
 
 
4abe34c
d2226ad
4abe34c
 
d2226ad
4abe34c
 
d2226ad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
---
title: Project Orb
emoji: 🪐
colorFrom: gray
colorTo: indigo
sdk: docker
app_port: 7860
pinned: false
license: mit
short_description: Interactive 3D Planetarium & Sky Navigator
---

# Project Orb - Interactive 3D Planetarium & Sky Navigator

![Python](https://img.shields.io/badge/Python-3.10-yellow.svg)
![FastAPI](https://img.shields.io/badge/FastAPI-0.95-green.svg)
![React](https://img.shields.io/badge/React-18.0-blue.svg)
![Three.js](https://img.shields.io/badge/Three.js-r3f-ffffff.svg)
![License](https://img.shields.io/badge/License-MIT-orange.svg)

A scientifically accurate, browser-based 3D planetarium that renders the night sky in real-time. Project Orb combines a high-performance React/Three.js frontend with a robust Python astronomy engine to visualize stars, planets, constellations, and deep sky objects based on precise location and time data.

---

## Screenshots

<img width="1920" height="1080" alt="Project-Orb-Preview" src="" />

## Features

1. **Scientifically Accurate Astronomy Engine:**
   - **Backend:** Powered by Python's `Skyfield` and NASA's JPL Ephemeris (`de421.bsp`), calculating precise Right Ascension (RA), Declination (Dec), Altitude, and Azimuth for celestial bodies.
   - **Real-Time Data:** Calculates sky positions based on the user's exact latitude, longitude, and local time.

2. **Immersive 3D Rendering:**
   - **Star Field:** Renders thousands of stars from the Hipparcos catalog using custom shaders for realistic twinkling, spectral coloring, and magnitude-based sizing.
   - **The Milky Way:** A volumetric particle system representing the galactic plane, generated procedurally to align with celestial coordinates.
   - **Solar System:** accurate rendering of the Sun, Moon, Planets (including Uranus/Neptune), and Dwarf Planets (Pluto, Ceres, Eris, etc.).

3. **Constellation & Deep Sky Management:**
   - **Tiered Constellations:** View the sky in layers: "Iconic" (Big Dipper, Orion), "Zodiac", and "Tier 3" (The rest of the 88 IAU constellations).
   - **Deep Sky Objects (DSOs):** Interactive markers for Galaxies, Nebulas, and Star Clusters (Messier Catalog) with visual distinct types.
   - **Interactive Lines:** Hover over constellation lines to highlight them; click to view detailed mythology and astronomical data.

4. **Dynamic Event System:**
   - **Meteor Showers:** A smart particle system that triggers specific showers (Perseids, Geminids, etc.) based on the selected date, featuring scientifically accurate radiant perspective logic.
   - **Time Travel:** A "Time Controller" HUD allowing users to play/pause time, scrub through a 24-hour cycle, or jump to specific historical/future dates to witness celestial alignment changes.

5. **Advanced Navigation & UI:**
   - **Smart Search:** A unified search bar to instantly locate and pan the camera to Cities (Location) or Celestial Objects (Stars, Constellations).
   - **Context Menu:** A custom right-click menu to toggle UI visibility (Cinematic Mode), enter Full Screen, or perform a Hard Reset.
   - **Info Panels:** Sleek glassmorphism panels displaying detailed information about selected objects.
   - **Compass & Grid:** A HUD compass and azimuthal grid to help orient the user in 3D space.

## Pre-requisites and Setup

**Backend Setup:**

- Download and Install `python 3.10.10` and `uvicorn 0.40.0`, then from backend directory of this project, install required python dependencies.

```bash
cd backend
# Install dependencies
pip install -r requirements.txt
```

**Frontend Setup:**

- Download and Install `Node.js v24.13.0` and/or `npm 11.6.2`, then from frontend directory of this project, install required Node.js dependencies.

```bash
cd frontend
# Install dependencies
npm install three @react-three/fiber @react-three/drei axios
```

## Usage/Running

### 1. Backend (API)

The backend handles the astronomical calculations.

```bash
cd backend
# Run the server
uvicorn main:app --reload
```

The API will start at http://localhost:7860

**_Keep Backend running. In new terminal, start frontend._**

### 2. Frontend (UI)

The frontend renders the 3D environment.

```bash
cd frontend
# Run the development server
npm run dev
```

Open the link provided (usually http://localhost:5173) in your browser.

## Controls

1. Left Click + Drag: Rotate the camera (Look around).

2. Scroll: Zoom in/out (Change Field of View).

3. Right Click: Open the Context Menu (Hide UI, Fullscreen, Refresh).

4. Left Click (on Object): Select a star, planet, or constellation to view details.

5. Time Slider: Drag the bottom slider to change the time of day instantly.

## Architecture

1. **Data Source:** The app uses the `hipparcos.parquet` dataset for star catalogs and `de421.bsp` (NASA JPL) for planetary ephemerides.

2. **Coordinate System:** Converts Geocentric Equatorial coordinates (J2000) into Topocentric Horizontal coordinates (Alt/Az) for the observer's location.

3. **Performance:** Uses React Three Fiber's instanced rendering and custom shaders to maintain high FPS even with thousands of objects.

<h1></h1>

This README.md file has been improved for overall readability (grammar, sentence structure, and organization) using AI tools.