feat/vtk-3d-view #7

Merged
gaozheng merged 301 commits from feat/vtk-3d-view into main 2026-06-27 18:43:52 +08:00
1 changed files with 6 additions and 7 deletions
Showing only changes of commit 5c412eedfa - Show all commits

View File

@ -36,7 +36,7 @@
--- ---
## OPT-002 · 多三维体并发的切片渲染 ## OPT-002 · 多三维体并发的切片渲染
- **状态**:🟢 Doneissue2/③/反向②commit `69e8790`);④ 切片拾取串选仍 🔴 Open见下 - **状态**:🟢 Doneissue2/③/反向② `69e8790`;④ 拾取串选 `63cda56`,体 PickableOff逻辑修复待 live 复核
- **记录日期**2026-06-25 - **记录日期**2026-06-25
- **背景/现状**:切片渲染绑定单一「当前体」——`syncSlices` 只显示 `sp.volumeDsId == currentVolumeDsId()` - **背景/现状**:切片渲染绑定单一「当前体」——`syncSlices` 只显示 `sp.volumeDsId == currentVolumeDsId()`
的切片,`currentVolumeDsId` = 最后添加的体(`VtkSceneView::volumeOwnerDs_`)。勾选第二个三维体后它 的切片,`currentVolumeDsId` = 最后添加的体(`VtkSceneView::volumeOwnerDs_`)。勾选第二个三维体后它
@ -50,9 +50,8 @@
- **同簇问题(一并改造)** - **同簇问题(一并改造)**
- **③ 右键体却把切片建到 current 体**:右键三维体 A「生成切片」时仍用 `currentVolumeDsId()`=最后渲染的 - **③ 右键体却把切片建到 current 体**:右键三维体 A「生成切片」时仍用 `currentVolumeDsId()`=最后渲染的
体)创建切片。需把目标体 dsId 随右键带下来,并让 addSlice 用 A 的 image依赖多体 image 管理)。 体)创建切片。需把目标体 dsId 随右键带下来,并让 addSlice 用 A 的 image依赖多体 image 管理)。
- **④ 切片拾取串选(仍 Open**:点任意切片却选中上下切片。根因是重叠切片下 VTK 的事件路由「最前 - **④ 切片拾取串选**:已修(`63cda56`)。根因=点击落体内部时 picker 命中体、worldPoint 落体内 →
平面优先」+ `nearestSlice` 启发式:多张切片在屏幕投影重叠时,最前/最近的那张被选中。 `nearestSlice` 按平面距离选错切片。修法=体 actor `PickableOff`,光标拾取只落切片平面 → worldPoint
`vtkImagePlaneWidget`(VTK9.6) 不暴露 texture-plane actorpick-list 精确化方案已试→回退。 落在光标下那张切片 → 选对(`onPick` 仅命中时触发,未命中不误选)。重叠切片仍按最前优先(合理)。
**须在可交互点击的运行环境里实地调试**(点击重叠的 3D 切片才能验证),盲改会破坏现有可用的选择。 逻辑闭合但**未 live 点击验证**(工具无法交互点击 3D 切片);若仍有偏差需 live 复核(重叠循环切换等)。
候选方案:自管切片 actor 做精确 pick / 重叠时让用户循环切换 / 调 widget 优先级。 - **更新**2026-06-25 issue2+③+反向²(`69e8790`)+④(`63cda56`) 全部实现。
- **更新**2026-06-25 issue2+③+反向② 已实现(`69e8790`);④ 留待能 live 调试的会话单独做。