# 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 | 错误消息(如果失败) |