# 2.4.2 结果输出功能设计说明
## 2.4.2.1. 模块描述
结果输出模块是交互式导航功能的重要组成部分,负责输出导航地图和路径规划结果,可以是视频或者图片。该模块将路径规划的结果以多种可视化形式输出,便于用户保存、分享和报告使用。
该模块与NavigationMapGenerator、PathAnimationManager和媒体导出功能紧密集成,支持高质量的视觉输出。
## 2.4.2.2. 功能
### 核心功能
1. **图片输出**:将路径规划结果导出为图片
2. **视频输出**:生成路径导航视频
3. **导航地图生成**:生成包含路径的导航地图
4. **视角控制**:控制输出视角和视图范围
5. **输出配置**:配置输出分辨率、格式等参数
### 子功能
| 功能编号 | 功能名称 | 功能描述 |
|---------|---------|---------|
| 2.4.2.F1 | 静态图片导出 | 导出当前视图或指定视角的图片 |
| 2.4.2.F2 | 路径视频生成 | 沿路径生成漫游视频 |
| 2.4.2.F3 | 导航地图生成 | 生成2D/3D导航地图 |
| 2.4.2.F4 | 视角设置 | 设置相机视角和路径 |
| 2.4.2.F5 | 分辨率配置 | 配置输出分辨率 |
| 2.4.2.F6 | 格式选择 | 选择输出格式(PNG/JPG/MP4等) |
| 2.4.2.F7 | 批量输出 | 批量输出多条路径结果 |
## 2.4.2.3. 性能
### 性能指标
| 指标名称 | 目标值 | 说明 |
|---------|-------|------|
| 图片导出时间 | < 2秒 | 导出单张图片的时间 |
| 视频生成速度 | > 10FPS | 视频生成的帧率 |
| 支持分辨率 | 4K | 支持的最大输出分辨率 |
| 内存占用 | < 500MB | 输出过程的内存占用 |
### 性能优化策略
1. 异步视频生成避免阻塞UI
2. 帧缓存优化
3. 硬件加速渲染
## 2.4.2.4. 输入输出项
### 1. 字段输入输出
#### 输入字段
| 字段名 | 类型 | 必填 | 说明 |
|-------|------|-----|------|
| Route | PathRoute | 是 | 要输出的路径 |
| OutputType | OutputType | 是 | 输出类型(图片/视频) |
| Resolution | Size | 否 | 输出分辨率,默认1920x1080 |
| Format | string | 否 | 文件格式,根据类型自动确定 |
#### 输出字段
| 字段名 | 类型 | 说明 |
|-------|------|------|
| OutputFilePath | string | 输出文件路径 |
| FileSize | long | 输出文件大小 |
| GenerationTime | TimeSpan | 生成耗时 |
### 2. 界面交互输入输出
#### 界面输入
- 输出类型选择
- 分辨率设置
- 文件格式选择
- 保存路径选择
#### 界面输出
- 生成进度显示
- 预览窗口
- 输出结果提示
- 文件打开链接
## 2.4.2.5. 算法
### 图片导出算法
```
算法:导出路径规划结果为图片
输入:路径,视角参数,输出配置
输出:图片文件
1. 设置相机位置和方向
2. 配置渲染参数
3. 渲染场景到帧缓冲区
4. 编码为指定格式(PNG/JPG)
5. 保存到文件
```
### 视频生成算法
```
算法:生成路径漫游视频
输入:路径,视频配置
输出:视频文件
1. 计算相机路径(沿路径的相机位置)
2. 初始化视频编码器
3. 对于视频的每一帧:
4. 计算当前相机位置
5. 渲染场景
6. 编码帧到视频
7. 完成编码并保存文件
```
## 2.4.2.6. 流程逻辑
```
开始
│
▼
┌─────────────────┐
│ 选择输出路径 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 选择输出类型 │
└────────┬────────┘
│
┌────┴────┐
▼ ▼
┌────────┐ ┌────────┐
│图片 │ │视频 │
└───┬────┘ └───┬────┘
│ │
▼ ▼
┌────────┐ ┌────────┐
│设置视角│ │设置相机│
└───┬────┘ │路径 │
│ └───┬────┘
│ │
│ ▼
│ ┌────────┐
│ │设置时长│
│ └───┬────┘
│ │
└─────┬─────┘
│
▼
┌─────────────────┐
│ 设置分辨率/格式 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 选择保存路径 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 开始生成输出 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 显示生成进度 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 完成并打开文件 │
└────────┬────────┘
│
▼
结束
```
## 2.4.2.7. 接口
### 公共接口
```csharp
///
/// 结果输出管理器
///
public class ResultOutputManager
{
///
/// 导出路径为图片
///
/// 路径对象
/// 图片配置
/// 输出结果
public OutputResult ExportAsImage(PathRoute route, ImageExportConfig config);
///
/// 生成路径漫游视频
///
/// 路径对象
/// 视频配置
/// 输出结果
public OutputResult GenerateVideo(PathRoute route, VideoExportConfig config);
///
/// 生成导航地图
///
public NavigationMap GenerateNavigationMap(PathRoute route);
}
///
/// 图片导出配置
///
public class ImageExportConfig
{
public int Width { get; set; }
public int Height { get; set; }
public ImageFormat Format { get; set; }
public Viewpoint Viewpoint { get; set; }
}
///
/// 视频导出配置
///
public class VideoExportConfig
{
public int Width { get; set; }
public int Height { get; set; }
public int FrameRate { get; set; }
public double Duration { get; set; }
public VideoFormat Format { get; set; }
}
```
## 2.4.2.8. 注释设计
### 代码注释规范
```csharp
///
/// 输出类型
///
public enum OutputType
{
///
/// 静态图片
///
Image,
///
/// 视频
///
Video,
///
/// 导航地图
///
NavigationMap
}
///
/// 图片格式
///
public enum ImageFormat
{
PNG,
JPEG,
BMP
}
```
## 2.4.2.9. 数据结构
### OutputType 枚举
| 值 | 说明 |
|---|------|
| Image | 静态图片输出 |
| Video | 视频输出 |
| NavigationMap | 导航地图输出 |
### ImageExportConfig 结构
| 字段名 | 类型 | 说明 |
|-------|------|------|
| Width | int | 图片宽度 |
| Height | int | 图片高度 |
| Format | ImageFormat | 图片格式 |
| Viewpoint | Viewpoint | 相机视角 |
| IncludeAnnotations | bool | 是否包含标注 |
### VideoExportConfig 结构
| 字段名 | 类型 | 说明 |
|-------|------|------|
| Width | int | 视频宽度 |
| Height | int | 视频高度 |
| FrameRate | int | 帧率(FPS) |
| Duration | double | 时长(秒) |
| Format | VideoFormat | 视频格式 |
| CameraHeight | double | 相机高度(米) |
### OutputResult 结构
| 字段名 | 类型 | 说明 |
|-------|------|------|
| Success | bool | 是否成功 |
| FilePath | string | 输出文件路径 |
| FileSize | long | 文件大小(字节) |
| GenerationTime | TimeSpan | 生成耗时 |
| ErrorMessage | string | 错误消息(如果失败) |