English | 简体中文
基于 Yale Bright Star Catalog 全量 9096 颗恒星 的实时沉浸式 WebGL 星空。
🚀 在线体验 · 浏览器直接渲染,零渲染依赖
由微信小程序版星空功能迁移而来 —— Web 端不再受小程序包体与渲染能力限制:
| 小程序版 | Web 版(本项目) | |
|---|---|---|
| 星表 | BSC 裁剪(mag ≤ 6.0,且编码受损) | BSC5 全量 9096 颗(mag ≤ 7.5) |
| 银河氛围星 | 900 颗 | 2600 颗 |
| 银河云气光斑 | 150 个 | 240 个 |
| 交互 | 触摸拖拽/双指缩放 | 触摸 + 鼠标拖拽/滚轮缩放/惯性/全屏 |
| 音乐 | 依赖后端 mp3 | WebAudio 程序化环境音(零资源) |
| 拾取 | 仅 65 颗命名星 | 命名星 + 月亮与五大行星 |
| 分辨率 | 受机型 WebGL 限制 | 高分屏全 DPR + resize 自适应 |
- 🌌 真实星空:位置 + 时间驱动,赤道坐标 → 地平坐标精确转换(含大气折射修正)
- 🌍 地球自转:GPU 端绕天极轴平滑旋转(30x 真实速度,肉眼可察觉星移)
- 🌙 月相圆盘:Meeus 简化算法实时月相 + 明暗分界渲染
- 🪐 五大行星:J2000 轨道根数 + 开普勒方程求解
- ✨ 星点质感:大气闪烁(双频抖动)、衍射星芒、地平线大气消光
- 🌠 流星许愿:自动流星 + 许愿触发
- ☁️ 实时天气:Open-Meteo 天气代码驱动大气能见度(雾/雨/云遮蔽暗星)
- 🏔️ 地平线:四层程序化山脊剪影(空气透视 + 月光棱线 + 顶缘羽化)+ 远镇灯光光穹 + fbm 夜云
- 🧭 定位:浏览器 Geolocation 自动定位,或手动切换 22 个城市
- 📱 移动端:设备姿态陀螺仪裸眼 3D 视差、双指捏合缩放
npm install
npm run dev # 开发
npm run build # 构建(产物在 dist/,base='./' 可部署任意子路径)React 18 + Vite + 原生 WebGL(零渲染依赖)。
星表数据:YaleBrightStarCatalog(public/data/bsc5-short.json),首屏异步加载,失败自动回退程序化星野。
src/
App.jsx 页面与全部交互(拖拽/缩放/拾取/许愿/音乐/天气/定位)
sky/
SkyRenderer.js 原生 WebGL 渲染器(天空辉光/星点/月相/流星/云/山脊)
stars.js 星表构建 + 赤道→地平坐标转换
celestial.js 太阳/月亮/行星位置(Meeus 简化算法)
parseCatalog.js Yale BSC5 JSON 解析
ambient.js WebAudio 程序化环境音