3.0 KiB
3.0 KiB
实现方案-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
技术路线
- 新增统一空间指标计算:
- 从 DICOM
physicalSize.width/height和spacing.slice推导物理深度。 - 复用左侧三维融合视图
baseExtent=4.6的归一化策略。 - 计算
dicomWidth/dicomHeight/dicomDepth、当前 slice 对应 Z 坐标、STL bounds 中心和modelBaseScale。 - 左侧三维视图也改为使用全部 STL bounds 作为全局模型尺度,隐藏构件只影响渲染,不再改变全局比例。
- 从 DICOM
- 修改右侧 STL 顶点变换:
- 按左侧三维层级顺序复现
modelPivot和modelPoseGroup。 - 使用
modelBaseScale * pose.scale、旋转、平移和 pivot Z 偏移。
- 按左侧三维层级顺序复现
- 修改右侧画布坐标映射:
x映射到[-dicomWidth/2, dicomWidth/2]。y映射到[-dicomHeight/2, dicomHeight/2]。- 画布宽高仍为 DICOM preview 像素,物理 FOV 与 Base Layer 完全一致。
- 提升 Overlay 数据精度:
- 右侧 STL preview 请求改为
200000上限,尽量使用完整网格。 - 继续逐三角面执行 Mesh-Plane Intersection,得到截面线段。
- 右侧 STL preview 请求改为
- 强化实体填充:
- 扫描线收集截面线段交点并进行内部填充。
- 对填充结果做边界外 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。