Files
REVOXELSEG_DICOM/工程分析/实现方案-2026-05-19-23-47-31.md

58 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 实现方案-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` 和首页响应。