**English** | [简体中文](README.zh-CN.md) | [日本語](README.ja.md) | [한국어](README.ko.md) # Galaxy Explorer 🌌 Demo Page https://zjoooooo.github.io/galaxy-explorer/ Image_2026-07-04_141404_478 Latest View image An interactive, procedurally-generated **Milky Way galaxy** — with a full 3D **Solar System**, roaming **comets**, and real **radio-galaxy jets** — that runs entirely in the browser with WebGL (three.js). No backend, no build step, no dependencies to install, no API keys — just open the page and explore. The galaxy itself is generated in code at load time: **no image assets** — the spiral arms, nebula gas, star clusters, distant galaxies and supernovae are all math. The Solar System layers real NASA-based surface textures on top for the planets, moons and Sun. **Free for study, teaching and research** — personal projects, classrooms, universities and museums — under the [PolyForm Noncommercial License 1.0.0](LICENSE). Commercial use requires a separate licence; please [open an issue](https://github.com/zjoooooo/galaxy-explorer/issues) to arrange one. ## ✨ Features - **Spiral disc** — ~85,000 dust points on four density-wave arms, with a warm core fading to cool blue arms, bright star knots, HII regions and blue clusters. - **Volumetric-looking nebula** — a continuous fBm + Worley noise shader field (domain-warped spiral, dust lanes, glowing cores) that wraps the arms in gas. - **Galactic bulge** — a smooth multi-scale glow core that slowly "breathes". - **Deep-field sky** — a twinkling star field plus ~170 tiny distant galaxies (ellipticals, spirals, edge-on disks, irregulars), a rich galaxy cluster, and one large Andromeda-style neighbour — all in just two draw calls. - **Physically-modelled ambient events** — occasional shooting stars, meteor showers, and supernovae that follow a real light curve (t².³ rise → rounded peak → two-slope fade) with a four-pointed diffraction-spike flash. - **Interactive beacons** — ~30 clickable markers (the Solar System, Sagittarius A*, famous nebulae, clusters, stars and black holes) open detailed five-language info cards with a glowing 3D ring on the selected object. Fly close to an external galaxy and its own **in-galaxy objects** appear — star-forming regions, globular clusters, supernova remnants, and radio jets, each with its own card. - **Radio-galaxy jets** — **Centaurus A** fires two needle-thin plasma beams (blue north, violet south) that flow, ripple and surge like living streams, each ending in a giant churning **radio lobe** — the anatomy radio telescopes see. **M87** keeps its famous *one-sided* jet, because its counter-jet is Doppler-dimmed into invisibility. - **Solar System guide** — follow the **Solar System** beacon and ride a six-second **wormhole** into a full 3D Solar System: the Sun, all eight planets, the Moon, Ceres, Pluto and seven more famous moons, wrapped in real NASA-based imagery (4K for the main worlds) and lit by a single sunlight source at the Sun. Click any world for its illustrated five-language card, then hit **Fly to this world** to sweep over and *ride along* with the orbiting planet while its moons appear. A **living Sun** shows drifting granulation, migrating sunspots, and prominences that pour out and disperse; a true-span **asteroid belt** with the Kirkwood gap, a **Kuiper belt**, faint rings on the giants, and translucent limb **atmospheres** complete the scene. Two **comets** roam eccentric orbits, unfurling the classic twin tails — a straight blue ion tail and a curved white dust tail — near the Sun; click one to read how they work, or **chase** it. Orbital and axial motion are intentionally slowed for observation; display scale and starting positions are arranged for readability, not a literal scale model or real-time ephemeris. - **Constellation sky view** — from Earth's card, drop through an atmosphere-white flash into an Earth-centred, rotatable star dome with **25 constellations** (the 12 zodiac plus 13 famous others) drawn from real J2000 star positions, and the **7 external galaxies** sitting inside their true host constellations — each with its own five-language photo card. - **Five languages** — labels, cards and navigation switch between English, Simplified Chinese, Traditional Chinese, Japanese and Korean (top-right selector; choice remembered). - **Cinematic look** — selective bloom + ACES tone-mapping. - **Performance-aware** — an FPS watchdog automatically reduces dust density on weak GPUs so it stays smooth on laptops, TVs and kiosks. ## 🎯 Where you can use it - **Learning & teaching** — a compact, readable, single-file example of WebGL, three.js, GLSL shaders, procedural generation, particle systems and noise (fBm/Worley). Great for astronomy, computer-graphics and creative-coding classes. Every subsystem is self-contained and commented. - **Backgrounds & screensavers** — an ambient galaxy for a landing page hero, a desktop/second-monitor background, or an idle screen. - **Digital signage & installations** — lobby screens, museum/planetarium displays, event backdrops. Runs full-screen (press `F` for cinema mode). - **A starting point** — fork it and build your own space visualization, data viz on a galactic canvas, game background, or art project. ## 🚀 Install & run **No installation.** Just get the files and serve them over HTTP (browsers block some features like audio and textures on the `file://` protocol). ```sh # 1. get the code git clone https://github.com/zjoooooo/galaxy-explorer.git cd galaxy-explorer # 2. serve it with any static server, e.g.: python -m http.server 8000 # or: npx serve . # or: php -S localhost:8000 # 3. open http://localhost:8000/ ``` **Deploy anywhere static:** GitHub Pages, Netlify, Vercel, Cloudflare Pages, S3, nginx, or any web host. Just upload the folder — there is nothing to build. ## 🎮 Controls | Control | Effect | |---|---| | **drag** | orbit the camera | | **scroll / pinch** | zoom in / out | | **click a beacon, body or comet** | open its card; selecting a body leaves the camera and motion unchanged | | **Fly to this world / Chase this comet** | (on the card) sweep over and ride along with the moving object | | **Back** | return one level: sky → Earth → Solar overview → galaxy | | **`Esc`** | staged return: close a card, then leave the current Solar level, then the Solar System | | **`F`** | cinema mode — hide all UI | | **`M`** | background music on / mute (optional, see below) | **URL parameters** - `?fx=1` — demo mode: forces a shooting star / meteor shower / supernova every 4 s so you can see the ambient effects immediately. - `?tune=1` — live sliders for the nebula-glow shader; tweak the look in real time and copy the values into the tunables when you like them. ## 🎛️ Customise Open `index.html` and edit the **tunables** block near the top of the `