Commit Graph

609 Commits

Author SHA1 Message Date
gaozheng ceb41fab08 docs(env): 修正Windows环境文档过时/矛盾内容(旧全vcpkg残留)并补构建兼容性检查清单+崩溃签名速查 2026-07-01 14:18:07 +08:00
gaozheng 12c45005f5 fix(build): 剔除误提交的 add_subdirectory(tools/volbench)(未跟踪目录,破坏干净构建) 2026-07-01 13:58:35 +08:00
gaozheng 48b8e582ef feat(vtk): 导航gizmo改业界轴球风(平涂盘+白字标签+负轴淡环+hover高亮+抗锯齿)
- 方向球 LightingOff 平涂实心盘(theta/phi=48),非高光3D球
- 柔和调色板 X(0.90,0.30,0.36)/Y(0.55,0.78,0.33)/Z(0.28,0.45,0.90)
- 正向球稍大+白色XYZ公告板字标(推到球前避遮挡),负向球同色×0.42更暗更小无字标(仍可拾取)
- 细轴线(1.8)连正向球、同色、不可拾取
- 新增 MouseMove hover 观察者(不abort):角落内拾取→提亮+就地放大1.18×,离开复原
- 整窗 MSAA(8x,有守卫) + 视口上抬避开沿线条 + parallelScale 按视口长宽比自适应不裁切
- CMake 增补 RenderingFreeType 供白字字形运行时渲染
2026-07-01 13:52:03 +08:00
gaozheng 8b32566351 feat(vtk): 列表单击已选中数据可取消选中(恢复全景轴)
在 CategorySection 段体树上安装 viewport 事件过滤器,于左键按下瞬间
(默认改选前) 记录被按行及其选中态;itemClicked(释放)时若该行按下前已选中
且本次未点勾选框,则 clearSelection() 直发 datasetSelected("") → 上层
恢复全景轴、丢贴合轴。点勾选框(切渲染)与容器行不触发取消。双击仍激活:
首击可能 toggle 掉选中,itemDoubleClicked 补回选中,终态=选中+贴合轴+详情。
不影响全列互斥(Fix A)、防环、右键菜单与切片/异常高亮。
2026-07-01 12:22:28 +08:00
gaozheng e1a10a1a73 fix(vtk): 导航gnomon重做为固定右下角叠加渲染器(无边框可点转视角+业界样式) 2026-07-01 11:52:31 +08:00
gaozheng 0e449e082d fix(vtk): 列表选中全局互斥+任意类型ds选中显子树贴合轴
- 解除 CategorySection itemSelectionChanged→datasetSelected 的 voxel-only 门控,
  各类型段(反演帘面/轨迹/三维体等)选中均发选中信号→显子树贴合坐标轴
- 新增 CategorySection::clearSelection()(QSignalBlocker 下清选,不回发信号)
- CategoryAnalysisTab 选中转发改为跨段互斥:某段选中非空则清其余各段选中,
  全列至多一个 ds 选中;inSelectionSync_ 兜底防重入
- 复用既有 applyFittedAxes/subtreeDsIds/datasetBounds,无平行路径
- voxel 切片/异常高亮、视口点选贴合轴对称、T3 gnomon 均未回归
2026-07-01 11:38:09 +08:00
gaozheng fcabf4c59f feat(vtk): 列表双击DS→适配到该DS空间范围+详情联动(无详情页静默)
决策6/T4:合并栏双击某 DS —
- 适配:复用 T2 subtreeDsIds + T1 datasetBounds/fitToBounds,相机适配到该
  ds 子树空间范围(与选中贴合轴同一子树盒);无盒(未渲染)则静默跳过。
- 详情联动:仅当该 ddCode 有已注册图表策略时开中下方 DatasetDetailPanel;
  三维体 dd_voxel/dd_radar_3d 等无详情页类型静默——gate 在联动入口
  (DatasetDetailController::supports),不走 openDataset→loadFailed 的状态栏提示。

双击语义与右键分离:新增 CategorySection::datasetActivated(双击=适配+图表联动),
右键「详情」仍发 detailRequested→属性弹窗(保留)。故三维体双击「只适配、静默」,
属性弹窗改由右键触发,符合验收#4。

加 T4 gate 契约单测(三维体/切片/异常 supports()=false,5 已注册类型=true)。
build.bat app 链接通过;build.bat test 474/474 绿。
2026-07-01 11:03:23 +08:00
gaozheng b1a8e02f6d feat(vtk): 角落可点击方向标gnomon→绕当前轴盒中心转到该轴(保缩放)
T3(spec 2026-07-01 §3.3/决策4·5):VtkSceneView 装配常驻右上角 gnomon
(vtkOrientationMarkerWidget + vtkAxesActor 三向箭头/轴标签,相机随主相机同步)。
组装体内加 6 个方向球(±X/±Y/±Z, vtkPropAssembly)作可点击热区;左键高优先级
(1.0)观察者在角落视口内做 vtkPropPicker 硬件拾取,命中球→orbitToCurrentPivot
(该方向)并 SetAbortFlag 消费(不触发相机旋转/场景拾取)。

orbitToCurrentPivot 封装决策5支点规则:有选中(useFittedAxes_)→子树盒
fittedBounds_ 中心,否则全场景 computeDataBounds 中心;无有效数据 no-op。
复用 T1 orbitToAxis/orbitPose(保当前缩放)。方向→ViewDir 对齐 CameraPreset:
+Z=Top −Z=Bottom +Y=Back −Y=Front +X=Right −X=Left。

ensureGnomon 幂等(交互器就绪后于构造/render/renderIncremental 补装一次);
析构摘除观察者、禁用 widget。CMakeLists 增 RenderingAnnotation(vtkAxesActor)
+ FiltersSources(vtkSphereSource)。build.bat app 链接干净,test 473/473 通过。
2026-07-01 10:45:38 +08:00
gaozheng f67913982d fix(vtk): 视口内点选切片/异常也显示子树贴合轴(与树选一致)
视口点选经 onSliceSelectionChanged→selectItem(QSignalBlocker下)压制 datasetSelected,
故 T2 贴合轴只在树选中出、视口点选缺失(仅取消方向已恢复全景轴)。抽 T2 树路解析序列为
共用 lambda applyFittedAxes(subtreeDsIds→datasetBounds→showFittedAxes),树路精简复用,
视口非空分支直接调用补齐(不解 blocker,保留防选择环);无盒则保持现状不强推全景轴。
2026-07-01 10:26:32 +08:00
gaozheng dd0205919d feat(vtk): 选中数据集→子树贴合坐标轴,隐全景轴;取消恢复
选中三维体/切片/异常 → 隐去全场景总览轴,显示覆盖「该体子树(体+切片+异常)」的一个贴合 cube axes;
取消选中(空选中/VTK 点空白)→ 恢复全场景轴。

- CategorySection::subtreeDsIds:归一到子树根(最高非容器祖先=三维体)再向下收集整棵子树 dsId;
  空选中改发 datasetSelected("","") 使取消经同一信号恢复全景轴。
- CategoryAnalysisTab::subtreeDsIds:段级转发,返首个命中段结果。
- VtkSceneView::showFittedAxes/showSceneAxes:useFittedAxes_+fittedBounds_ 两态;
  rebuildAxes 按态选子树盒/全场景盒(复用 AxesActor);clear 复位防残留旧盒。
- main.cpp:datasetSelected 接线(子树→datasetBounds→贴合/退回全景)+VTK 侧取消恢复。
2026-07-01 10:17:38 +08:00
gaozheng 8b85e1e514 feat(vtk): 相机/包围盒基元 datasetBounds/fitToBounds/orbitToAxis(+orbit数学单测)
- CameraPreset: 纯数学 orbitPose(ViewDir,pivot,distance)->CameraPose,
  方向偏移/up 约定复用 applyView(Top+Z/up+Y, Front-Y/up+Z, …),6 向 TDD 单测。
- VtkSceneView: datasetBounds(按 dsId 并集已渲染 actor 包围盒)、
  fitToBounds(保朝向 ResetCamera(b))、orbitToAxis(保当前缩放距离绕 pivot 转)。
- spec §3.1 T1 基元;不含贴合轴/gnomon/双击(T2/T3/T4)。
2026-07-01 10:02:08 +08:00
gaozheng d991faa1ee docs(vtk): 视图导航与坐标轴改进 spec(贴合轴/可点gnomon/双击适配+详情) 2026-07-01 09:53:20 +08:00
gaozheng 94d0ac9c3b feat(vtk): 2D 平面z值直接平移足迹+底图(去重渲染与防抖)
拖 z 值滑块时足迹与平面底图直接沿 Z 平移(改 actor position),取代
移除+异步重载足迹与底图销毁+重建 → 实时跟随、无闪烁。

- 足迹几何建于 Z=0,平面高程经 addMapLine SetPosition 施加;新增
  VtkSceneView::setMapLinesZ 直接平移足迹 actor(接口默认空实现)
- TileBasemap 瓦片几何仅留逐层级 z-fighting 偏移,平面高程经
  placeActor SetPosition(groundZ_)施加(LOD 新增瓦片同面);新增
  setGroundZ 重设所有已贴瓦片 position,无重下载/重建
- IPlaneBasemap 新增 setGroundZ,适配器转发;Plane2DRenderStrategy
  setPlaneZ 改为直接平移足迹+底图(创建/销毁生命周期不变)
- 移除 z 滑块 150ms 防抖(直接平移瞬时同步),底图透明度防抖保留

build.bat app 链接干净;build.bat test 467/467 通过
2026-07-01 09:10:04 +08:00
gaozheng a6ade4939f fix(core): GeoVolumeBuilder 外部文件打开走 localPath,支持中文路径
readHeaderFor() 的 .iprh 路径构造、totalTracesOf() 的 fs::file_size、
buildGeoVolume() 的 .ord ifstream,三处均改走 geopro::io::gpr::localPath,
与 io/gpr 层已修路径保持一致,消除含中文目录时打开失败的同类缺口。
parseGps / readIprbRange 已在各自实现层包裹,无需重包。
2026-07-01 08:22:31 +08:00
gaozheng 995c511240 fix(vtk): 沿线位置滑块改按实际雷达三维体存在门控,不再被细长非雷达数据误触发 2026-07-01 08:16:52 +08:00
gaozheng c0b6b31a9a fix(io/gpr): 雷达文件按宽字符打开,支持中文目录路径
规范化/Impulse 雷达 reader 的 std::ifstream 用 toLocal8Bit 产出的窄字节(GBK)路径
打开文件。GUI app 链接 QWebEngine(Chromium)/VTK,启动时 setlocale(LC_ALL,"") 把
LC_CTYPE 提升为系统 UTF-8 locale,此后 narrow ifstream 把 GBK 路径字节当 UTF-8 解析
→ 打不开 → "打开 .head 失败"。纯 "C" locale 的无头/单测环境用 CP_ACP=GBK 解窄路径,
不触发,故此前未暴露。

新增 io/gpr/LocalPath: Windows 用 MultiByteToWideChar(CP_ACP) 把本地 8 位字节解成
宽字符 std::filesystem::path,使 ifstream/ofstream/file_size 走宽字符打开,与 locale
无关;非 Windows 直接 UTF-8。改到所有外部导入路径 open 点(.head/.data/.iprb/.iprh/
.ord/.gps)。

回归测试 OpensCjkDirectoryPathUnderUtf8Locale: 显式置 .UTF-8 locale 复现 app 运行期
条件,走真实 buildLineVolumeFromNormalized 断言中文目录建体成功(退回 narrow 则抛错,
红/绿已验)。
2026-07-01 08:07:40 +08:00
gaozheng e9a9866c34 fix(vtk): 段头图标条实现sizeHint,修正被标题挤压致默认折叠
SectionIconBar 未实现 sizeHint/minimumSizeHint:段头 HBox(标题|stretch|图标条)
在 width()=0 构造期 relayout 折叠全部图标→内层布局尺寸塌缩成只剩「…」→恒折叠。
现实现 sizeHint(默认上限内全图标宽 count*iconPx)与 minimumSizeHint(仅「…」),
水平 Preferred/垂直 Fixed;标题改 Preferred+最小宽 0 先让位,使图标条守住宽度
直到列真正变窄才将右侧图标折进「…」。不改 visibleIconCount 逻辑与单测。
2026-07-01 07:43:49 +08:00
gaozheng dc4671e09e refactor(vtk): 清退2D拾取拖动死交互子系统 + 段图标上限钉为3 + 注释除锈
Fix 1 (死代码清退): E1 退役 per-ds 拖Z 2D 交互后, render/interact 层的另一半残留
接线为空。grep 确认零活调用方后, 移除整条 2D 交互通路:
- InteractionManager::setMode2D / pickStyle (decl+def, 唯一调用方 analysisModeChanged
  lambda 已删)
- PickInteractorStyle::lock2D_/setLock2D/isLock2D, onPick2D/onDrag2D/onDrag2DEnd/onWheel2D,
  worldPerPixelZ/kWheelStepPx/dragging2D_/lastDragY_ 及各事件处理器内的 lock2D_ 分支
仅删 2D 锁分支, 完整保留 3D 拾取/绕支点旋转/切片拖动/双击正视/滚轮推进/Esc 取消。

Fix 2 (spec §6): CategorySection 段头图标条上限由 setMaxIcons(acts.size()) 钉为
命名常量 kDefaultMaxIcons=3, 恢复计数溢出折叠分支(原恒=操作数→永不触发)。宽度挤压分支不动。

Fix 3 (注释除锈): 修正失真注释 —— categoryConfigs/CategorySpec → categoryCatalog()/
CategoryDescriptor; 删除 section("trajectory")返回 nullptr 的过期断言(C2 已构造该段);
VtkSceneController 注释引用已删的 gridCache_ → sectionGridCache_。
2026-07-01 00:43:58 +08:00
gaozheng e8df41b9f2 feat(vtk): Plane2D 策略持每类型平面矢量底图(多实例+生命周期+底图popup) 2026-07-01 00:21:45 +08:00
gaozheng 55085208bb refactor(vtk): TileBasemap groundZ 参数化支持多实例平面底图 2026-06-30 23:46:44 +08:00
gaozheng 15c30a5821 fix(vtk): 2D z值滑块发射防抖,避免拖动期异步重摆失步 2026-06-30 23:41:43 +08:00
gaozheng 352e60d37b feat(vtk): 2D 段 z值滑块整体升降类型平面 2026-06-30 23:33:07 +08:00
gaozheng 989158427e feat(vtk): Plane2D 策略装入平面 z 生命周期(首勾定z/全消消失)+单元测试 2026-06-30 23:21:38 +08:00
gaozheng 24b53f5e0c refactor(vtk): 删维度相机/显隐耦合与逐ds拖Z(单一自由场景) 2026-06-30 23:09:58 +08:00
gaozheng ef56529d8c feat(vtk): 3D 底图控件移渲染区工具栏(天地图/无+透明度滑块) 2026-06-30 22:54:31 +08:00
gaozheng aea5b6b8cb refactor(vtk): TileBasemap 透明度参数化(默认0.5)备多实例与可调 2026-06-30 22:46:00 +08:00
gaozheng 1029bf5037 feat(vtk): 导入雷达入口移到顶部设备菜单(临时测试功能集中化) 2026-06-30 22:41:54 +08:00
gaozheng 11d7dd53b9 feat(vtk): 段构造迁描述符;段头图标条由operations/filters驱动+筛选折叠 2026-06-30 22:32:33 +08:00
gaozheng b0da3c12fb feat(vtk): 段头响应式图标工具条 SectionIconBar(溢出折叠+单元测试) 2026-06-30 22:18:26 +08:00
gaozheng e970ab428e refactor(vtk): 移除退役的 Column2DDataset(并入统一单列) 2026-06-30 22:03:10 +08:00
gaozheng 70f847058d refactor(vtk): 抽屉去tab单列; 勾选经描述符路由渲染策略(统一入口,无维度散判)
- ColumnDrawer 去 QTabWidget/Column2DDataset/analysisModeChanged, body 直持 CategoryAnalysisTab 单列
- VtkSceneController: 统一入口 setCheckedDatasets((dsId,typeId)) 经 catalog.renderStrategyId 派 3 策略
  add/remove, 维护每 typeId 活跃计数 onTypeActivated/Deactivated; checkedDs_/checked2dDs_ 合并为 checked_
