Skip to content

JohnvenTom/Web-Planet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

3D 交互式土星粒子系统

一个基于 Three.js 和 MediaPipe 实现的实时交互式 3D 土星粒子系统,支持手势控制和鼠标交互。

🎯 项目特色

🌌 视觉效果

  • 120万粒子 - 极致的粒子数量,营造震撼的视觉效果
  • 真实土星结构 - 包含 C 环、B 环、卡西尼缝、A 环、F 环
  • 土星扁率 - 真实的扁球体形状(Y 轴压缩 0.9 倍)
  • 真实轴倾角 - 26.73 度,符合土星真实数据
  • 5万星星 + 星云 - 美丽的星空背景
  • 背景行星 - 火星、地球、水星,带 FBM 噪声纹理
  • 混沌噪声效果 - 近距离时粒子产生高频抖动,模拟气体湍流
  • 金色主题界面 - 玻璃面板、金色装饰、深邃宇宙背景

🎮 交互方式

  • 鼠标控制 - 左键拖动旋转视角,滚轮缩放土星
  • 手势控制 - 手掌张合控制粒子缩放,手掌移动控制旋转
  • 灵敏度设置 - 可调整手势和鼠标的灵敏度
  • 自动巡航模式 - 无交互时自动演示

🔬 技术特点

  • WebGL 着色器 - 6套完整着色器,实现高级视觉效果
  • 开普勒轨道 - 真实的轨道速度(越外层越慢)
  • LOD 优化 - 远距时减少渲染粒子,提升性能
  • FBM 噪声 - 用于生成行星纹理
  • 实时手势追踪 - 使用 MediaPipe Hands
  • 响应式设计 - 适配不同屏幕尺寸

🚀 快速开始

环境要求

  • Node.js 10.16.2 或更高版本
  • 现代浏览器(Chrome、Firefox、Edge)
  • 摄像头(用于手势控制)

启动步骤

  1. 克隆项目

    git clone https://github.com/JohnvenTom/Web-Planet
    cd Planet
  2. 启动本地服务器

    npx http-server -p 8000
  3. 访问项目 在浏览器中打开:http://127.0.0.1:8000

  4. 允许摄像头访问 首次打开时,浏览器会请求摄像头权限,点击"允许"

🎯 使用说明

鼠标操作

  • 左键拖动:旋转视角,观察土星的不同角度
  • 鼠标滚轮:缩放土星,体验不同尺度的细节

手势操作

  • 手掌张合:张开手掌放大土星,握拳缩小土星
  • 手掌移动:左右移动手掌旋转土星,上下移动调整俯仰角

控制面板

  • 左侧设置面板:可展开/收起
  • 手势缩放灵敏度:调整手掌张合的响应速度
  • 手势旋转灵敏度:调整手掌移动的响应速度
  • 鼠标旋转灵敏度:调整鼠标拖动的响应速度
  • 鼠标滚轮灵敏度:调整滚轮缩放的响应速度

功能说明

  • 开普勒轨道:土星环粒子按照真实的开普勒定律运动
  • 混沌效果:土星放大到一定程度时,粒子开始产生混沌运动
  • 亮度变化:土星缩小时变暗,放大时变亮,符合灯光物理规律
  • 自动巡航:3秒无交互后自动进入演示模式

📁 项目结构

Planet/
├── index.html          # 主页面
├── app.js              # 核心JavaScript代码
└── README.md           # 项目说明

🎨 技术栈

  • 前端框架:原生 JavaScript
  • 3D 引擎:Three.js r128
  • 手势识别:MediaPipe Hands
  • 服务器:http-server

✨ 核心功能详解

1. 粒子系统

  • 土星本体:30万粒子,带有条纹纹理
  • 土星环:90万粒子,分层结构
  • 星星:5万粒子,带有闪烁效果
  • 星云:100个粒子,营造深空效果

2. 着色器系统

  • 土星顶点着色器:处理粒子位置、大小、噪声
  • 土星片元着色器:处理颜色、光晕、材质
  • 星星着色器:处理星星闪烁
  • 行星着色器:生成程序化行星纹理

3. 交互系统

  • 鼠标事件:处理点击、移动、滚轮
  • 手势识别:使用 MediaPipe 实时追踪手掌
  • 灵敏度设置:可调节各种操作的响应速度

4. 物理模拟

  • 开普勒定律:土星环粒子的轨道速度计算
  • 混沌噪声:近距离时的粒子湍流效果
  • 视差效果:背景行星的空间位移

📱 浏览器兼容性

  • Chrome 90+
  • Firefox 88+
  • Edge 90+
  • Safari 14+

🔧 性能优化

  • LOD 系统:根据距离调整粒子数量
  • 着色器优化:高效的 GPU 计算
  • 内存管理:合理的缓冲区分配
  • 渲染设置:适当的像素比和抗锯齿

🎓 学习资源

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 许可证

MIT License

🌟 致谢

  • Three.js 团队 - 提供优秀的 3D 引擎
  • MediaPipe 团队 - 提供实时手势识别

享受探索土星的奇妙之旅! 🚀

About

3D 交互式土星粒子系统

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors