# 三维雷达 导入→处理→渲染 全链路方案(结合 POC 评估) > 2026-06-30。本文把用户给出的雷达产品目标落成方案,并结合 POC(明星路 13G)已验证的资产, > 评估复用/缺口、定关键架构缝与决策、排风险与分期。范围限定**三维雷达**(渲染/切片/异常 + > 其上游的导入/处理管线);不含 2D 雷达图、不含后端反演链。 ## 1. 用户目标(七步) 1. 设备经 USB 接到用户电脑。 2. 客户端「设备连接」功能:自动识别设备、打开 USB 存储,用户选文件导入。 3. 另一导入分支:文件已在用户电脑,经**文件夹选择**导入。 4. 导入过程按文件类型(不同型号雷达)**自动加载插件**,对数据做 **ds 标准化转换**。 5. 导入完成自动形成 **项目 / GS / TM / ds** 结构(建 GS/TM 的「方案」待细化)。 6. 数据集详情页:用**数据处理插件**处理原始数据,插件支持多种方法(用户勾选); 另**固定加入两个客户端内置处理方法**:**插值**、**预渲染**(即为 LOD 做准备)。 处理后**存为新 ds**。 7. VTK 视图:选三维雷达 ds 渲染、切片等;**所选 ds 可能是未处理原数据,也可能是处理后数据**(不同 ds)。 ## 2. 关键决策(用户已拍板) - **D1 — 预渲染(LOD 烘焙)是可选的。** 默认勾选,但用户可取消。 → **渲染路径必须同时支持「未预渲染」与「已预渲染」两类 ds**(不能假设所有大体都已烘焙 LOD)。 → 采用**混合渲染源**(见 §4):原/插值 ds 走整卷源;预渲染 ds 走 LOD 源。 ## 3. POC ↔ 目标 映射(复用 vs 缺口) **结论:算法基本齐(POC/app 已有标准化、插值、增益、LOD 引擎、渲染源抽象);缺的是三层"框架/管线" + 设备接入。** | 步骤 | 已有(POC/现状) | 缺口 | |---|---|---| | 1–2 设备 USB/存储 | 无 | **全新**:Windows 设备识别 + USB 盘浏览(与 POC 无关,纯平台 plumbing) | | 3 文件夹导入 | 已有导入入口、`tools/radar_convert` malamira 转换器 | 文件夹选择 + 批量 | | 4 按型号插件标准化 | 转换算法有(malamira→规范化 `.head/.data`、`RadarVolumeAssembler`、int16 量化) | **导入插件框架**(按文件类型注册 reader);现写死一种 | | 5 项目/GS/TM/ds 结构 | ds 树(`sourceShowParentId` 派生嵌套)已在 | 自动建 GS/TM 的「方案」 | | 6 处理插件 + 两内置 | 两内置**算法都有**:插值=`createRadarVolumeGrid` 通道插值(targetDy);预渲染=`ChunkedVolumeStore::write`+`buildPyramidStreaming`。增益(dewow/AGC/tpow)亦有 | **处理插件框架** + 「处理→存为新 ds」管线 + 多方法勾选 UI | | 7 选 ds 渲染/切片 | **渲染源抽象 `IVolumeRenderSource`(整卷/LOD 多态,含 `sliceSource()`)** + 整卷渲染 + 切片 + 异常 | 把 app 雷达路径迁到 `IVolumeRenderSource`;LOD 源接进 app(Track D) | ## 4. 架构缝:`IVolumeRenderSource`(已设计好,最低风险) POC 已建好渲染源抽象(`src/render/source/IVolumeRenderSource.hpp`):上层(控制器/`SliceTool`)只认此接口, 运行时在两种实现间切换: - **`WholeVolumeSource`(整卷)** —— 给**未预渲染**的原/插值 ds(小体,单纹理够用)。 - **`ViewAdaptiveVolumeSource`(核外金字塔 LOD)** —— 给**已预渲染**的 ds(大体,按相机选层/选块重组单纹理)。 接口自带 `update(vtkCamera)`、`currentImages()`、**`sliceSource()`**(切片/异常的 reslice 基底也走它), 故"切片在两种源上都能切"是接口内建能力,不需两套切片代码。 > **D1 落到这里**:选 ds 渲染时按"该 ds 是否带 LOD store"路由到对应源。未预渲染 → 整卷源(现有内存 > 体路径迁入即可);已预渲染 → LOD 源(Track D 接入)。 ## 5. 处理与数据血缘模型 - 处理一律**产出新 ds**,挂在源 ds 下(复用现有派生树 `sourceShowParentId`): ``` 原始 ds ─[插值]→ 插值 ds ─[预渲染]→ 预渲染 ds(LOD store) └─[增益/migration/…(可多选)]→ 处理 ds ``` - **两个内置处理方法**(client 自带、固定加入): - **插值**:线内通道插值(读真实道偏移、目标横向间距如 2.5cm,**绝不跨线**)。算法=`createRadarVolumeGrid` 的 targetDy 路径。 - **预渲染(LOD 烘焙)**:把体烘成 **`ChunkedVolumeStore` 分块金字塔**(int16 量化、64³ brick、qCompress、 逐级 2× 降采样、每块 min/max;流式 `buildPyramidStreaming` 不持整卷)。产出 = 一个 **store 目录**, 不是普通稠密体 → 该 ds 须带「类型=LOD store + 路径」标记,供 §4 渲染路由。 - 顺序:通常先插值再预渲染(烘焙插值后的体);模型支持任选基底(也可直接烘原始)。 ## 6. 预渲染专用落盘格式(LOD 前置,已实现于 POC) `ChunkedVolumeStore`(一个目录,非单文件): - `meta.json`:几何 + 量化(scale/offset) + 逐块索引(offset/压缩长/**每块 min/max**); - `data.bin`:逐块 int16 → qCompress;块内 i 最快、k 最慢;偏移全 64 位(卷 >2GB); - `data_L1.bin…`:金字塔各级(逐级 2× 降采样)。 构建:整卷 `write` 或流式 `StreamingVolumeWriter`(逐块写不持整卷)+ `buildPyramid(Streaming)`。 渲染:`ViewAdaptiveVolumeSource` 打开 store,`update(相机)`→选层+选块→`readBrick`→重组单 `vtkImageData`, **内存恒定、绕 16384 纹理墙**。 ## 7. 需要新建的三块骨架 1. **插件框架(两类,别混)** - **导入插件**(步4):按文件类型/型号 → 标准化成 ds 的 reader 注册表。 - **处理插件**(步6):吃一个 ds → 产出新 ds 的 transform,可多选串联;两内置(插值、预渲染)即自带处理插件。 - 待定:插件接口(输入 ds/参数 → 输出 ds)、发现/注册、进程内 DLL(ABI/崩溃隔离风险)vs 子进程。 2. **「处理 → 新 ds」管线**:血缘落树、预渲染 ds 的 store 路径/缓存/失效/磁盘占用、重处理**异步+进度+可取消**。 3. **设备/USB 接入**(步1–2):Windows 设备识别 + USB 盘浏览。最独立、与 POC 无关,可最后做;先跑通文件夹导入。 ## 8. 风险排序 1. **中**:插件框架(架构骨架,影响步4/6,定义不好后面返工)。 2. **中**:预渲染 ds 的渲染/切片路由(Track D 核心;但**引擎+缝已验证**,是"接线"风险非"能不能做"风险)。 3. **低–中**:处理管线异步/进度/缓存(工程量明确)。 4. **低**:设备 USB(plumbing,独立)。 ## 9. 分期建议 - **P0 验证最高技术风险**:把 app 雷达渲染迁到 `IVolumeRenderSource`,使 - 未预渲染 ds → `WholeVolumeSource`(迁现有内存体路径); - 预渲染 ds → `ViewAdaptiveVolumeSource`; 南同大道先烘一个小 store 验"选 ds→按是否预渲染路由→渲染+切片"全链路。**验通则整个方案立住。** - **P1 插件框架**:先定**处理插件**接口(含两内置),跑通"原 ds→插值→预渲染→渲染";导入插件框架并行。 - **P2 处理管线 UI/异步**:详情页多方法勾选、进度、新 ds 落树。 - **P3 设备 USB**:最后接。 ## 10. 现状基线(本轮已落地的交互/渲染精修,作为接入前的稳定底座) - 切片拾取**精确化**:光标射线 vs 切片真实矩形求交 + 可见数据(alpha)双判定,去除外扩(雷达+反演通用)。 - 取消选中:点击体/空白/帘面即取消(精确"命中切片"判据)+ Esc 兜底。 - 滚轮步长:按**沿法向体素间距 × N**(Shift 粗调),不随体长跳变。 - 双击正视:缩放到切片(按面内尺寸+视角框住),不再"又小又远"。 - 不透明度:各向异性体用特征尺度(门控;近立方反演维持原对角线)。 - **B 方案视角导航**:#1 绕拾取点旋转(无选中时绕光标射线穿体中段点,不甩飞); #2 沿线位置滑块(雷达专属,沿最长轴 dolly 到窗口;仅细长体显示)。 - 雷达显示**增益模式**右键切换(AGC/保幅 tpow/关),纯显示重建、不动原始数据。 > 这些是**单内存体 + 渲染期采样距自适应**底座;多分辨率/视锥 LOD 仍属 §4/§9 的 Track D 接入范畴(未做)。