297 lines
8.0 KiB
Markdown
297 lines
8.0 KiB
Markdown
# 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
|
||
/// <summary>
|
||
/// 结果输出管理器
|
||
/// </summary>
|
||
public class ResultOutputManager
|
||
{
|
||
/// <summary>
|
||
/// 导出路径为图片
|
||
/// </summary>
|
||
/// <param name="route">路径对象</param>
|
||
/// <param name="config">图片配置</param>
|
||
/// <returns>输出结果</returns>
|
||
public OutputResult ExportAsImage(PathRoute route, ImageExportConfig config);
|
||
|
||
/// <summary>
|
||
/// 生成路径漫游视频
|
||
/// </summary>
|
||
/// <param name="route">路径对象</param>
|
||
/// <param name="config">视频配置</param>
|
||
/// <returns>输出结果</returns>
|
||
public OutputResult GenerateVideo(PathRoute route, VideoExportConfig config);
|
||
|
||
/// <summary>
|
||
/// 生成导航地图
|
||
/// </summary>
|
||
public NavigationMap GenerateNavigationMap(PathRoute route);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 图片导出配置
|
||
/// </summary>
|
||
public class ImageExportConfig
|
||
{
|
||
public int Width { get; set; }
|
||
public int Height { get; set; }
|
||
public ImageFormat Format { get; set; }
|
||
public Viewpoint Viewpoint { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 视频导出配置
|
||
/// </summary>
|
||
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
|
||
/// <summary>
|
||
/// 输出类型
|
||
/// </summary>
|
||
public enum OutputType
|
||
{
|
||
/// <summary>
|
||
/// 静态图片
|
||
/// </summary>
|
||
Image,
|
||
|
||
/// <summary>
|
||
/// 视频
|
||
/// </summary>
|
||
Video,
|
||
|
||
/// <summary>
|
||
/// 导航地图
|
||
/// </summary>
|
||
NavigationMap
|
||
}
|
||
|
||
/// <summary>
|
||
/// 图片格式
|
||
/// </summary>
|
||
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 | 错误消息(如果失败) |
|