geopro/docs/OPTIMIZATION-BACKLOG.md

4.3 KiB
Raw Blame History

待优化清单Optimization Backlog

全局「待优化 / 技术债 / 性能与体验改进」登记簿。所有后续发现但当下不做(或暂以折中实现)的优化点 都登记到此,并随进展更新状态。区别于 bugbug 当场修,见 CLAUDE.md 技术债规则)——这里收录的是 「能用但不够理想、需要更大改造才能做到位」的优化项。

状态图例

  • 🔴 Open — 待优化,尚未动工
  • 🟡 In Progress — 正在做
  • 🟢 Done — 已完成(保留记录,标注完成 commit/日期)
  • Won't Do — 评估后决定不做(标注原因)

维护约定

  • 新增项用递增 IDOPT-NNN不复用已删 ID。
  • 每项含:背景/现状、期望、难点、状态、记录日期、关联 commit。
  • 状态变更时更新「状态」行与「更新」行,不删历史。

OPT-001 · 放大系数(VE) 完全无重绘的即时缩放

  • 状态🔴 Open
  • 记录日期2026-06-25
  • 背景/现状VtkSceneController::setVerticalExaggeration 当前走「保留相机重建」commit 7ff6f18)—— 改 VE 时相机不再跳远视角、原地按新夸张重绘,但数据/底图仍会重建并重绘一次(有一次闪烁)。 根因VE 被烤进几何——帘面用 actor->SetScale(1,1,VE)、体素把 VE 烤进 image 的 z origin/spacing、 地形烤进 buildTerrain;且切片附着依赖含 VE 的 currentVolumeImage_
  • 期望:拖动放大系数时纯 actor 层 Z 缩放,零重载零重绘、即时跟手(理想可恢复拖动实时预览)。
  • 难点
    • 体素须改为「image 建在 VE=1、vtkVolume prop 用 SetScale(1,1,VE)」,但切片重采样依赖含 VE 的 image 几何,需同步改造切片附着/重采样链InteractionManager
    • 地形/帘面/体素三类 actor 的 VE 应统一走 actor 变换,避免混用(部分烤几何、部分 actor 缩放)。
    • 底图(TileBasemap) VE 同步是否也能免重载需评估。
  • 关联7ff6f18(当前保留相机的折中实现)。
  • 更新:—

OPT-002 · 多三维体并发的切片渲染

  • 状态🟢 Doneissue2/③/反向② 69e8790;④ 拾取串选 63cda56,体 PickableOff逻辑修复待 live 复核)
  • 记录日期2026-06-25
  • 背景/现状:切片渲染绑定单一「当前体」——syncSlices 只显示 sp.volumeDsId == currentVolumeDsId() 的切片,currentVolumeDsId = 最后添加的体(VtkSceneView::volumeOwnerDs_)。勾选第二个三维体后它 成为 current第一个体的切片被 syncSlices 隐藏(用户 issue2选第二个体时第一个体的切片消失。 根因:InteractionManager 把切片附着到单个 currentVolumeImage_,不支持同时挂多个体的 image。
  • 期望:多个体同时渲染时,各自的已勾选切片都能并存显示(按各切片的 volumeDsId 取对应体 image 重采样)。
  • 难点InteractionManager 的切片附着/重采样改为「按 volumeDsId 多体管理」;VtkSceneView 需暴露 多个体的 image非单 currentVolumeImage_);切片拾取/选中也要按所属体区分。与 OPT 无关的切片右键 「保存/导出」依赖 selectedSlice 当前体,也需一并核对。
  • 关联syncSlices/onVolumeChangedsrc/app/main.cpp)、VtkSceneView::currentVolumeImage_
  • 同簇问题(一并改造)
    • ③ 右键体却把切片建到 current 体:右键三维体 A「生成切片」时仍用 currentVolumeDsId()=最后渲染的 体)创建切片。需把目标体 dsId 随右键带下来,并让 addSlice 用 A 的 image依赖多体 image 管理)。
    • ④ 切片拾取串选:已修(63cda56)。根因=点击落体内部时 picker 命中体、worldPoint 落体内 → nearestSlice 按平面距离选错切片。修法=体 actor PickableOff,光标拾取只落切片平面 → worldPoint 落在光标下那张切片 → 选对(onPick 仅命中时触发,未命中不误选)。重叠切片仍按最前优先(合理)。 逻辑闭合但未 live 点击验证(工具无法交互点击 3D 切片);若仍有偏差需 live 复核(重叠循环切换等)。
  • 更新2026-06-25 issue2+③+反向²(69e8790)+④(63cda56) 全部实现。