- 3 策略持控制器友元引用, 委托回 addDatasetAsync/add2DDatasetAsync/view.removeDataset
- main: pushChecked 解析 dsId→typeId 下发统一入口; 删 col2D 全部接线; 2D 轨迹经 trajectory 段并入单列
- rebuildInternal 据 checked_ 经策略重放(主题/VE/坐标轴重建不丢数据)
- 控制器单测迁移至统一 API (18/18 通过)
2026-06-30 21:56:37 +08:00
gaozheng 286054720e feat(vtk): 数据集单栏 段按数据动态显隐 + 全空占位提示 2026-06-30 21:22:41 +08:00
gaozheng 72b5f6f25f feat(vtk): 渲染策略接口+字符串键注册表+3骨架策略(volume/curtain/plane2d) 2026-06-30 21:14:12 +08:00
gaozheng 8f7da3657a feat(vtk): 类目描述符目录 categoryCatalog(classify谓词+扩展契约)取代 categoryConfigs
splitByCategory 改遍历 catalog 用 classify 路由(首个 classify==true 入段);新增 5 段含 trajectory。旧 CategoryConfig/categoryConfigs 暂保留供 CategoryAnalysisTab/CategorySection。同步修正 test_dataset_category 旧断言(段数随 catalog=5)。
2026-06-30 21:05:15 +08:00
gaozheng 7d9f34d3ec docs(vtk): plan 重构对齐类型抽象(描述符目录+渲染策略注册表)
Phase A 改为 A1 描述符目录 categoryCatalog(classify谓词+扩展契约) +
A2 渲染策略接口/字符串键注册表/3骨架策略;勾选经描述符路由策略统一入口(无维度散判);
段头图标由 operations(OpKind)/filters(FilterKind) 驱动;平面z(PlaneZRegistry)与
N个平面底图收进 Plane2DRenderStrategy;加新不删旧过渡(Phase F 删旧分类件)。
2026-06-30 20:50:35 +08:00
gaozheng 3b90b7de6a docs(vtk): spec 加类型抽象层(描述符+渲染策略注册表+扩展契约)
§5 重写为 CategoryDescriptor/categoryCatalog + FilterKind/OpKind/SceneKind +
IDatasetRenderStrategy 字符串键注册表;classify 用谓词+byDdCode/byDsTypeCode 便捷器;
消费方(段/列/控制器)只认抽象不再散判;接入新类型=加描述符(必要时补策略/操作/筛选器);
§3/§6/§7/§8/§9/§11/§12 同步改为描述符+策略驱动并加可扩展性验收。
2026-06-30 20:35:08 +08:00
gaozheng dba1b32a43 docs(vtk): 合并数据集单栏重构 实现计划(6阶段13任务)
A 段配置加维度+trajectory分流;B 单列骨架(动态显隐+空占位+去tab);
C 响应式图标条+筛选折叠;D 导入雷达移设备菜单+3D底图移渲染工具栏;
E 单一自由场景+2D按类型平面z;F 2D平面底图(TileBasemap多实例)。
纯逻辑TDD(段分流/图标溢出/平面z生命周期),UI走build.bat+手动验收。
2026-06-30 20:20:35 +08:00
gaozheng ac50aaa51e docs(vtk): 修订重构 spec(平面生命周期/废弃逐ds拖z/…溢出/底图选型)
§8.2 平面生命周期:首勾建平面定z(之后固定),全消则平面+底图一并销毁;
§11 逐ds独立拖Z(nudgeSelectedMapLinesZ/mapLineZOffset_)废弃移除;
§6 图标「…」溢出:宽度挤压分支必须工作可验证;
§9.2 选型定为参数化 TileBasemap 多实例(groundZ/opacity/Street纯平),1个3D+N个2D。
2026-06-30 20:13:38 +08:00
gaozheng bc79530456 docs(vtk): 合并数据集单栏重构 spec(动态段+图标工具条+2D平面底图)
单列无标题数据集栏:2D/3D 同列分段、按数据动态显隐、段操作改响应式
图标工具条、2D 按类型一块平面 + N 个平面底图、3D 底图移渲染区工具栏、
导入雷达移顶部设备菜单、废弃 view2DMode/锁定俯视相机,单一自由场景共存。
2026-06-30 20:07:52 +08:00
gaozheng 30bdadd234 Merge pull request 'feat/3d-radar-volume-ingest' (#9) from feat/3d-radar-volume-ingest into main
Reviewed-on: https://gitea.geomative.cn/gaozheng/geopro/pulls/9
2026-06-30 19:14:55 +08:00
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