# 实现方案-2026-05-20-00-38-39 ## 实现方案文档路径 `工程分析/实现方案-2026-05-20-00-38-39.md` ## 修改目标 将右侧“逆向分割映射视图”的坐标映射改为与左侧“三维融合视图”同源的 DICOM 物理 FOV,并强化 STL Mesh-Plane Intersection 与实体填充,减少尺度错位和截面漏隙。 ## 涉及路径 - `WebSite/src/components/ReverseWorkspace.tsx` - `工程分析/需求分析-2026-05-20-00-38-39.md` - `工程分析/实现方案-2026-05-20-00-38-39.md` - `工程分析/测试方案-2026-05-20-00-38-39.md` - `工程分析/经验记录.md` ## 技术路线 1. 新增统一空间指标计算: - 从 DICOM `physicalSize.width/height` 和 `spacing.slice` 推导物理深度。 - 复用左侧三维融合视图 `baseExtent=4.6` 的归一化策略。 - 计算 `dicomWidth/dicomHeight/dicomDepth`、当前 slice 对应 Z 坐标、STL bounds 中心和 `modelBaseScale`。 - 左侧三维视图也改为使用全部 STL bounds 作为全局模型尺度,隐藏构件只影响渲染,不再改变全局比例。 2. 修改右侧 STL 顶点变换: - 按左侧三维层级顺序复现 `modelPivot` 和 `modelPoseGroup`。 - 使用 `modelBaseScale * pose.scale`、旋转、平移和 pivot Z 偏移。 3. 修改右侧画布坐标映射: - `x` 映射到 `[-dicomWidth/2, dicomWidth/2]`。 - `y` 映射到 `[-dicomHeight/2, dicomHeight/2]`。 - 画布宽高仍为 DICOM preview 像素,物理 FOV 与 Base Layer 完全一致。 4. 提升 Overlay 数据精度: - 右侧 STL preview 请求改为 `200000` 上限,尽量使用完整网格。 - 继续逐三角面执行 Mesh-Plane Intersection,得到截面线段。 5. 强化实体填充: - 扫描线收集截面线段交点并进行内部填充。 - 对填充结果做边界外 flood fill,自动补齐内部未填孔洞。 - 使用离屏 canvas 合成每个构件,避免多构件透明区域互相擦除。 ## 执行步骤 - 更新右侧空间指标、位姿变换和点到画布映射函数。 - 更新左侧三维视图的模型 bounds 计算,保证构件显隐不改变全局 FOV。 - 更新 STL preview 请求 limit。 - 更新实体填充函数,加入内部孔洞填充。 - 执行 `npm run lint` 和 `npm run build`。 - 重新部署并验证服务。 - 追加经验记录并提交推送。 ## 兼容性与回滚方案 - 不改变外部 API 和状态结构。 - 若新 FOV 映射异常,可回退到上一版 `drawVoxelOverlayLayer` 的归一化映射。 - 若最大 STL preview 请求导致性能压力,可降低右侧独立请求 limit,但保留同源 FOV 计算。 ## 预计文件变更 - `ReverseWorkspace.tsx`:更新 FOV 坐标、模型变换、填充算法和请求精度。 - 新增本次三份工程文档。 - 更新 `经验记录.md`。 ## 提交与部署策略 - 提交信息:`2026-05-20-00-38-39 对齐FOV并强化网格截面填充` - 显式暂存本次相关文件,避免提交历史删除状态。 - 使用 Gitea origin/main 备份并重新部署 `revoxelseg-dicom`。