2026-05-19-23-47-31 优化逆向分割映射视图

This commit is contained in:
2026-05-19 23:56:24 +08:00
parent f730a1c48b
commit 2e04e2d5f9
6 changed files with 671 additions and 10 deletions

View File

@@ -0,0 +1,57 @@
# 实现方案-2026-05-19-23-47-31
## 实现方案文档路径
`工程分析/实现方案-2026-05-19-23-47-31.md`
## 修改目标
将逆向工作区右侧 `Mask 展示` 改造成二维多图层“逆向分割映射视图”,实现 DICOM Base Layer、STL 逆向投影 Overlay Label Map、构件层级属性联动和独立 Slice Navigator。
## 涉及路径
- `WebSite/src/components/ReverseWorkspace.tsx`
- `WebSite/src/index.css`
- `工程分析/需求分析-2026-05-19-23-47-31.md`
- `工程分析/实现方案-2026-05-19-23-47-31.md`
- `工程分析/测试方案-2026-05-19-23-47-31.md`
- `工程分析/经验记录.md`
## 技术路线
1.`ReverseWorkspace.tsx` 中新增独立 `mappingSlice` 状态。
2. 将右侧 `CutSectionPreview` 替换为 `VoxelizationMappingView`
3. `VoxelizationMappingView` 使用两个叠放 Canvas
- Base Canvas 绘制 `api.getDicomPreview(project.id, mappingSlice, 'axial', 'soft')` 返回的 DICOM 灰度像素。
- Overlay Canvas 根据 STL preview 顶点、当前切片 Z 位置和 `moduleStyles` 生成 Label Map 投影。
4. Overlay 绘制规则:
- 对每个可见 STL 构件读取颜色、透明度、`partId`
- 将 STL 顶点 bounds 归一化映射到 DICOM canvas。
- 只绘制与当前 Z 切片带宽相交的三角面。
- 隐藏构件不绘制,透明度随构件层级滑条变化。
5. 在右侧视图底部添加专属 Slice Navigator
- 独立范围为 `0 ~ project.dicomCount - 1`
- 支持拖动和左右单步按钮。
- 不修改左侧 DICOM 范围,也不影响三维融合切分状态。
6. 保留 NII/NII.GZ 导出按钮。
7. 为新滑条补充稳定尺寸和样式,避免 UI 抖动。
## 兼容性与回滚方案
- 不修改后端接口和数据结构,回滚时只需恢复 `ReverseWorkspace.tsx``index.css`
- 如果 STL preview 加载失败,右侧仍显示 DICOM Base Layer并显示 Overlay 状态提示。
- 如果 DICOM preview 加载失败,显示加载或错误状态,不影响左侧三维融合视图。
## 预计文件变更
- 更新 `ReverseWorkspace.tsx`:新增二维映射视图、独立切片状态、右侧标题与图层联动。
- 更新 `index.css`:新增独立 Slice Navigator 滑条样式。
- 新增本次三份工程文档。
- 更新 `经验记录.md`
## 提交与部署策略
- 仅暂存本次代码和文档文件。
- 提交信息使用:`2026-05-19-23-47-31 优化逆向分割映射视图`
- 运行 `npm run lint``npm run build`
- 重新部署 `tmux` 会话 `revoxelseg-dicom`,验证 `http://127.0.0.1:4000/api/health` 和首页响应。