[English](README.md) | **简体中文** | [日本語](README.ja.md) | [한국어](README.ko.md) # Galaxy Explorer 🌌 演示页面 https://zjoooooo.github.io/galaxy-explorer/ Image_2026-07-04_141404_478 一个交互式、由代码程序化生成的**银河系**——包含完整的 3D **太阳系**、漫游的 **彗星**,以及真实的**射电星系喷流**——完全在浏览器中用 WebGL(three.js)运行。 没有后端、无需构建、无需安装依赖、不需要 API 密钥——打开页面即可探索。 星系本身在加载时由代码生成:**没有任何图片素材**——旋臂、星云气体、星团、 远处的星系和超新星,全都是数学运算的结果。太阳系则在此之上为行星、卫星和 太阳叠加了基于真实 NASA 数据的表面纹理。 **可自由用于学习、教学与研究**——个人项目、课堂、高校与博物馆——遵循 [PolyForm 非商业许可证 1.0.0](LICENSE)。商业用途需另行获得授权,请[提交 issue](https://github.com/zjoooooo/galaxy-explorer/issues)洽谈。 ## ✨ 特性 - **旋涡星盘** — 约 85,000 个尘埃点分布在四条密度波旋臂上,暖色内核过渡到冷蓝色 旋臂,还有明亮的恒星团块、HII 电离氢区和蓝色星团。 - **体积感星云** — 一个连续的 fBm + Worley 噪声着色器场(域扭曲旋涡、尘埃带、 发光核心),用气体包裹旋臂。 - **星系核球** — 平滑的多尺度发光核心,缓慢地“呼吸”。 - **深空背景** — 闪烁的星场,加上约 170 个遥远的小星系(椭圆星系、旋涡星系、 侧向盘状星系、不规则星系)、一个致密星系团,以及一个类似仙女座的大邻居星系 ——全部仅用两次绘制调用完成。 - **基于物理的环境事件** — 偶尔出现的流星、流星雨,以及遵循真实光变曲线 (t².³ 上升 → 圆润峰值 → 双斜率衰减)的超新星,并带有四芒衍射星芒闪光。 - **可交互信标** — 约 30 个可点击标记(太阳系、人马座 A*、著名星云、星团、 恒星与黑洞),点击弹出详细的五语言信息卡,选中天体带发光 3D 光环。飞近某个 系外星系,它自己的**星系内天体**便会出现——恒星形成区、球状星团、超新星遗迹 和射电喷流,各有专属卡片。 - **射电星系喷流** — **半人马座 A** 喷射出两道针尖般纤细的等离子束(北蓝、南紫), 它们像活的水流一样流动、泛起涟漪、涌动,各自终结于一团巨大翻腾的**射电瓣** ——这正是射电望远镜所看到的结构。**M87** 则保留了它著名的*单侧*喷流,因为 它的反向喷流被多普勒减暗到不可见。 - **太阳系指南** — 跟随**太阳系**信标,乘上六秒的**虫洞**进入完整的 3D **太阳系**: 太阳、八大行星、月球、谷神星、冥王星,以及另外七颗著名卫星,覆盖着基于真实 NASA 数据的图像(主要星球为 4K),并由太阳处唯一的日光光源照亮。点击任意星球 查看其带插图的五语言卡片,再点击**飞跃到此星球**,即可掠过并**伴随**公转中的 行星一同飞行,同时它的卫星逐一显现。一颗**活的太阳**展现漂移的**米粒组织**、 迁移的**黑子**,以及喷涌而出又逐渐消散的**日珥**;真实跨度的**小行星带** (带**柯克伍德缝**)、**柯伊伯带**、巨行星上的暗淡光环,以及半透明的 **大气临边辉光**共同构成整个场景。两颗**彗星**在偏心轨道上漫游,在近日处展开 经典的双尾——笔直的蓝色**离子尾**和弯曲的白色**尘埃尾**;点击其中一颗即可 了解它们的原理,或**追上**它。为便于观察,公转和自转已特意放慢;显示比例和 初始位置以易读为目的,并非严格比例模型或实时星历。 - **星座天球视图** — 从地球的卡片出发,穿过一道大气般纯白的闪光,进入以地球 为中心、可旋转的星空穹顶,其中有 **25 个星座**(12 个黄道星座加 13 个其他 著名星座),由真实的 J2000 恒星坐标连成,还有 **7 个系外星系**坐落在它们 真正的宿主星座之中——各有专属的五语言图片卡片。 - **五种语言** — 标签、卡片与导航可在英文、简体中文、繁体中文、日文和韩文之间 切换(右上角选择器,选择会被记住)。 - **电影级观感** — 选择性泛光(bloom)+ ACES 色调映射。 - **性能自适应** — FPS 监视器会在性能较弱的 GPU 上自动降低尘埃密度,让它在 笔记本、电视和一体机上都能流畅运行。 ## 🎯 适用场景 - **学习与教学** — 一个紧凑、易读的单文件示例,涵盖 WebGL、three.js、GLSL 着色器、程序化生成、粒子系统和噪声(fBm/Worley)。非常适合天文、计算机图形学 和创意编程课程。每个子系统都自成一体并有注释。 - **背景与屏保** — 用作落地页主视觉、桌面/副屏背景,或待机画面的氛围星系。 - **数字标牌与装置** — 大堂屏幕、博物馆/天文馆展示、活动背景板。可全屏运行 (按 `F` 进入影院模式)。 - **一个起点** — fork 它,构建你自己的太空可视化、以星系为画布的数据可视化、 游戏背景或艺术项目。 ## 🚀 安装与运行 **无需安装。** 只要拿到文件,并通过 HTTP 提供服务即可(浏览器会在 `file://` 协议下屏蔽音频、纹理等部分功能)。 ```sh # 1. 获取代码 git clone https://github.com/zjoooooo/galaxy-explorer.git cd galaxy-explorer # 2. 用任意静态服务器托管,例如: python -m http.server 8000 # 或: npx serve . # 或: php -S localhost:8000 # 3. 打开 http://localhost:8000/ ``` **部署到任意静态托管:** GitHub Pages、Netlify、Vercel、Cloudflare Pages、S3、 nginx 或任何 Web 主机。上传文件夹即可——没有任何需要构建的东西。 ## 🎮 操作 | 操作 | 效果 | |---|---| | **拖拽** | 环绕相机(orbit) | | **滚轮 / 双指缩放** | 放大 / 缩小 | | **点击信标、天体或彗星** | 打开其信息卡;选择天体不会改变相机或运动 | | **飞跃到此星球 / 追上这颗彗星** | (在卡片上)掠过并伴随移动的天体一同飞行 | | **返回** | 逐级返回:星空 → 地球 → 太阳系总览 → 银河系 | | **`Esc`** | 分阶段返回:先关闭卡片,再离开当前太阳系层级,最后离开太阳系 | | **`F`** | 影院模式——隐藏所有 UI | | **`M`** | 背景音乐 开 / 静音(可选,见下文) | **URL 参数** - `?fx=1` — 演示模式:每 4 秒强制触发一次流星 / 流星雨 / 超新星,让你立刻看到 环境特效。 - `?tune=1` — 星云辉光着色器的实时滑块;实时调整观感,满意后把数值复制进 tunables。 ## 🎛️ 自定义 打开 `index.html`,编辑 `