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

2.4 KiB
Raw Permalink Blame History

实现方案-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 lintnpm run build
  • 重新部署 tmux 会话 revoxelseg-dicom
  • 提交信息:2026-05-20-00-19-47 同步位姿并填充实体映射
  • 使用已验证的 Gitea 临时凭据方式推送。