# EG 项目概览与开发指南

## 项目简介

EG 是一个基于 Panda3D 引擎开发的 3D 编辑器和游戏引擎，集成了高级渲染管线、VR 支持、物理模拟、脚本系统等功能。该项目主要用于创建 3D 场景、游戏开发和交互式应用程序。

## 核心技术栈

- **渲染引擎**: Panda3D 1.10.15 + RenderPipeline (延迟渲染、PBR材质)
- **GUI框架**: PyQt5 + imgui_bundle (用于编辑器界面)
- **VR支持**: OpenVR 2.2.0
- **脚本系统**: Python 3.10.12
- **其他依赖**: PyQt5-WebEngine, assimp, pillow 等

## 项目架构

### 核心模块

- **main.py** - 应用程序入口点，初始化所有系统
- **Start_Run.py** - 启动脚本，设置环境变量和路径
- **core/** - 核心功能模块
  - `world.py` - 世界管理器，处理场景渲染和更新
  - `selection.py` - 选择系统，处理对象选择
  - `event_handler.py` - 事件处理系统
  - `tool_manager.py` - 工具管理器
  - `script_system.py` - 脚本系统
  - `patrol_system.py` - 巡逻系统
  - `Command_System.py` - 命令系统
  - `terrain_manager.py` - 地形管理
  - `vr_manager.py` - VR 功能管理
  - `collision_manager.py` - 碰撞检测管理
  - `resource_manager.py` - 资源管理
  - `assembly_interaction.py` - 装配交互
  - `maintenance_gui.py` - 维护界面
  - `render_pipeline_utils.py` - 渲染管线工具
  - `InfoPanelManager.py` - 信息面板管理
  - `CustomMouseController.py` - 自定义鼠标控制器

### GUI 系统

- **gui/gui_manager.py** - GUI管理器，处理2D/3D界面元素
- **ui/icon_manager.py** - 图标管理器

### 场景管理

- **scene/scene_manager.py** - 场景管理器，处理模型导入、场景树构建
- **scene/util.py** - 场景工具函数

### 项目管理

- **project/project_manager.py** - 项目管理器，处理项目创建、保存、加载

### 脚本系统

- **scripts/** - 包含各种预定义脚本
  - `MoverScript.py` - 移动脚本
  - `RotatorScript.py` - 旋转脚本
  - `ScalerScript.py` - 缩放脚本
  - `ColorChangerScript.py` - 颜色变化脚本
  - `FollowerScript.py` - 跟随脚本
  - `BouncerScript.py` - 弹跳脚本
  - `ComboAnimatorScript.py` - 组合动画脚本

### VR 系统

- **vr_actions/** - VR动作配置
  - `actions.json` - VR动作定义
  - `bindings_*.json` - 不同VR设备的绑定配置

### 资源管理

- **Resources/** - 资源目录
  - `models/` - 3D模型
  - `textures/` - 纹理贴图
  - `materials/` - 材质文件
  - `animations/` - 动画文件
  - `icons/` - 图标资源

### 渲染管线

- **RenderPipelineFile/** - 高级渲染管线
  - `rpcore/` - 渲染管线核心
  - `rpplugins/` - 渲染插件
  - `effects/` - 后处理效果
  - `config/` - 渲染配置

## 启动和运行

### 环境要求

- Python 3.10.12
- Panda3D 1.10.15
- PyQt5 5.15.9
- OpenVR 2.2.0 (VR功能)

### 运行方式

1. **直接运行主程序**:
   ```bash
   python Start_Run.py
   ```

2. **带项目路径运行**:
   ```bash
   python Start_Run.py /path/to/project
   ```

3. **从main.py运行**:
   ```bash
   python main.py
   ```

### 配置文件

- **config/vr_settings.json** - VR渲染配置
- **imgui.ini** - ImGui界面配置
- **.gitignore** - Git忽略文件配置

## 开发约定

### 代码风格

- 使用UTF-8编码
- 遵循PEP 8代码规范
- 类名使用驼峰命名法
- 函数和变量使用下划线命名法
- 文件头部包含模块说明和导入信息

### 脚本开发

- 所有用户脚本应继承 `ScriptBase` 类
- 脚本文件放在 `scripts/` 目录下
- 使用 `ScriptManager` 管理脚本生命周期
- 脚本API通过 `world` 对象提供

### 插件开发

- 插件系统支持动态加载
- 插件配置文件使用JSON格式
- 插件应实现标准接口

### VR开发

- VR动作配置在 `vr_actions/actions.json` 中定义
- 支持多种VR设备（Vive、Oculus、Index）
- VR渲染配置在 `config/vr_settings.json` 中

## 构建和部署

### 依赖安装

```bash
pip install -r requirements/requirements.txt
```

### 测试

项目包含多个测试脚本：
- `test_quick_script.py` - 快速测试脚本
- `TestMover.py` - 移动测试
- `TestRotator.py` - 旋转测试
- `TestScaler.py` - 缩放测试

### 项目文件

- 项目配置使用JSON格式
- 项目文件包含场景、资源、脚本等信息
- 使用 `ProjectManager` 管理项目生命周期

## 常见问题

### VR相关问题

1. 确保VR设备已正确连接
2. 检查OpenVR运行时是否安装
3. 验证VR动作配置是否正确

### 渲染问题

1. 检查显卡驱动是否最新
2. 确认RenderPipeline配置正确
3. 验证材质和纹理路径

### 性能优化

1. 使用合适的LOD设置
2. 优化场景复杂度
3. 调整渲染质量设置

## 扩展开发

### 添加新脚本

1. 在 `scripts/` 目录创建新脚本文件
2. 继承 `ScriptBase` 类
3. 实现必要的方法
4. 通过 `ScriptManager` 注册脚本

### 添加新工具

1. 在 `core/tool_manager.py` 中注册新工具
2. 实现工具逻辑
3. 添加GUI界面元素

### 添加新渲染效果

1. 在 `RenderPipelineFile/rpplugins/` 目录创建插件
2. 实现渲染逻辑
3. 添加配置选项

## 联系和支持

- 项目Git仓库: http://10.0.0.99:4000/Rowland/EG.git
- 当前分支: imgui
- 最新提交: 移除qt依赖 (33e62bd1e4c2c8d3aac15e045b419edb8992d7ff)

---

*该文档由iFlow CLI自动生成，最后更新时间: 2026年1月28日*