# 水体和流体模拟插件 (Fluid Simulation Plugin)

## 概述

水体和流体模拟插件为EG引擎提供了高质量的水体和流体模拟功能。该插件支持真实的流体物理模拟、动态波浪系统、高级渲染效果以及完整的编辑器工具。

## 功能特性

### 核心功能
- **真实流体物理模拟**：基于Navier-Stokes方程的流体动力学模拟
- **多种流体类型**：支持水、油、蜂蜜、酒精、岩浆等多种流体
- **动态波浪系统**：风浪、涌浪、涟漪、海啸等多种波浪类型
- **粒子系统**：基于粒子的流体模拟和渲染
- **体积渲染**：高质量的体积流体渲染效果

### 渲染特性
- **基于物理的渲染(PBR)**：真实的材质和光照效果
- **动态反射和折射**：实时环境反射和光线折射
- **焦散效果**：光线通过水体产生的聚焦效果
- **泡沫系统**：动态泡沫和浪花效果
- **水下效果**：水下雾化和光线效果

### 环境交互
- **天气系统集成**：风力、降雨对水体的影响
- **物体交互**：物体与流体的碰撞和交互
- **地形适配**：自动适配复杂地形的水体表面
- **性能优化**：LOD系统和动态细节调整

### 编辑工具
- **可视化编辑器**：直观的参数调整界面
- **预设管理系统**：保存和加载流体配置
- **实时预览**：编辑时的实时效果预览
- **性能监控**：实时性能统计和优化建议

## 目录结构

```
fluid_simulation/
├── plugin.py                 # 插件主文件
├── core/                     # 核心模块
│   ├── fluid_manager.py      # 流体管理器
│   └── water_manager.py      # 水体管理器
├── fluids/                   # 流体模拟模块
│   ├── fluid_dynamics.py     # 流体动力学
│   └── fluid_solver.py       # 流体求解器
├── water/                    # 水体模块
│   ├── water_surface.py      # 水体表面
│   └── wave_system.py        # 波浪系统
├── rendering/                # 渲染模块
│   ├── fluid_renderer.py     # 流体渲染器
│   └── water_renderer.py     # 水体渲染器
├── effects/                  # 特效模块
│   ├── fluid_effects.py      # 流体特效
│   └── water_effects.py      # 水体特效
├── interaction/              # 交互模块
│   ├── fluid_interaction.py  # 流体交互
│   └── object_interaction.py # 物体交互
├── audio/                    # 音频模块
│   └── fluid_audio.py        # 流体音频
├── particles/                # 粒子模块
│   └── fluid_particles.py    # 流体粒子
├── editor/                   # 编辑器模块
│   ├── fluid_editor.py       # 流体编辑器
│   └── preset_manager.py     # 预设管理器
├── physics/                  # 物理模块
│   └── fluid_physics.py      # 流体物理
└── utils/                    # 工具模块
    └── fluid_utils.py        # 流体工具
```

## 快速开始

### 安装插件
将插件目录复制到EG引擎的插件目录中：

```
cp -r fluid_simulation /path/to/eg-engine/plugins/
```

### 启用插件
在EG引擎中启用插件：

```python
# 在引擎初始化时加载插件
engine.load_plugin('fluid_simulation')
```

### 基本使用
```python
# 创建水体
water_body = plugin.water_manager.create_water_body(
    water_type='ocean',
    position=(0, 0, 0),
    size=(100, 100),
    depth=10.0
)

# 创建流体区域
fluid_region = plugin.fluid_manager.create_fluid_region(
    fluid_type='water',
    position=(0, 5, 0),
    size=(10, 10, 10)
)

# 设置波浪参数
plugin.wave_system.create_wave(
    wave_type='wind_wave',
    parameters={
        'amplitude': 1.0,
        'wavelength': 10.0,
        'speed': 2.0,
        'direction': math.pi/4
    }
)
```

## 高级功能

### 流体交互
插件支持多种流体交互效果：
- 物体溅起水花
- 流体对物体的浮力
- 流体之间的混合
- 热对流和密度差异

### 性能优化
- 自适应时间步长
- 空间分割优化
- 多层次细节(LOD)
- GPU加速计算

### 自定义扩展
插件采用模块化设计，支持：
- 自定义流体类型
- 自定义波浪模型
- 自定义渲染效果
- 自定义交互行为

## API参考

详细API文档请参考各模块的源代码注释。

## 性能建议

1. **网格分辨率**：根据目标平台调整网格分辨率
2. **特效设置**：在移动设备上适当降低特效质量
3. **LOD使用**：启用LOD系统以优化远距离渲染
4. **粒子数量**：控制粒子系统中的粒子数量

## 许可证

本插件遵循EG引擎的许可证协议。

## 支持与反馈

如有问题或建议，请联系开发团队或在社区论坛中讨论。