159 lines
5.1 KiB
Markdown
159 lines
5.1 KiB
Markdown
# 粒子系统插件
|
||
|
||
一个功能完整的3D粒子系统插件,为EG引擎提供高性能的粒子特效功能。
|
||
|
||
## 功能特性
|
||
|
||
### 核心功能
|
||
- **多种粒子效果**: 支持火焰、烟雾、爆炸、水花、魔法、雪花等多种预设效果
|
||
- **实时物理模拟**: 重力、风力、碰撞检测、力场等物理效果
|
||
- **高性能渲染**: 支持广告牌和点精灵渲染模式,优化的批量渲染
|
||
- **可视化编辑**: 直观的参数调节界面,实时预览效果
|
||
- **性能监控**: 实时监控FPS、粒子数量、渲染时间等性能指标
|
||
- **预设管理**: 内置预设和自定义预设的保存、加载功能
|
||
|
||
### 粒子属性控制
|
||
- 生命周期和颜色渐变
|
||
- 尺寸变化和旋转效果
|
||
- 速度和发射形状控制
|
||
- 重力、空气阻力和反弹系数
|
||
- 多种发射器形状(点、圆形、球形、盒形)
|
||
|
||
### 物理系统
|
||
- 重力和风力模拟
|
||
- 地面和边界碰撞检测
|
||
- 自定义力场(引力、斥力、涡流等)
|
||
- 与Bullet物理引擎集成
|
||
|
||
### 编辑功能
|
||
- 实时参数调节
|
||
- 效果类型切换
|
||
- 预设保存和加载
|
||
- 可视化性能监控
|
||
|
||
## 使用方法
|
||
|
||
### 快捷键操作
|
||
- **F5**: 切换粒子编辑器显示
|
||
- **F6**: 切换性能监控器显示
|
||
- **F7**: 创建测试粒子效果
|
||
- **F8**: 清除所有粒子
|
||
- **F9**: 创建火焰效果
|
||
- **F10**: 创建烟雾效果
|
||
- **F11**: 创建爆炸效果
|
||
- **F12**: 创建水花效果
|
||
|
||
### GUI界面操作
|
||
插件会在屏幕左上角创建控制面板,可以通过按钮直接创建各种粒子效果。
|
||
|
||
### 编程接口
|
||
```python
|
||
# 获取插件实例
|
||
particle_plugin = world.plugin_manager.get_plugin("particle_system")
|
||
|
||
# 创建预设效果
|
||
particle_plugin.create_fire_effect() # 火焰效果
|
||
particle_plugin.create_smoke_effect() # 烟雾效果
|
||
particle_plugin.create_explosion_effect() # 爆炸效果
|
||
particle_plugin.create_water_effect() # 水花效果
|
||
particle_plugin.create_magic_effect() # 魔法效果
|
||
particle_plugin.create_snow_effect() # 雪花效果
|
||
|
||
# 创建自定义效果
|
||
config = {
|
||
'emission_rate': 100,
|
||
'particle_lifetime': 3.0,
|
||
'start_color': Vec3(1.0, 0.5, 0.0),
|
||
'end_color': Vec3(1.0, 0.0, 0.0),
|
||
'start_size': 0.3,
|
||
'end_size': 0.6,
|
||
'velocity': Vec3(0, 0, 2),
|
||
'gravity_scale': -0.5
|
||
}
|
||
particle_plugin.particle_manager.create_emitter("custom", position, config)
|
||
|
||
# 性能控制
|
||
particle_plugin.set_max_particles(5000) # 设置最大粒子数
|
||
particle_plugin.set_global_time_scale(0.5) # 设置时间缩放
|
||
particle_plugin.set_emit_rate_multiplier(2.0) # 设置发射速率倍增
|
||
particle_plugin.set_particle_size_multiplier(1.5) # 设置粒子尺寸倍增
|
||
|
||
# 预设管理
|
||
particle_plugin.list_presets() # 列出所有预设
|
||
particle_plugin.load_preset("经典火焰") # 加载预设
|
||
```
|
||
|
||
## 性能优化
|
||
|
||
### 对象池技术
|
||
使用对象池管理粒子对象,避免频繁创建和销毁对象的开销。
|
||
|
||
### 批量渲染
|
||
支持批量渲染大量粒子,减少绘制调用次数。
|
||
|
||
### 自适应更新
|
||
根据粒子数量和复杂度动态调整更新频率。
|
||
|
||
## 预设效果
|
||
|
||
### 内置预设
|
||
- 经典火焰: 典型的上升火焰效果
|
||
- 浓密烟雾: 缓慢上升的烟雾效果
|
||
- 强力爆炸: 瞬间爆发的爆炸效果
|
||
- 清澈水花: 下落并反弹的水花效果
|
||
- 魔法光球: 悬浮旋转的魔法粒子效果
|
||
- 飘落雪花: 从上至下飘落的雪花效果
|
||
|
||
### 自定义预设
|
||
支持创建、保存和加载自定义预设,满足特定项目需求。
|
||
|
||
## 扩展开发
|
||
|
||
### 添加新的粒子效果类型
|
||
1. 在[particle_manager.py](file:///home/hello/EG/plugins/user/particle_system/core/particle_manager.py)中添加新的创建方法
|
||
2. 在[particle_emitter.py](file:///home/hello/EG/plugins/user/particle_system/core/particle_emitter.py)中支持新的参数配置
|
||
3. 在[particle_renderer.py](file:///home/hello/EG/plugins/user/particle_system/core/particle_renderer.py)中添加渲染支持
|
||
4. 在编辑器中添加对应的界面元素
|
||
|
||
### 添加新的物理效果
|
||
1. 在[particle_physics.py](file:///home/hello/EG/plugins/user/particle_system/core/particle_physics.py)中实现新的物理计算
|
||
2. 在粒子属性中添加对应的参数
|
||
3. 在编辑器中添加参数调节控件
|
||
|
||
## 性能监控
|
||
|
||
插件内置性能监控功能,可以实时显示:
|
||
- FPS和平均FPS
|
||
- 当前粒子数量和活跃发射器数量
|
||
- 渲染时间和物理计算时间
|
||
- 内存使用情况
|
||
- 绘制调用次数和顶点数量
|
||
|
||
通过性能监控可以及时发现和解决性能瓶颈问题。
|
||
|
||
## 故障排除
|
||
|
||
### 粒子效果不显示
|
||
1. 检查插件是否已正确启用
|
||
2. 确认粒子数量限制设置
|
||
3. 检查摄像机位置和粒子发射位置
|
||
|
||
### 性能问题
|
||
1. 使用性能监控器查看瓶颈所在
|
||
2. 降低粒子数量或简化粒子效果
|
||
3. 调整渲染设置(如使用点精灵代替广告牌)
|
||
|
||
### 编辑器无法使用
|
||
1. 确认GUI系统是否正常工作
|
||
2. 检查快捷键是否被其他系统占用
|
||
3. 重新启用插件尝试
|
||
|
||
## 版本信息
|
||
|
||
- 版本: 1.0.0
|
||
- 作者: EG Team
|
||
- 发布日期: 2024年
|
||
|
||
## 许可证
|
||
|
||
本插件遵循EG引擎许可证协议。 |