# 实现方案-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 临时凭据方式推送。