2.4.2 结果输出功能设计说明
2.4.2.1. 模块描述
结果输出模块是交互式导航功能的重要组成部分,负责输出导航地图和路径规划结果,可以是视频或者图片。该模块将路径规划的结果以多种可视化形式输出,便于用户保存、分享和报告使用。
该模块与NavigationMapGenerator、PathAnimationManager和媒体导出功能紧密集成,支持高质量的视觉输出。
2.4.2.2. 功能
核心功能
- 图片输出:将路径规划结果导出为图片
- 视频输出:生成路径导航视频
- 导航地图生成:生成包含路径的导航地图
- 视角控制:控制输出视角和视图范围
- 输出配置:配置输出分辨率、格式等参数
子功能
| 功能编号 |
功能名称 |
功能描述 |
| 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 |
输出过程的内存占用 |
性能优化策略
- 异步视频生成避免阻塞UI
- 帧缓存优化
- 硬件加速渲染
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. 接口
公共接口
/// <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. 注释设计
代码注释规范
/// <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 |
错误消息(如果失败) |