Skip to content

潜入海底花园

项目概述

潜入海底花园是一个沉浸式海底生态系统可视化平台,基于 Three.js + React 构建,展示海洋生物和海底环境。通过这个平台,用户可以探索海底世界的奇妙景象,了解海洋生物的分布和生态系统。

潜入海底花园

核心特性

🌍 3D地球与海洋系统

  • 真实地球纹理贴图,包含海洋和陆地
  • 动态海洋系统,模拟海浪和洋流
  • 可切换的视角模式:全球视图和局部海底视图

🐠 海洋生物

  • 丰富的海洋生物模型:鱼群、海龟、鲸鱼、海豚、珊瑚礁等
  • 真实的生物行为模拟:鱼群游动、海龟迁徙、鲸鱼喷水等
  • 生物互动:不同生物之间的自然互动

🏝️ 海底环境

  • 多样化的海底地形:珊瑚礁、海底峡谷、海山、深海平原
  • 动态的海底光照效果,模拟不同深度的光线变化
  • 海底植物和微生物的可视化

🎨 交互功能

  • 图层面板:可以显示/隐藏不同类型的海洋生物和环境元素
  • 搜索筛选:根据生物类型、尺寸、栖息地等进行筛选
  • 信息面板:点击生物可查看详细信息和生态数据
  • 导航系统:快速定位到特定的海底区域

🌊 特殊效果

  • 洋流粒子效果,展示海洋流动
  • 海洋波纹和波浪动画
  • 气泡上升效果
  • 光的折射和散射效果,模拟水下视觉

📱 响应式设计

  • 适配各种设备尺寸,从手机到桌面端
  • 触摸友好的交互设计,支持移动设备操作
  • 流畅的性能,即使在低配置设备上也能正常运行

技术栈

  • 前端框架:React 18 + TypeScript
  • 3D渲染:Three.js + React Three Fiber
  • 构建工具:Vite
  • 状态管理:React Context API + Zustand
  • 样式:CSS Modules + Tailwind CSS
  • 动画:Framer Motion + Three.js Animation System
  • 物理引擎:Cannon.js (用于模拟海洋物理效果)

项目结构

ocean/
├── src/
│   ├── components/
│   │   ├── Earth.jsx        # 3D地球组件
│   │   ├── Ocean.jsx        # 海洋系统组件
│   │   ├── MarineLife.jsx   # 海洋生物组件
│   │   ├── Controls.jsx      # 控制面板
│   │   └── InfoPanel.jsx     # 信息面板
│   ├── hooks/
│   │   ├── useMarineData.js  # 海洋生物数据处理
│   │   └── useOceanPhysics.js # 海洋物理效果
│   ├── data/
│   │   └── marineLife.js     # 海洋生物数据
│   ├── utils/
│   │   ├── geoUtils.js       # 地理坐标工具
│   │   └── oceanUtils.js     # 海洋物理工具
│   ├── App.jsx               # 应用主组件
│   └── main.jsx              # 应用入口
└── package.json              # 项目配置

技术实现

3D海洋系统

使用 Three.js 创建动态海洋系统,模拟海浪、洋流和海底地形。通过着色器实现海洋的实时渲染效果。

海洋生物行为模拟

使用状态机和行为树模拟海洋生物的自然行为,如鱼群的集群行为、海龟的迁徙路径等。

物理引擎集成

集成 Cannon.js 物理引擎,模拟海洋生物的运动和碰撞检测,使生物行为更加自然。

性能优化

  • 使用实例化渲染(Instanced Rendering)减少绘制调用
  • 实现LOD(Level of Detail)技术,根据距离调整生物细节
  • 使用WebGL的视锥体剔除,只渲染可见的对象
  • 实现按需加载,根据用户视角动态加载生物数据
  • 海洋渲染优化,使用GPU加速的波浪计算

应用场景

  • 教育用途:了解海洋生态系统和海洋生物
  • 环保宣传:展示海洋环境的美丽,提高环保意识
  • 旅游规划:查看不同海域的特色生物,为潜水旅行做准备
  • 艺术欣赏:欣赏海底世界的视觉美感
  • 研究参考:为海洋学研究提供直观的可视化工具

未来规划

  • 添加更多海洋生物种类和详细信息
  • 实现气候变化对海洋生态的影响模拟
  • 添加用户自定义功能,允许用户创建自己的海底场景
  • 集成VR/AR功能,提供更沉浸式的体验
  • 开发移动应用版本,方便用户随时随地探索海底世界

项目链接