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

55 lines
2.4 KiB
Markdown
Raw 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-20-00-19-47
## 实现方案文档路径
`工程分析/实现方案-2026-05-20-00-19-47.md`
## 修改目标
让右侧“逆向分割映射视图”的 Overlay Label Map 实时响应中部模型位姿,并将渲染形态从表面三角面投影升级为闭合实体 Mask 区域填充。
## 涉及路径
- `WebSite/src/components/ReverseWorkspace.tsx`
- `工程分析/需求分析-2026-05-20-00-19-47.md`
- `工程分析/实现方案-2026-05-20-00-19-47.md`
- `工程分析/测试方案-2026-05-20-00-19-47.md`
- `工程分析/经验记录.md`
## 技术路线
1.`VoxelizationMappingView` 新增 `modelPose` 入参,父组件直接传入中部工具栏当前位姿。
2. 新增浏览器端刚性变换函数:
- 以全局 STL bounds 中心归一化顶点。
-`scale -> rotateX -> rotateY -> rotateZ -> translate` 顺序变换。
- 将变换后坐标映射到固定 DICOM Overlay 画布坐标系。
3. 将原先“靠近切片的三角面填充”改为“切片平面求交”:
- 对每个三角面与当前 Z 平面求交。
- 收集切面边界线段。
4. 将边界线段按扫描线射线法光栅化为实心 Mask
- 逐行收集边界线段与水平扫描线的交点。
- 采用奇偶配对填充闭合区域内部像素。
- 按构件颜色与透明度写入 Overlay ImageData并通过离屏画布合成避免多构件互相覆盖。
5. 对边界不完全闭合的极少数抽样场景,使用端点多边形保底填充,避免完全空白。
6. 使用 `requestAnimationFrame` 合并高频位姿变化,做到位姿滑条拖动时实时刷新。
7. 更新右侧状态文案,显示实心 Mask 像素数量和参与构件数量。
## 兼容性与回滚方案
- 不修改后端 API不影响 DICOM preview、STL preview 和导出接口。
- 如果新填充算法异常,可回退到上一版 `drawVoxelOverlayLayer`
- 如果某个构件没有形成闭合区域,只影响该构件 Overlay不影响 Base Layer 和其他构件。
## 预计文件变更
- `ReverseWorkspace.tsx`新增位姿变换、切面求交、Mask flood fill、Overlay rAF 重绘。
- 新增本次三份工程文档。
- 更新 `经验记录.md`
## 提交与部署策略
- 执行 `npm run lint``npm run build`
- 重新部署 `tmux` 会话 `revoxelseg-dicom`
- 提交信息:`2026-05-20-00-19-47 同步位姿并填充实体映射`
- 使用已验证的 Gitea 临时凭据方式推送。