feat/3d-radar-volume-ingest #9

Merged
gaozheng merged 17 commits from feat/3d-radar-volume-ingest into main 2026-06-30 19:14:55 +08:00

17 Commits

Author SHA1 Message Date
gaozheng 571a72701d feat(radar): 三维交互精修 + 增益切换 + 视角导航(B#1/#2) + 全链路方案 spec
交互精修(雷达+反演通用):
- 切片拾取精确化: 光标射线 vs 切片真实矩形求交 + 可见数据(alpha)双判定, 去外扩
- 取消选中: 点体/空白/帘面即取消(精确命中判据) + Esc 兜底; 选中后上下拖动方向修正
- 滚轮步长: 按沿法向体素间距 x N(Shift 粗调), 不随体长跳变
- 双击正视: 缩放到切片(面内尺寸+视角框住), 不再又小又远
- 不透明度: 各向异性体用特征尺度(门控; 近立方反演维持原对角线)

视角导航(B 方案):
- #1 绕拾取点旋转: 无选中时绕光标射线穿体中段点(按下捕获/拖动固定), 不甩飞
- #2 沿线位置滑块: 雷达专属, 沿最长轴 dolly 到窗口(focusAlongLongAxis), 仅细长体显示

雷达显示增益: 右键切 AGC/保幅 tpow/关, 纯显示重建不动原始数据

spec: 落地 导入->处理->渲染 全链路方案(结合 POC 评估), 定预渲染可选->混合渲染源(IVolumeRenderSource)决策
2026-06-30 18:58:42 +08:00
gaozheng b2d130a7bf fix(radar/perf): 大体开启交互期采样距自适应,旋转流畅停手全质量(不降数据)
根因:VoxelActor 体绘制 SetAutoAdjustSampleDistances(0)(全程全质量) +
SampleDistance=0.3×minSp。雷达体 dz≈9.4mm(516采样/~4.8m)→ 单条光线 ~1700
采样步,每帧数十亿采样,旋转每帧都全质量 → 卡。原设定是为小反演体(~7ms/帧)调的。
修复:体素>4M 的大体开启 AutoAdjust/InteractiveAdjust——旋转时 VTK 自动加大
采样步保流畅,停手即恢复 0.3×minSp 出全质量帧。只降【渲染期】采样、不动数据;
切片/异常取自全分辨率体,保真不受影响。小体保持全程全质量避免突跳。
2026-06-29 16:44:42 +08:00
gaozheng cda84adcee fix(radar): 三维分析栏勾选(体/切片)隐藏不透明引导层,露出渲染
根因:中央引导层 emptyState(不透明 QFrame, background=canvas/bg)只在
objectTree.checkedSourcesChanged(对象树测线勾选)时隐藏(main.cpp:1612)。
雷达体由三维分析栏(CategoryAnalysisTab)勾选触发渲染——日志确认 addVolume
radar-1 已渲染——但该路径不碰 emptyState(因 emptyState 在 pushChecked 之后
才声明,分析渲染路径拿不到它),引导层不隐藏 → 盖住已渲染的体,用户只见
"勾选左侧数据集开始渲染"占位文本。
修复:用可后置赋值的回调把引导层隐藏接进 pushChecked(剖面∪三维分析 并集),
场景有勾选内容即隐藏;对象树隐藏条件并入 checkedAnalysis(取消勾选对象树不再
盖住仍渲染的雷达体)。
2026-06-29 15:45:47 +08:00
gaozheng 63ab099f76 fix(radar): 导入入口从隐藏菜单栏改到三维体段头按钮(app无原生菜单栏)
根因:app 经 window.setMenuWidget(TopBar) 占用 QMainWindow 菜单栏槽位,
原生 QMenuBar 不显示(全 app 无菜单栏),故 Task8 放在 menuBar() 的「三维雷达」
菜单根本看不到。
修复:入口迁到三维体(voxel)段头「+ 导入雷达测线」按钮(QToolButton+InstantPopup,
镜像现有「+新增三维体」),弹出 规范化(.head/.data)/Impulse(.iprb) 两项 →
CategorySection.radarImportRequested(impulse) → CategoryAnalysisTab 转发 →
main.cpp 走原导入流程。删除死的 menuBar 代码 + QMenuBar include。
2026-06-29 15:13:53 +08:00
gaozheng e48b679255 docs(radar): 计划 Global Constraints 修正构建命令(build.bat, cmake不在PATH) 2026-06-29 13:37:43 +08:00
gaozheng 1e931e4f85 fix(radar): dd_radar_3d 补进 ddCode→维度映射(dimOf/dimensionOf) 2026-06-29 13:35:47 +08:00
gaozheng 717bdbb70c feat(radar): Impulse 测线本地导入入口(双数据集互证下游)
radarMenu 追加「导入Impulse测线目录(.iprb)…」动作,复用 createGprVolume
(eager 同步建体,预填 cachedGrid)。内层 lambda 按引用捕获 window 修正
QMainWindow 拷贝构造删除/showToast 非 const QWidget* 编译错误。
2026-06-29 13:19:12 +08:00
gaozheng 2ba9d07f6c feat(radar): 导入入口 + dd_radar_3d 切片/色阶/详情 gate 放开 2026-06-29 13:13:01 +08:00
gaozheng 25bdd5cc71 feat(radar): registerRadarDataset 登记 dd_radar_3d DS + loadVolume 懒加载后台建体 2026-06-29 13:05:02 +08:00
gaozheng a865264cd1 feat(radar): 数据层 createRadarVolumeGrid(规范化->VolumeGrid) 2026-06-29 12:53:45 +08:00
gaozheng 241319b84b feat(radar): 规范化体 bridge buildLineVolumeFromNormalized
将 RadarVolumeAssembler.cpp 从 geopro_gpr3dv_bridge 迁入纯 geopro_io_gpr,
避免 io_gpr 反链 bridge 形成循环依赖。新增 NormalizedRadarVolumeBridge
组合 reader(.head/.data) + assembleRadarVolume → BuiltI16(X=道/Y=通道/Z=采样)。
2026-06-29 12:46:08 +08:00
gaozheng d2e7314ffb feat(radar): 规范化 .cor 轨迹解析(P1 配准预留) 2026-06-29 12:36:49 +08:00
gaozheng a9e2d98d15 feat(radar): 规范化 .data 立方体读取(position-major/16bit/字节序) 2026-06-29 12:30:28 +08:00
gaozheng 47e94592ce feat(radar): 规范化 .head 解析(维度/字节序/通道偏移/深度间距) 2026-06-29 12:23:31 +08:00
gaozheng abd3027610 refactor(gpr): 抽出共享 assembleRadarVolume,Impulse 路改调(消填体 DRY) 2026-06-29 12:14:25 +08:00
gaozheng 18b78a85d3 docs(radar): DS优先(dd_radar_3d)设计修订 + 实现计划(过3轮架构评审)
- spec 改 DS 优先:导入→登记 dd_radar_3d DS(非游离 dd_voxel vol-N)→按 DS 渲染。
  ddCode 对齐数据字典 DD0623(dd_radar_3d 体/dd_trajectory_data 轨迹/dd_voxel 仅反演)。
  关键发现:运行期体渲染只认 volumes_ 成员、不看 ddCode → 接入面极小。
- 实现计划 9 task(TDD):reader→共享 assembleRadarVolume(消DRY)→bridge→
  createRadarVolumeGrid→registerRadarDataset+loadVolume 懒加载后台建体→导入入口+
  dd_radar_3d 切片/色阶/详情 gate→双数据集互证。
- 3 轮 opus 架构评审已落修:HIGH-1 填体抽共享helper、HIGH-2 明星路in-app属首次、
  CRITICAL CategorySection切片gate、HIGH eager建体冻UI/MEDIUM spinner→改懒加载后台线程。
2026-06-29 11:53:33 +08:00
gaozheng 4da11f6185 feat(radar): 三维雷达接入设计 + Mala 转换器原型(已过架构评审)
- tools/radar_convert: RADAR_TYPE_MALAMIRA 转换插件原型(info/convert/probe)
  .rad→.head / .rd3→.data(原样) / .pos→.cor;probe 用真实数据确诊数据体
  主序 = position-major reshape(K,M,N),X=道/Y=通道/Z=采样,无需轴置换
- docs/spec: 2026-06-29 三维雷达体渲染+切片+异常接入设计
  核心论点=只换最内层 reader、下游渲染/切片/异常链复用;含已验证数据事实、
  内存实算、插件化转换层、双数据集测试策略;已过 opus 架构评审(PASS-WITH-CONCERNS,
  HIGH-1 填体逻辑须抽共享helper / HIGH-2 明星路 in-app 渲染属首次非已验证 已并入)
- samples/radar/malamira_南同大道: 6 线 .head/.cor 入库(大 .data gitignore,附重生成命令)
- 记录客户文档 §3.3 BITS 公式 bug(漏 SAMPLES 维),须同步后端
2026-06-29 10:03:48 +08:00