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

3.0 KiB
Raw Permalink Blame History

实现方案-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/heightspacing.slice 推导物理深度。
    • 复用左侧三维融合视图 baseExtent=4.6 的归一化策略。
    • 计算 dicomWidth/dicomHeight/dicomDepth、当前 slice 对应 Z 坐标、STL bounds 中心和 modelBaseScale
    • 左侧三维视图也改为使用全部 STL bounds 作为全局模型尺度,隐藏构件只影响渲染,不再改变全局比例。
  2. 修改右侧 STL 顶点变换:
    • 按左侧三维层级顺序复现 modelPivotmodelPoseGroup
    • 使用 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 lintnpm 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