4.3 KiB
4.3 KiB
待优化清单(Optimization Backlog)
全局「待优化 / 技术债 / 性能与体验改进」登记簿。所有后续发现但当下不做(或暂以折中实现)的优化点 都登记到此,并随进展更新状态。区别于 bug(bug 当场修,见 CLAUDE.md 技术债规则)——这里收录的是 「能用但不够理想、需要更大改造才能做到位」的优化项。
状态图例
- 🔴 Open — 待优化,尚未动工
- 🟡 In Progress — 正在做
- 🟢 Done — 已完成(保留记录,标注完成 commit/日期)
- ⚪ Won't Do — 评估后决定不做(标注原因)
维护约定
- 新增项用递增 ID(OPT-NNN),不复用已删 ID。
- 每项含:背景/现状、期望、难点、状态、记录日期、关联 commit。
- 状态变更时更新「状态」行与「更新」行,不删历史。
OPT-001 · 放大系数(VE) 完全无重绘的即时缩放
- 状态:🔴 Open
- 记录日期:2026-06-25
- 背景/现状:
VtkSceneController::setVerticalExaggeration当前走「保留相机重建」(commit7ff6f18)—— 改 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 同步是否也能免重载需评估。
- 体素须改为「image 建在 VE=1、vtkVolume prop 用
- 关联:
7ff6f18(当前保留相机的折中实现)。 - 更新:—
OPT-002 · 多三维体并发的切片渲染
- 状态:🟢 Done(issue2/③/反向②
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/onVolumeChanged(
src/app/main.cpp)、VtkSceneView::currentVolumeImage_。 - 同簇问题(一并改造):
- ③ 右键体却把切片建到 current 体:右键三维体 A「生成切片」时仍用
currentVolumeDsId()(=最后渲染的 体)创建切片。需把目标体 dsId 随右键带下来,并让 addSlice 用 A 的 image(依赖多体 image 管理)。 - ④ 切片拾取串选:已修(
63cda56)。根因=点击落体内部时 picker 命中体、worldPoint 落体内 →nearestSlice按平面距离选错切片。修法=体 actorPickableOff,光标拾取只落切片平面 → worldPoint 落在光标下那张切片 → 选对(onPick仅命中时触发,未命中不误选)。重叠切片仍按最前优先(合理)。 逻辑闭合但未 live 点击验证(工具无法交互点击 3D 切片);若仍有偏差需 live 复核(重叠循环切换等)。
- ③ 右键体却把切片建到 current 体:右键三维体 A「生成切片」时仍用
- 更新:2026-06-25 issue2+③+反向²(
69e8790)+④(63cda56) 全部实现。