51 lines
3.3 KiB
Markdown
51 lines
3.3 KiB
Markdown
# 待优化清单(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` 当前走「保留相机重建」(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 · 多三维体并发的切片渲染
|
||
- **状态**:🔴 Open
|
||
- **记录日期**: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_`。
|
||
- **更新**:—
|